Skip to content

Commit a59ae10

Browse files
committed
Changes to enable the Domain on PV simplification feature.
1 parent fe14998 commit a59ae10

File tree

4 files changed

+600
-3
lines changed

4 files changed

+600
-3
lines changed

documentation/domains/Domain.json

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,10 @@
176176
"Configuration": {
177177
"type": "object",
178178
"properties": {
179+
"initializeDomainOnPV": {
180+
"description": "Configuration to initialize a WebLogic Domain on persistent volume (`Domain on PV`) and initialize related resources such as a persistent volume and a persistent volume claim. If specified, the operator will perform these one-time initialization steps only if the domain and resources do not already exist. The operator will not recreate or update the domain and resources when they already exist. For more information, see https://oracle.github.io/weblogic-kubernetes-operator/managing-domains/choosing-a-model/ and https://oracle.github.io/weblogic-kubernetes-operator/managing-domains/domain-on-pv-initialization ",
181+
"$ref": "#/definitions/InitializeDomainOnPV"
182+
},
179183
"overrideDistributionStrategy": {
180184
"default": "Dynamic",
181185
"description": "Determines how updated configuration overrides are distributed to already running WebLogic Server instances following introspection when the `domainHomeSourceType` is PersistentVolume or Image. Configuration overrides are generated during introspection from Secrets, the `overridesConfigMap` field, and WebLogic domain topology. Legal values are `Dynamic`, which means that the operator will distribute updated configuration overrides dynamically to running servers, and `OnRestart`, which means that servers will use updated configuration overrides only after the server\u0027s next restart. The selection of `OnRestart` will not cause servers to restart when there are updated configuration overrides available. See also `domains.spec.introspectVersion`. Defaults to `Dynamic`.",
@@ -270,6 +274,65 @@
270274
"status"
271275
]
272276
},
277+
"DomainCreationImage": {
278+
"type": "object",
279+
"properties": {
280+
"sourceWDTInstallHome": {
281+
"description": "The source location of the WebLogic Deploy Tooling installation within the domain creation image. Defaults to `/auxiliary/weblogic-deploy`. If the value is set to `None` or no files are found at the default location, then the source directory is ignored. When specifying multiple domain images, ensure that only one of the images supplies a WDT install home; if more than one WDT install home is provided, then the domain deployment will fail.",
282+
"type": "string"
283+
},
284+
"image": {
285+
"description": "The domain creation image containing model files, application archive files, and/or WebLogic Deploying Tooling installation files to create the domain in persistent volume. Required.",
286+
"type": "string"
287+
},
288+
"imagePullPolicy": {
289+
"description": "The image pull policy for the container image. Legal values are Always, Never, and IfNotPresent. Defaults to Always if image ends in :latest; IfNotPresent, otherwise.",
290+
"type": "string"
291+
},
292+
"sourceModelHome": {
293+
"description": "The source location of the WebLogic Deploy Tooling model home within the domain image. Defaults to `/auxiliary/models`. If the value is set to `None` or no files are found at the default location, then the source directory is ignored. If specifying multiple domain images with model files in their respective `sourceModelHome` directories, then model files are merged.",
294+
"type": "string"
295+
}
296+
}
297+
},
298+
"DomainOnPV": {
299+
"type": "object",
300+
"properties": {
301+
"domainCreationConfigMap": {
302+
"description": "Name of a ConfigMap containing the WebLogic Deploy Tooling model.",
303+
"type": "string"
304+
},
305+
"domainCreationImages": {
306+
"description": "Domain creation images containing WebLogic Deploy Tooling model, application archive, and WebLogic Deploy Tooling installation files. These files will be used to create the domain during introspection. This feature internally uses a Kubernetes emptyDir volume and Kubernetes init containers to share the files from the additional images ",
307+
"type": "array",
308+
"items": {
309+
"$ref": "#/definitions/DomainCreationImage"
310+
}
311+
},
312+
"domainType": {
313+
"default": "JRF",
314+
"description": "WebLogic Deploy Tooling domain type. Legal values: WLS, JRF. Defaults to JRF.",
315+
"type": "string",
316+
"enum": [
317+
"WLS",
318+
"JRF"
319+
]
320+
},
321+
"opss": {
322+
"description": "Settings for OPSS security.",
323+
"$ref": "#/definitions/Opss"
324+
},
325+
"createIfNotExists": {
326+
"default": "domain",
327+
"description": "Specifies if the operator should create only the domain or the domain with RCU (for JRF-based domains). Legal values: domain, domainAndRCU. Defaults to domain.",
328+
"type": "string",
329+
"enum": [
330+
"domain",
331+
"domainAndRCU"
332+
]
333+
}
334+
}
335+
},
273336
"DomainSpec": {
274337
"description": "The specification of the operation of the WebLogic domain. Required.",
275338
"type": "object",
@@ -568,6 +631,27 @@
568631
}
569632
}
570633
},
634+
"InitializeDomainOnPV": {
635+
"type": "object",
636+
"properties": {
637+
"waitForPvcToBind": {
638+
"description": "Specifies whether the operator will wait for the PersistentVolumeClaim to be bound before proceeding with the domain creation. Defaults to true.",
639+
"type": "boolean"
640+
},
641+
"persistentVolume": {
642+
"description": "An optional field that describes the configuration to create a PersistentVolume for `Domain on PV` domain. Omit this section if you have manually created a persistent volume. The operator will perform this one-time create operation only if the persistent volume does not already exist. The operator will not recreate or update the PersistentVolume when it exists. More info: https://oracle.github.io/weblogic-kubernetes-operator/managing-domains/domain-on-pv-initialization#pv",
643+
"$ref": "#/definitions/PersistentVolume"
644+
},
645+
"domain": {
646+
"description": "Describes the configuration for creating an initial WebLogic Domain in persistent volume (`Domain in PV`). The operator will not recreate or update the domain if it already exists. Required.",
647+
"$ref": "#/definitions/DomainOnPV"
648+
},
649+
"persistentVolumeClaim": {
650+
"description": "An optional field that describes the configuration for creating a PersistentVolumeClaim for `Domain on PV`. PersistentVolumeClaim is a user\u0027s request for and claim to a persistent volume. The operator will perform this one-time create operation only if the persistent volume claim does not already exist. Omit this section if you have manually created a persistent volume claim. If specified, the name must match one of the volumes under `serverPod.volumes` and the domain home must reside in the mount path of the volume using this claim. More info: https://oracle.github.io/weblogic-kubernetes-operator/managing-domains/domain-on-pv-initialization#pvc",
651+
"$ref": "#/definitions/PersistentVolumeClaim"
652+
}
653+
}
654+
},
571655
"Introspector": {
572656
"type": "object",
573657
"properties": {
@@ -747,6 +831,78 @@
747831
}
748832
}
749833
},
834+
"PersistentVolume": {
835+
"type": "object",
836+
"properties": {
837+
"metadata": {
838+
"description": "The PersistentVolume metadata. Must include the `name` field. Required.",
839+
"$ref": "https://github.com/garethr/kubernetes-json-schema/blob/master/v1.13.5/_definitions.json#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"
840+
},
841+
"spec": {
842+
"description": "The specification of a persistent volume for `Domain on PV` domain. Required. This section provides a subset of fields in standard Kubernetes PersistentVolume specifications.",
843+
"$ref": "#/definitions/PersistentVolumeSpec"
844+
}
845+
}
846+
},
847+
"PersistentVolumeClaim": {
848+
"type": "object",
849+
"properties": {
850+
"metadata": {
851+
"description": "The PersistentVolumeClaim metadata. Must include the `name` field. Required.",
852+
"$ref": "https://github.com/garethr/kubernetes-json-schema/blob/master/v1.13.5/_definitions.json#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"
853+
},
854+
"spec": {
855+
"description": "The specifications of a persistent volume claim for `Domain on PV` domain. Required. This section provides a subset of fields in standard Kubernetes PersistentVolumeClaim specifications.",
856+
"$ref": "#/definitions/PersistentVolumeClaimSpec"
857+
}
858+
}
859+
},
860+
"PersistentVolumeClaimSpec": {
861+
"type": "object",
862+
"properties": {
863+
"storageClassName": {
864+
"description": "StorageClassName is the name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.",
865+
"type": "string"
866+
},
867+
"volumeName": {
868+
"description": "VolumeName is the binding reference to the PersistentVolume backing this claim.",
869+
"type": "string"
870+
},
871+
"resources": {
872+
"description": "Resources represents the minimum resources the volume should have. More info https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources. ResourceRequirements describes the compute resource requirements.",
873+
"$ref": "https://github.com/garethr/kubernetes-json-schema/blob/master/v1.13.5/_definitions.json#/definitions/io.k8s.api.core.v1.ResourceRequirements"
874+
},
875+
"volumeMode": {
876+
"description": "VolumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec.",
877+
"type": "string"
878+
}
879+
}
880+
},
881+
"PersistentVolumeSpec": {
882+
"type": "object",
883+
"properties": {
884+
"storageClassName": {
885+
"description": "StorageClassName is the name of StorageClass to which this persistent volume belongs. Empty value means that this volume does not belong to any StorageClass.",
886+
"type": "string"
887+
},
888+
"persistentVolumeReclaimPolicy": {
889+
"description": "PersistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim. Valid options are Retain (default for manually created PersistentVolumes), Delete (default for dynamically provisioned PersistentVolumes), and Recycle (deprecated). Recycle must be supported by the volume plugin underlying this PersistentVolume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming ",
890+
"type": "string"
891+
},
892+
"hostPath": {
893+
"description": "HostPath represents a directory on the host. Provisioned by a developer or tester. This is useful for single-node development and testing only! On-host storage is not supported in any way and WILL NOT WORK in a multi-node cluster. More info:\n https://kubernetes.io/docs/concepts/storage/volumes#hostpath\nRepresents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.",
894+
"$ref": "https://github.com/garethr/kubernetes-json-schema/blob/master/v1.13.5/_definitions.json#/definitions/io.k8s.api.core.v1.HostPathVolumeSource"
895+
},
896+
"capacity": {
897+
"description": "Capacity is the description of the persistent volume\u0027s resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity",
898+
"$ref": "#/definitions/Map"
899+
},
900+
"volumeMode": {
901+
"description": "VolumeMode defines if a volume is intended to be used with a formatted filesystem or to remain in raw block state. Value of Filesystem is implied when not included in spec.",
902+
"type": "string"
903+
}
904+
}
905+
},
750906
"ProbeTuning": {
751907
"type": "object",
752908
"properties": {

0 commit comments

Comments
 (0)