diff --git a/.github/workflows/canary-integration-test.yml b/.github/workflows/canary-integration-test.yml index 9d923cb3d..f45c29fc5 100644 --- a/.github/workflows/canary-integration-test.yml +++ b/.github/workflows/canary-integration-test.yml @@ -1995,13 +1995,11 @@ jobs: tests/scripts/github-action-helper.sh use_local_disk tests/scripts/github-action-helper.sh create_partitions_for_osds - - name: deploy cluster without ceph-csi operator + - name: deploy cluster run: | - OPERATOR_MANIFEST="deploy/examples/operator.yaml" - sed -i 's|# ROOK_CSI_CEPH_IMAGE: "quay.io/cephcsi/cephcsi:v3.16.2"|ROOK_CSI_CEPH_IMAGE: "quay.io/nixpanic/cephcsi:nvmeof"|' "${OPERATOR_MANIFEST}" - sed -i 's|ROOK_USE_CSI_OPERATOR: "true"|ROOK_USE_CSI_OPERATOR: "false"|' "${OPERATOR_MANIFEST}" - - tests/scripts/github-action-helper.sh deploy_manifest_with_local_build "${OPERATOR_MANIFEST}" + tests/scripts/github-action-helper.sh deploy_manifest_with_local_build "deploy/examples/operator.yaml" + tests/scripts/github-action-helper.sh deploy_manifest_with_local_build "deploy/examples/csi-operator.yaml" + tests/scripts/github-action-helper.sh deploy_manifest_with_local_build "deploy/examples/csi/nvmeof/driver.yaml" export BLOCK="$(tests/scripts/github-action-helper.sh find_extra_block_dev)" yq w -i -d0 deploy/examples/cluster-test.yaml spec.storage.deviceFilter "${BLOCK}" diff --git a/Documentation/Storage-Configuration/Block-Storage-RBD/nvme-of.md b/Documentation/Storage-Configuration/Block-Storage-RBD/nvme-of.md index 8b1d6503d..a11928cbf 100644 --- a/Documentation/Storage-Configuration/Block-Storage-RBD/nvme-of.md +++ b/Documentation/Storage-Configuration/Block-Storage-RBD/nvme-of.md @@ -27,7 +27,6 @@ This guide assumes a Rook cluster as explained in the [Quickstart Guide](../../G ### Requirements - **Ceph Version**: Ceph v20 (Tentacle) or later -- **Disable the Ceph CSI operator**: We are still updating the Ceph CSI operator with NVMe-oF support. Currently, it is required to disable the CSI operator to test NVMe-oF. In operator.yaml, set `ROOK_USE_CSI_OPERATOR: "false"`. ## Step 1: Create a Ceph Block Pool @@ -97,81 +96,33 @@ NAME READY STATUS RESTARTS AGE rook-ceph-nvmeof-nvmeof-a-85844ff6b8-4r8gj 1/1 Running 0 91s ``` -## Step 4: Deploy the NVMe-oF CSI Driver +## Step 3: Deploy the NVMe-oF CSI Driver via CSI Operator -The NVMe-oF CSI driver handles dynamic provisioning of volumes. Deploy the CSI provisioner with the NVMe-oF driver. +The NVMe-oF CSI driver is deployed via the ceph-csi operator. -Deploy the NVMe-oF CSI provisioner from the example manifest: +Apply the `Driver` CR for NVMe-oF that will trigger the creation of the +Ceph-CSI/NVMe-oF deployment and daemonset: ```console -kubectl create -f deploy/examples/csi/nvmeof/provisioner.yaml +kubectl create -f deploy/examples/csi/nvmeof/driver.yaml ``` -Verify the CSI provisioner pod is running: +Verify the CSI operator created the controller and node plugins: ```console -kubectl get pods -n rook-ceph -l app=csi-nvmeofplugin-provisioner +kubectl get pods -n rook-ceph | grep nvmeof ``` **Example Output** ```console -NAME READY STATUS RESTARTS AGE -csi-nvmeofplugin-provisioner-65b4fbbc8-jjsqj 4/4 Running 0 75s +rook-ceph.nvmeof.csi.ceph.com-ctrlplugin-d9d77fb7c-kkl28 5/5 Running 0 60s +rook-ceph.nvmeof.csi.ceph.com-nodeplugin-xvt5g 2/2 Running 0 60s ``` -## Step 5: Create the StorageClass - -Create a StorageClass that uses the NVMe-oF CSI driver. You'll need to gather the following information from the gateway: - -1. **nvmeofGatewayAddress**: A stable address for the gateway management API -2. **nvmeofGatewayPort**: The gateway port (default: 5500) -3. **listeners**: A JSON array containing listener information for each gateway instance - -Discover the values to use in the StorageClass: - -1. **nvmeofGatewayAddress**: Use the Service `CLUSTER-IP`. - - ```console - kubectl get service -n rook-ceph rook-ceph-nvmeof-nvmeof-a - ``` - - **Example Output** - - ```console - NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE - rook-ceph-nvmeof-nvmeof-a ClusterIP 10.106.98.71 4420/TCP,5500/TCP,5499/TCP,8009/TCP 24m - ``` - -2. **listeners.address**: Use the gateway pod IP. - - ```console - kubectl get pods -n rook-ceph -l app=rook-ceph-nvmeof -o wide - - ``` - - **Example Output** - - ```console - NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES - rook-ceph-nvmeof-nvmeof-a-5fd6cd4d46-mrbwk 1/1 Running 0 26m 10.244.0.16 minikube - ``` - -3. **listeners.hostname**: Use the gateway deployment name. - - ```console - kubectl get deployments.apps -n rook-ceph -l app=rook-ceph-nvmeof - ``` - - **Example Output** - - ```console - NAME READY UP-TO-DATE AVAILABLE AGE - rook-ceph-nvmeof-nvmeof-a 1/1 1 1 27m - ``` - -Create the StorageClass: +## Step 4: Create the StorageClass +Create a StorageClass that uses the NVMe-oF CSI driver. ```yaml apiVersion: storage.k8s.io/v1 @@ -182,16 +133,11 @@ parameters: clusterID: rook-ceph pool: nvmeof subsystemNQN: nqn.2016-06.io.spdk:cnode1.rook-ceph - # Management API - talks to gateway to create subsystems/namespaces - nvmeofGatewayAddress: "10.106.98.71" + nvmeofGatewayAddress: "rook-ceph-nvmeof-nvmeof-a.rook-ceph.svc.cluster.local" nvmeofGatewayPort: "5500" - # Data Plane - worker nodes connect here for actual I/O - # List ALL gateway pods for HA and multipath listeners: | [ { - "address": "10.244.0.16", - "port": 4420, "hostname": "rook-ceph-nvmeof-nvmeof-a" } ] @@ -201,23 +147,27 @@ parameters: csi.storage.k8s.io/node-stage-secret-namespace: rook-ceph csi.storage.k8s.io/controller-expand-secret-name: rook-csi-rbd-provisioner csi.storage.k8s.io/controller-expand-secret-namespace: rook-ceph + csi.storage.k8s.io/controller-modify-secret-name: rook-csi-rbd-provisioner + csi.storage.k8s.io/controller-modify-secret-namespace: rook-ceph csi.storage.k8s.io/node-expand-secret-name: rook-csi-rbd-node csi.storage.k8s.io/node-expand-secret-namespace: rook-ceph imageFormat: "2" imageFeatures: layering,deep-flatten,exclusive-lock,object-map,fast-diff -provisioner: nvmeof.csi.ceph.com +provisioner: rook-ceph.nvmeof.csi.ceph.com reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: true ``` -Create the StorageClass: +!!! note + The provisioner name `rook-ceph.nvmeof.csi.ceph.com` is prefixed + with the operator namespace. ```console kubectl create -f deploy/examples/csi/nvmeof/storageclass.yaml ``` -## Step 6: Create a PersistentVolumeClaim +## Step 5: Create a PersistentVolumeClaim Create a PVC using the NVMe-oF storage class: @@ -258,36 +208,9 @@ NAME STATUS VOLUME CAP nvmeof-external-volume Bound pvc-b4108580-5cfa-46d3-beff-320088a5bf3c 128Mi RWO ceph-nvmeof 20m ``` -## Step 7: Deploy the NVMe-oF CSI Node Plugin +## Step 6: Create a Pod -Deploy the NVMe-oF CSI node plugin: - -```console -kubectl create -f deploy/examples/csi/nvmeof/node-plugin.yaml -``` - -Verify the node plugin pod is running: - -```console -kubectl get pods -n rook-ceph -l app=nvmeof.csi.ceph.com-nodeplugin -``` - -**Example Output** - -```console -NAME READY STATUS RESTARTS AGE -nvmeof.csi.ceph.com-nodeplugin-xnm82 2/2 Running 0 31h -``` - -## Step 8: Accessing Volumes via NVMe-oF - -Once the PVC is created and bound, the volume is available via NVMe-oF. The volume can be accessed by both Kubernetes pods within the cluster and external clients outside the cluster. - -### Access from Kubernetes Pods - -Kubernetes pods can consume NVMe-oF volumes by mounting the PVC directly. The CSI driver handles the NVMe-oF connection automatically when the pod mounts the volume. - -Create a sample pod that mounts the PVC: +Create a pod that consumes the NVMe-oF volume: ```console kubectl create -f deploy/examples/csi/nvmeof/pod.yaml @@ -296,16 +219,22 @@ kubectl create -f deploy/examples/csi/nvmeof/pod.yaml Verify the pod is running: ```console -kubectl get pods -n default +kubectl get pods -n default nvmeof-test-pod ``` **Example Output** ```console NAME READY STATUS RESTARTS AGE -nvmeof-test-pod 1/1 Running 0 29h +nvmeof-test-pod 1/1 Running 0 60s ``` +## Step 7: Accessing Volumes via NVMe-oF + +Once the PVC is created and bound, the volume is available via +NVMe-oF. The volume can be accessed by both Kubernetes pods within +the cluster and external clients outside the cluster. + ### Access from External Clients External clients outside the Kubernetes cluster can connect to the gateway using standard NVMe-oF procedures. @@ -366,7 +295,7 @@ sudo mount /dev/nvmeXnY /mnt/nvmeof For production deployments, configure multiple gateway instances for high availability: 1. **Increase Gateway Instances**: Set `instances: 2` or higher in the `CephNVMeOFGateway` spec -2. **Update StorageClass Listeners**: Add all gateway instance addresses and instance names to the `listeners` array +2. **Update StorageClass Listeners**: Add all gateway deployment hostnames to the `listeners` array 3. **Load Balancing**: Each gateway instance has its own Service; list all of them to support multipath/HA Example with multiple instances: @@ -377,19 +306,16 @@ spec: # ... other settings ``` -Then update the StorageClass `listeners` to include all gateway instances/services: +Then update the StorageClass `listeners` to include all gateway +hostnames: ```yaml listeners: | [ { - "address": "10.99.212.218", - "port": 4420, "hostname": "rook-ceph-nvmeof-nvmeof-a" }, { - "address": "10.99.212.219", - "port": 4420, "hostname": "rook-ceph-nvmeof-nvmeof-b" } ] @@ -403,16 +329,16 @@ listeners: | kubectl logs -n rook-ceph -l app=rook-ceph-nvmeof --tail=100 ``` -### Check CSI Provisioner Logs +### Check CSI Controller Plugin Logs ```console -kubectl logs -n rook-ceph -l app=csi-nvmeofplugin-provisioner --tail=100 +kubectl logs -n rook-ceph deploy/rook-ceph.nvmeof.csi.ceph.com-ctrlplugin --tail=100 ``` ### Verify Gateway Service ```console -kubectl describe service -n rook-ceph rook-ceph-nvmeof-my-nvmeof-0 +kubectl describe service -n rook-ceph rook-ceph-nvmeof-nvmeof-a ``` ### Check PVC Events @@ -446,17 +372,14 @@ kubectl delete pvc nvmeof-external-volume # Delete the StorageClass kubectl delete storageclass ceph-nvmeof -# Delete the NVMe-oF CSI node plugin -kubectl delete -f deploy/examples/csi/nvmeof/node-plugin.yaml - -# Delete the NVMe-oF CSI provisioner (includes ServiceAccount/RBAC) -kubectl delete -f deploy/examples/csi/nvmeof/provisioner.yaml +# Delete the NVMe-oF CSI operator resources +kubectl delete -f deploy/examples/csi/nvmeof/csi-operator-nvmeof.yaml # Delete the NVMe-oF gateway -kubectl delete -n rook-ceph cephnvmeofgateway.ceph.rook.io my-nvmeof +kubectl delete -f deploy/examples/nvmeof-test.yaml # Delete the block pool (optional) -kubectl delete -n rook-ceph cephblockpool.ceph.rook.io nvmeof +kubectl delete -f deploy/examples/csi/nvmeof/nvmeof-pool.yaml ``` ## References diff --git a/deploy/examples/csi-operator.yaml b/deploy/examples/csi-operator.yaml index 0f0ca96c0..bbb336709 100644 --- a/deploy/examples/csi-operator.yaml +++ b/deploy/examples/csi-operator.yaml @@ -87,9 +87,7 @@ spec: - name: v1 schema: openAPIV3Schema: - description: - ClientProfileMapping is the Schema for the clientprofilemappings - API + description: ClientProfileMapping is the Schema for the clientprofilemappings API properties: apiVersion: description: |- @@ -113,9 +111,7 @@ spec: properties: mappings: items: - description: - MappingsSpec define a mapping between a local and remote - profiles + description: MappingsSpec define a mapping between a local and remote profiles properties: blockPoolIdMapping: items: @@ -138,9 +134,7 @@ spec: - mappings type: object status: - description: - ClientProfileMappingStatus defines the observed state of - ClientProfileMapping + description: ClientProfileMappingStatus defines the observed state of ClientProfileMapping type: object type: object served: true @@ -225,14 +219,10 @@ spec: in any namespace properties: name: - description: - name is unique within a namespace to reference - a secret resource. + description: name is unique within a namespace to reference a secret resource. type: string namespace: - description: - namespace defines the space within which - the secret name must be unique. + description: namespace defines the space within which the secret name must be unique. type: string type: object x-kubernetes-map-type: atomic @@ -254,7 +244,36 @@ spec: type: string type: object nfs: - description: NfsConfigSpec cdefines the desired NFS configuration + description: NfsConfigSpec defines the desired NFS configuration + type: object + nvmeof: + description: NvmeofConfigSpec defines the desired NVMe-oF configuration + properties: + cephCsiSecrets: + description: |- + CephCsiSecretsSpec defines the secrets used by the client profile + to access the Ceph cluster and perform operations + on volumes. + properties: + controllerPublishSecret: + description: |- + SecretReference represents a Secret Reference. It has enough information to retrieve secret + in any namespace + properties: + name: + description: name is unique within a namespace to reference a secret resource. + type: string + namespace: + description: namespace defines the space within which the secret name must be unique. + type: string + type: object + x-kubernetes-map-type: atomic + type: object + radosNamespace: + type: string + x-kubernetes-validations: + - message: field is immutable + rule: self == oldSelf type: object rbd: description: RbdConfigSpec defines the desired RBD configuration @@ -271,14 +290,10 @@ spec: in any namespace properties: name: - description: - name is unique within a namespace to reference - a secret resource. + description: name is unique within a namespace to reference a secret resource. type: string namespace: - description: - namespace defines the space within which - the secret name must be unique. + description: namespace defines the space within which the secret name must be unique. type: string type: object x-kubernetes-map-type: atomic @@ -376,9 +391,7 @@ spec: description: Pod's affinity settings properties: nodeAffinity: - description: - Describes node affinity scheduling rules for - the pod. + description: Describes node affinity scheduling rules for the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- @@ -397,23 +410,17 @@ spec: (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). properties: preference: - description: - A node selector term, associated with - the corresponding weight. + description: A node selector term, associated with the corresponding weight. properties: matchExpressions: - description: - A list of node selector requirements - by node's labels. + description: A list of node selector requirements by node's labels. items: description: |- A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - The label key that the selector - applies to. + description: The label key that the selector applies to. type: string operator: description: |- @@ -438,18 +445,14 @@ spec: type: array x-kubernetes-list-type: atomic matchFields: - description: - A list of node selector requirements - by node's fields. + description: A list of node selector requirements by node's fields. items: description: |- A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - The label key that the selector - applies to. + description: The label key that the selector applies to. type: string operator: description: |- @@ -476,9 +479,7 @@ spec: type: object x-kubernetes-map-type: atomic weight: - description: - Weight associated with matching the - corresponding nodeSelectorTerm, in the range 1-100. + description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. format: int32 type: integer required: @@ -496,9 +497,7 @@ spec: may or may not try to eventually evict the pod from its node. properties: nodeSelectorTerms: - description: - Required. A list of node selector terms. - The terms are ORed. + description: Required. A list of node selector terms. The terms are ORed. items: description: |- A null or empty node selector term matches no objects. The requirements of @@ -506,18 +505,14 @@ spec: The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. properties: matchExpressions: - description: - A list of node selector requirements - by node's labels. + description: A list of node selector requirements by node's labels. items: description: |- A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - The label key that the selector - applies to. + description: The label key that the selector applies to. type: string operator: description: |- @@ -542,18 +537,14 @@ spec: type: array x-kubernetes-list-type: atomic matchFields: - description: - A list of node selector requirements - by node's fields. + description: A list of node selector requirements by node's fields. items: description: |- A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - The label key that the selector - applies to. + description: The label key that the selector applies to. type: string operator: description: |- @@ -587,10 +578,7 @@ spec: x-kubernetes-map-type: atomic type: object podAffinity: - description: - Describes pod affinity scheduling rules (e.g. - co-locate this pod in the same node, zone, etc. as some - other pod(s)). + description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- @@ -604,15 +592,10 @@ spec: "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: - description: - The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) + description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: - description: - Required. A pod affinity term, associated - with the corresponding weight. + description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: |- @@ -620,19 +603,14 @@ spec: If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The requirements - are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key - that the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -702,19 +680,14 @@ spec: An empty selector ({}) matches all namespaces. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The requirements - are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key - that the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -804,19 +777,14 @@ spec: If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are - ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key that - the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -886,19 +854,14 @@ spec: An empty selector ({}) matches all namespaces. properties: matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are - ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key that - the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -956,10 +919,7 @@ spec: x-kubernetes-list-type: atomic type: object podAntiAffinity: - description: - Describes pod anti-affinity scheduling rules - (e.g. avoid putting this pod in the same node, zone, etc. - as some other pod(s)). + description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- @@ -973,15 +933,10 @@ spec: "weight" from the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: - description: - The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) + description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: - description: - Required. A pod affinity term, associated - with the corresponding weight. + description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: |- @@ -989,19 +944,14 @@ spec: If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The requirements - are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key - that the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -1071,19 +1021,14 @@ spec: An empty selector ({}) matches all namespaces. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The requirements - are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key - that the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -1173,19 +1118,14 @@ spec: If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are - ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key that - the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -1255,19 +1195,14 @@ spec: An empty selector ({}) matches all namespaces. properties: matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are - ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key that - the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -1375,20 +1310,14 @@ spec: x-kubernetes-int-or-string: true type: object type: - description: - Type of deployment. Can be "Recreate" or "RollingUpdate". - Default is RollingUpdate. + description: Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate. type: string type: object hostNetwork: - description: - hostNetwork setting to be propagated to CSI controller - plugin pods + description: hostNetwork setting to be propagated to CSI controller plugin pods type: boolean imagePullPolicy: - description: - To indicate the image pull policy to be applied to - all the containers in the csi driver pods. + description: To indicate the image pull policy to be applied to all the containers in the csi driver pods. type: string labels: additionalProperties: @@ -1405,9 +1334,7 @@ spec: For example, OpenShift with SELinux restrictions requires the pod to be privileged to write to hostPath. type: boolean replicas: - description: - Set replicas for controller plugin's deployment. - Defaults to 2 + description: Set replicas for controller plugin's deployment. Defaults to 2 format: int32 minimum: 1 type: integer @@ -1415,9 +1342,7 @@ spec: description: Resource requirements for controller plugin's containers properties: addons: - description: - ResourceRequirements describes the compute resource - requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -1476,9 +1401,7 @@ spec: type: object type: object attacher: - description: - ResourceRequirements describes the compute resource - requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -1537,9 +1460,7 @@ spec: type: object type: object liveness: - description: - ResourceRequirements describes the compute resource - requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -1598,9 +1519,7 @@ spec: type: object type: object logRotator: - description: - ResourceRequirements describes the compute resource - requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -1659,9 +1578,7 @@ spec: type: object type: object omapGenerator: - description: - ResourceRequirements describes the compute resource - requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -1720,9 +1637,7 @@ spec: type: object type: object plugin: - description: - ResourceRequirements describes the compute resource - requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -1781,9 +1696,7 @@ spec: type: object type: object provisioner: - description: - ResourceRequirements describes the compute resource - requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -1842,9 +1755,7 @@ spec: type: object type: object resizer: - description: - ResourceRequirements describes the compute resource - requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -1903,9 +1814,7 @@ spec: type: object type: object snapshotter: - description: - ResourceRequirements describes the compute resource - requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -2008,15 +1917,11 @@ spec: type: object type: array volumes: - description: - Volume and volume mount definitions to attach to - the pod + description: Volume and volume mount definitions to attach to the pod items: properties: mount: - description: - VolumeMount describes a mounting of a Volume - within a container. + description: VolumeMount describes a mounting of a Volume within a container. properties: mountPath: description: |- @@ -2076,9 +1981,7 @@ spec: - name type: object volume: - description: - Volume represents a named volume in a pod that - may be accessed by any container in the pod. + description: Volume represents a named volume in a pod that may be accessed by any container in the pod. properties: awsElasticBlockStore: description: |- @@ -2123,19 +2026,13 @@ spec: are redirected to the disk.csi.azure.com CSI driver. properties: cachingMode: - description: - "cachingMode is the Host Caching mode: - None, Read Only, Read Write." + description: "cachingMode is the Host Caching mode: None, Read Only, Read Write." type: string diskName: - description: - diskName is the Name of the data disk - in the blob storage + description: diskName is the Name of the data disk in the blob storage type: string diskURI: - description: - diskURI is the URI of data disk in - the blob storage + description: diskURI is the URI of data disk in the blob storage type: string fsType: default: ext4 @@ -2145,12 +2042,7 @@ spec: Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: - description: - "kind expected values are Shared: multiple - blob disks per storage account Dedicated: single - blob disk per storage account Managed: azure - managed data disk (only in managed availability - set). defaults to shared" + description: "kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared" type: string readOnly: default: false @@ -2174,9 +2066,7 @@ spec: the ReadOnly setting in VolumeMounts. type: boolean secretName: - description: - secretName is the name of secret that - contains Azure Storage Account Name and Key + description: secretName is the name of secret that contains Azure Storage Account Name and Key type: string shareName: description: shareName is the azure share Name @@ -2199,10 +2089,7 @@ spec: type: array x-kubernetes-list-type: atomic path: - description: - "path is Optional: Used as the mounted - root, rather than the full Ceph tree, default - is /" + description: "path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /" type: string readOnly: description: |- @@ -2284,9 +2171,7 @@ spec: - volumeID type: object configMap: - description: - configMap represents a configMap that should - populate this volume + description: configMap represents a configMap that should populate this volume properties: defaultMode: description: |- @@ -2309,9 +2194,7 @@ spec: the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: - description: - Maps a string key to a path within - a volume. + description: Maps a string key to a path within a volume. properties: key: description: key is the key to project. @@ -2349,17 +2232,12 @@ spec: More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string optional: - description: - optional specify whether the ConfigMap - or its keys must be defined + description: optional specify whether the ConfigMap or its keys must be defined type: boolean type: object x-kubernetes-map-type: atomic csi: - description: - csi (Container Storage Interface) represents - ephemeral storage that is handled by certain external - CSI drivers. + description: csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers. properties: driver: description: |- @@ -2407,9 +2285,7 @@ spec: - driver type: object downwardAPI: - description: - downwardAPI represents downward API about - the pod that should populate this volume + description: downwardAPI represents downward API about the pod that should populate this volume properties: defaultMode: description: |- @@ -2424,31 +2300,18 @@ spec: format: int32 type: integer items: - description: - Items is a list of downward API volume - file + description: Items is a list of downward API volume file items: - description: - DownwardAPIVolumeFile represents - information to create the file containing the - pod field + description: DownwardAPIVolumeFile represents information to create the file containing the pod field properties: fieldRef: - description: - "Required: Selects a field of - the pod: only annotations, labels, name, - namespace and uid are supported." + description: "Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported." properties: apiVersion: - description: - Version of the schema the - FieldPath is written in terms of, defaults - to "v1". + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: - description: - Path of the field to select - in the specified API version. + description: Path of the field to select in the specified API version. type: string required: - fieldPath @@ -2465,12 +2328,7 @@ spec: format: int32 type: integer path: - description: - "Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the '..' path. - Must be utf-8 encoded. The first item of - the relative path must not start with '..'" + description: "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'" type: string resourceFieldRef: description: |- @@ -2478,18 +2336,13 @@ spec: (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. properties: containerName: - description: - "Container name: required - for volumes, optional for env vars" + description: "Container name: required for volumes, optional for env vars" type: string divisor: anyOf: - type: integer - type: string - description: - Specifies the output format - of the exposed resources, defaults to - "1" + description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: @@ -2621,14 +2474,10 @@ spec: For any other third-party types, APIGroup is required. type: string kind: - description: - Kind is the type of resource - being referenced + description: Kind is the type of resource being referenced type: string name: - description: - Name is the name of resource - being referenced + description: Name is the name of resource being referenced type: string required: - kind @@ -2668,14 +2517,10 @@ spec: For any other third-party types, APIGroup is required. type: string kind: - description: - Kind is the type of resource - being referenced + description: Kind is the type of resource being referenced type: string name: - description: - Name is the name of resource - being referenced + description: Name is the name of resource being referenced type: string namespace: description: |- @@ -2721,25 +2566,17 @@ spec: type: object type: object selector: - description: - selector is a label query over - volumes to consider for binding. + description: selector is a label query over volumes to consider for binding. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The - requirements are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label - key that the selector applies - to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -2796,9 +2633,7 @@ spec: Value of Filesystem is implied when not included in claim spec. type: string volumeName: - description: - volumeName is the binding reference - to the PersistentVolume backing this claim. + description: volumeName is the binding reference to the PersistentVolume backing this claim. type: string type: object required: @@ -2806,10 +2641,7 @@ spec: type: object type: object fc: - description: - fc represents a Fibre Channel resource - that is attached to a kubelet's host machine and then - exposed to the pod. + description: fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. properties: fsType: description: |- @@ -2827,9 +2659,7 @@ spec: the ReadOnly setting in VolumeMounts. type: boolean targetWWNs: - description: - "targetWWNs is Optional: FC target - worldwide names (WWNs)" + description: "targetWWNs is Optional: FC target worldwide names (WWNs)" items: type: string type: array @@ -2850,9 +2680,7 @@ spec: Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead. properties: driver: - description: - driver is the name of the driver to - use for this volume. + description: driver is the name of the driver to use for this volume. type: string fsType: description: |- @@ -2863,9 +2691,7 @@ spec: options: additionalProperties: type: string - description: - "options is Optional: this field holds - extra command options if any." + description: "options is Optional: this field holds extra command options if any." type: object readOnly: description: |- @@ -2905,9 +2731,7 @@ spec: should be considered as deprecated type: string datasetUUID: - description: - datasetUUID is the UUID of the dataset. - This is unique identifier of a Flocker dataset + description: datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset type: string type: object gcePersistentDisk: @@ -2966,9 +2790,7 @@ spec: description: repository is the URL type: string revision: - description: - revision is the commit hash for the - specified revision. + description: revision is the commit hash for the specified revision. type: string required: - repository @@ -2979,9 +2801,7 @@ spec: Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported. properties: endpoints: - description: - endpoints is the endpoint name that - details Glusterfs topology. + description: endpoints is the endpoint name that details Glusterfs topology. type: string path: description: |- @@ -3063,14 +2883,10 @@ spec: More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi properties: chapAuthDiscovery: - description: - chapAuthDiscovery defines whether support - iSCSI Discovery CHAP authentication + description: chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: - description: - chapAuthSession defines whether support - iSCSI Session CHAP authentication + description: chapAuthSession defines whether support iSCSI Session CHAP authentication type: boolean fsType: description: |- @@ -3112,9 +2928,7 @@ spec: Defaults to false. type: boolean secretRef: - description: - secretRef is the CHAP Secret for iSCSI - target and initiator authentication + description: secretRef is the CHAP Secret for iSCSI target and initiator authentication properties: name: default: "" @@ -3199,9 +3013,7 @@ spec: Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: - description: - pdID is the ID that identifies Photon - Controller persistent disk + description: pdID is the ID that identifies Photon Controller persistent disk type: string required: - pdID @@ -3225,17 +3037,13 @@ spec: the ReadOnly setting in VolumeMounts. type: boolean volumeID: - description: - volumeID uniquely identifies a Portworx - volume + description: volumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: - description: - projected items for all in one resources - secrets, configmaps, and downward API + description: projected items for all in one resources secrets, configmaps, and downward API properties: defaultMode: description: |- @@ -3280,20 +3088,14 @@ spec: everything". properties: matchExpressions: - description: - matchExpressions is a - list of label selector requirements. - The requirements are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label - key that the selector applies - to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -3340,9 +3142,7 @@ spec: ClusterTrustBundles. type: boolean path: - description: - Relative path from the volume - root to write the bundle. + description: Relative path from the volume root to write the bundle. type: string signerName: description: |- @@ -3354,9 +3154,7 @@ spec: - path type: object configMap: - description: - configMap information about the - configMap data to project + description: configMap information about the configMap data to project properties: items: description: |- @@ -3368,9 +3166,7 @@ spec: the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: - description: - Maps a string key to a - path within a volume. + description: Maps a string key to a path within a volume. properties: key: description: key is the key to project. @@ -3408,45 +3204,26 @@ spec: More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string optional: - description: - optional specify whether - the ConfigMap or its keys must be defined + description: optional specify whether the ConfigMap or its keys must be defined type: boolean type: object x-kubernetes-map-type: atomic downwardAPI: - description: - downwardAPI information about - the downwardAPI data to project + description: downwardAPI information about the downwardAPI data to project properties: items: - description: - Items is a list of DownwardAPIVolume - file + description: Items is a list of DownwardAPIVolume file items: - description: - DownwardAPIVolumeFile represents - information to create the file containing - the pod field + description: DownwardAPIVolumeFile represents information to create the file containing the pod field properties: fieldRef: - description: - "Required: Selects - a field of the pod: only annotations, - labels, name, namespace and uid - are supported." + description: "Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported." properties: apiVersion: - description: - Version of the - schema the FieldPath is written - in terms of, defaults to "v1". + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: - description: - Path of the field - to select in the specified - API version. + description: Path of the field to select in the specified API version. type: string required: - fieldPath @@ -3463,14 +3240,7 @@ spec: format: int32 type: integer path: - description: - "Required: Path is the - relative path name of the file - to be created. Must not be absolute - or contain the '..' path. Must - be utf-8 encoded. The first item - of the relative path must not - start with '..'" + description: "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'" type: string resourceFieldRef: description: |- @@ -3478,25 +3248,17 @@ spec: (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. properties: containerName: - description: - "Container name: - required for volumes, optional - for env vars" + description: "Container name: required for volumes, optional for env vars" type: string divisor: anyOf: - type: integer - type: string - description: - Specifies the output - format of the exposed resources, - defaults to "1" + description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: - "Required: resource - to select" + description: "Required: resource to select" type: string required: - resource @@ -3606,9 +3368,7 @@ spec: format: int32 type: integer signerName: - description: - Kubelet's generated CSRs - will be addressed to this signer. + description: Kubelet's generated CSRs will be addressed to this signer. type: string userAnnotations: additionalProperties: @@ -3633,9 +3393,7 @@ spec: - signerName type: object secret: - description: - secret information about the - secret data to project + description: secret information about the secret data to project properties: items: description: |- @@ -3647,9 +3405,7 @@ spec: the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: - description: - Maps a string key to a - path within a volume. + description: Maps a string key to a path within a volume. properties: key: description: key is the key to project. @@ -3687,16 +3443,12 @@ spec: More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string optional: - description: - optional field specify whether - the Secret or its key must be defined + description: optional field specify whether the Secret or its key must be defined type: boolean type: object x-kubernetes-map-type: atomic serviceAccountToken: - description: - serviceAccountToken is information - about the serviceAccountToken data to project + description: serviceAccountToken is information about the serviceAccountToken data to project properties: audience: description: |- @@ -3759,9 +3511,7 @@ spec: Defaults to serivceaccount user type: string volume: - description: - volume is a string that references - an already created Quobyte volume by name. + description: volume is a string that references an already created Quobyte volume by name. type: string required: - registry @@ -3855,14 +3605,10 @@ spec: Default is "xfs". type: string gateway: - description: - gateway is the host address of the - ScaleIO API Gateway. + description: gateway is the host address of the ScaleIO API Gateway. type: string protectionDomain: - description: - protectionDomain is the name of the - ScaleIO Protection Domain for the configured storage. + description: protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. type: string readOnly: description: |- @@ -3886,9 +3632,7 @@ spec: type: object x-kubernetes-map-type: atomic sslEnabled: - description: - sslEnabled Flag enable/disable SSL - communication with Gateway, default false + description: sslEnabled Flag enable/disable SSL communication with Gateway, default false type: boolean storageMode: default: ThinProvisioned @@ -3897,14 +3641,10 @@ spec: Default is ThinProvisioned. type: string storagePool: - description: - storagePool is the ScaleIO Storage - Pool associated with the protection domain. + description: storagePool is the ScaleIO Storage Pool associated with the protection domain. type: string system: - description: - system is the name of the storage system - as configured in ScaleIO. + description: system is the name of the storage system as configured in ScaleIO. type: string volumeName: description: |- @@ -3942,9 +3682,7 @@ spec: the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: - description: - Maps a string key to a path within - a volume. + description: Maps a string key to a path within a volume. properties: key: description: key is the key to project. @@ -3973,9 +3711,7 @@ spec: type: array x-kubernetes-list-type: atomic optional: - description: - optional field specify whether the - Secret or its keys must be defined + description: optional field specify whether the Secret or its keys must be defined type: boolean secretName: description: |- @@ -4043,20 +3779,13 @@ spec: Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: - description: - storagePolicyID is the storage Policy - Based Management (SPBM) profile ID associated - with the StoragePolicyName. + description: storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. type: string storagePolicyName: - description: - storagePolicyName is the storage Policy - Based Management (SPBM) profile name. + description: storagePolicyName is the storage Policy Based Management (SPBM) profile name. type: string volumePath: - description: - volumePath is the path that identifies - vSphere volume vmdk + description: volumePath is the path that identifies vSphere volume vmdk type: string required: - volumePath @@ -4124,9 +3853,7 @@ spec: it set it to true. type: boolean grpcTimeout: - description: - Set the gRPC timeout for gRPC call issued by the driver - components + description: Set the gRPC timeout for gRPC call issued by the driver components minimum: 0 type: integer imageSet: @@ -4210,9 +3937,7 @@ spec: anyOf: - type: integer - type: string - description: - MaxLogSize is the maximum size of the log file - per csi pods + description: MaxLogSize is the maximum size of the log file per csi pods pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true periodicity: @@ -4243,9 +3968,7 @@ spec: description: Pod's affinity settings properties: nodeAffinity: - description: - Describes node affinity scheduling rules for - the pod. + description: Describes node affinity scheduling rules for the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- @@ -4264,23 +3987,17 @@ spec: (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). properties: preference: - description: - A node selector term, associated with - the corresponding weight. + description: A node selector term, associated with the corresponding weight. properties: matchExpressions: - description: - A list of node selector requirements - by node's labels. + description: A list of node selector requirements by node's labels. items: description: |- A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - The label key that the selector - applies to. + description: The label key that the selector applies to. type: string operator: description: |- @@ -4305,18 +4022,14 @@ spec: type: array x-kubernetes-list-type: atomic matchFields: - description: - A list of node selector requirements - by node's fields. + description: A list of node selector requirements by node's fields. items: description: |- A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - The label key that the selector - applies to. + description: The label key that the selector applies to. type: string operator: description: |- @@ -4343,9 +4056,7 @@ spec: type: object x-kubernetes-map-type: atomic weight: - description: - Weight associated with matching the - corresponding nodeSelectorTerm, in the range 1-100. + description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. format: int32 type: integer required: @@ -4363,9 +4074,7 @@ spec: may or may not try to eventually evict the pod from its node. properties: nodeSelectorTerms: - description: - Required. A list of node selector terms. - The terms are ORed. + description: Required. A list of node selector terms. The terms are ORed. items: description: |- A null or empty node selector term matches no objects. The requirements of @@ -4373,18 +4082,14 @@ spec: The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. properties: matchExpressions: - description: - A list of node selector requirements - by node's labels. + description: A list of node selector requirements by node's labels. items: description: |- A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - The label key that the selector - applies to. + description: The label key that the selector applies to. type: string operator: description: |- @@ -4409,18 +4114,14 @@ spec: type: array x-kubernetes-list-type: atomic matchFields: - description: - A list of node selector requirements - by node's fields. + description: A list of node selector requirements by node's fields. items: description: |- A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - The label key that the selector - applies to. + description: The label key that the selector applies to. type: string operator: description: |- @@ -4454,10 +4155,7 @@ spec: x-kubernetes-map-type: atomic type: object podAffinity: - description: - Describes pod affinity scheduling rules (e.g. - co-locate this pod in the same node, zone, etc. as some - other pod(s)). + description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- @@ -4471,15 +4169,10 @@ spec: "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: - description: - The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) + description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: - description: - Required. A pod affinity term, associated - with the corresponding weight. + description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: |- @@ -4487,19 +4180,14 @@ spec: If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The requirements - are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key - that the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -4569,19 +4257,14 @@ spec: An empty selector ({}) matches all namespaces. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The requirements - are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key - that the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -4671,19 +4354,14 @@ spec: If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are - ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key that - the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -4753,19 +4431,14 @@ spec: An empty selector ({}) matches all namespaces. properties: matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are - ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key that - the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -4823,10 +4496,7 @@ spec: x-kubernetes-list-type: atomic type: object podAntiAffinity: - description: - Describes pod anti-affinity scheduling rules - (e.g. avoid putting this pod in the same node, zone, etc. - as some other pod(s)). + description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- @@ -4840,15 +4510,10 @@ spec: "weight" from the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: - description: - The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) + description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: - description: - Required. A pod affinity term, associated - with the corresponding weight. + description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: |- @@ -4856,19 +4521,14 @@ spec: If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The requirements - are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key - that the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -4938,19 +4598,14 @@ spec: An empty selector ({}) matches all namespaces. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The requirements - are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key - that the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -5040,19 +4695,14 @@ spec: If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are - ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key that - the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -5122,19 +4772,14 @@ spec: An empty selector ({}) matches all namespaces. properties: matchExpressions: - description: - matchExpressions is a list of label - selector requirements. The requirements are - ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key that - the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -5198,19 +4843,13 @@ spec: description: Pod's annotations type: object enableSeLinuxHostMount: - description: - Control the host mount of /etc/selinux for csi plugin - pods. Defaults to false + description: Control the host mount of /etc/selinux for csi plugin pods. Defaults to false type: boolean imagePullPolicy: - description: - To indicate the image pull policy to be applied to - all the containers in the csi driver pods. + description: To indicate the image pull policy to be applied to all the containers in the csi driver pods. type: string kubeletDirPath: - description: - kubelet directory path, if kubelet configured to - use other than /var/lib/kubelet path. + description: kubelet directory path, if kubelet configured to use other than /var/lib/kubelet path. type: string labels: additionalProperties: @@ -5224,9 +4863,7 @@ spec: description: Resource requirements for plugin's containers properties: addons: - description: - ResourceRequirements describes the compute resource - requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -5285,9 +4922,7 @@ spec: type: object type: object liveness: - description: - ResourceRequirements describes the compute resource - requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -5346,9 +4981,7 @@ spec: type: object type: object logRotator: - description: - ResourceRequirements describes the compute resource - requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -5407,9 +5040,7 @@ spec: type: object type: object plugin: - description: - ResourceRequirements describes the compute resource - requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -5468,9 +5099,7 @@ spec: type: object type: object registrar: - description: - ResourceRequirements describes the compute resource - requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -5576,9 +5205,7 @@ spec: description: Topology settings for the plugin pods properties: domainLabels: - description: - Domain labels define which node labels to use - as domains for CSI nodeplugins to advertise their domains + description: Domain labels define which node labels to use as domains for CSI nodeplugins to advertise their domains items: type: string type: array @@ -5591,9 +5218,7 @@ spec: Default value is RollingUpdate with MaxAvailabile set to 1 properties: rollingUpdate: - description: - Rolling update config params. Present only if - type = "RollingUpdate". + description: Rolling update config params. Present only if type = "RollingUpdate". properties: maxSurge: anyOf: @@ -5641,21 +5266,15 @@ spec: x-kubernetes-int-or-string: true type: object type: - description: - Type of daemon set update. Can be "RollingUpdate" - or "OnDelete". Default is RollingUpdate. + description: Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is RollingUpdate. type: string type: object volumes: - description: - Volume and volume mount definitions to attach to - the pod + description: Volume and volume mount definitions to attach to the pod items: properties: mount: - description: - VolumeMount describes a mounting of a Volume - within a container. + description: VolumeMount describes a mounting of a Volume within a container. properties: mountPath: description: |- @@ -5715,9 +5334,7 @@ spec: - name type: object volume: - description: - Volume represents a named volume in a pod that - may be accessed by any container in the pod. + description: Volume represents a named volume in a pod that may be accessed by any container in the pod. properties: awsElasticBlockStore: description: |- @@ -5762,19 +5379,13 @@ spec: are redirected to the disk.csi.azure.com CSI driver. properties: cachingMode: - description: - "cachingMode is the Host Caching mode: - None, Read Only, Read Write." + description: "cachingMode is the Host Caching mode: None, Read Only, Read Write." type: string diskName: - description: - diskName is the Name of the data disk - in the blob storage + description: diskName is the Name of the data disk in the blob storage type: string diskURI: - description: - diskURI is the URI of data disk in - the blob storage + description: diskURI is the URI of data disk in the blob storage type: string fsType: default: ext4 @@ -5784,12 +5395,7 @@ spec: Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: - description: - "kind expected values are Shared: multiple - blob disks per storage account Dedicated: single - blob disk per storage account Managed: azure - managed data disk (only in managed availability - set). defaults to shared" + description: "kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared" type: string readOnly: default: false @@ -5813,9 +5419,7 @@ spec: the ReadOnly setting in VolumeMounts. type: boolean secretName: - description: - secretName is the name of secret that - contains Azure Storage Account Name and Key + description: secretName is the name of secret that contains Azure Storage Account Name and Key type: string shareName: description: shareName is the azure share Name @@ -5838,10 +5442,7 @@ spec: type: array x-kubernetes-list-type: atomic path: - description: - "path is Optional: Used as the mounted - root, rather than the full Ceph tree, default - is /" + description: "path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /" type: string readOnly: description: |- @@ -5923,9 +5524,7 @@ spec: - volumeID type: object configMap: - description: - configMap represents a configMap that should - populate this volume + description: configMap represents a configMap that should populate this volume properties: defaultMode: description: |- @@ -5948,9 +5547,7 @@ spec: the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: - description: - Maps a string key to a path within - a volume. + description: Maps a string key to a path within a volume. properties: key: description: key is the key to project. @@ -5988,17 +5585,12 @@ spec: More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string optional: - description: - optional specify whether the ConfigMap - or its keys must be defined + description: optional specify whether the ConfigMap or its keys must be defined type: boolean type: object x-kubernetes-map-type: atomic csi: - description: - csi (Container Storage Interface) represents - ephemeral storage that is handled by certain external - CSI drivers. + description: csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers. properties: driver: description: |- @@ -6046,9 +5638,7 @@ spec: - driver type: object downwardAPI: - description: - downwardAPI represents downward API about - the pod that should populate this volume + description: downwardAPI represents downward API about the pod that should populate this volume properties: defaultMode: description: |- @@ -6063,31 +5653,18 @@ spec: format: int32 type: integer items: - description: - Items is a list of downward API volume - file + description: Items is a list of downward API volume file items: - description: - DownwardAPIVolumeFile represents - information to create the file containing the - pod field + description: DownwardAPIVolumeFile represents information to create the file containing the pod field properties: fieldRef: - description: - "Required: Selects a field of - the pod: only annotations, labels, name, - namespace and uid are supported." + description: "Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported." properties: apiVersion: - description: - Version of the schema the - FieldPath is written in terms of, defaults - to "v1". + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: - description: - Path of the field to select - in the specified API version. + description: Path of the field to select in the specified API version. type: string required: - fieldPath @@ -6104,12 +5681,7 @@ spec: format: int32 type: integer path: - description: - "Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the '..' path. - Must be utf-8 encoded. The first item of - the relative path must not start with '..'" + description: "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'" type: string resourceFieldRef: description: |- @@ -6117,18 +5689,13 @@ spec: (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. properties: containerName: - description: - "Container name: required - for volumes, optional for env vars" + description: "Container name: required for volumes, optional for env vars" type: string divisor: anyOf: - type: integer - type: string - description: - Specifies the output format - of the exposed resources, defaults to - "1" + description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: @@ -6260,14 +5827,10 @@ spec: For any other third-party types, APIGroup is required. type: string kind: - description: - Kind is the type of resource - being referenced + description: Kind is the type of resource being referenced type: string name: - description: - Name is the name of resource - being referenced + description: Name is the name of resource being referenced type: string required: - kind @@ -6307,14 +5870,10 @@ spec: For any other third-party types, APIGroup is required. type: string kind: - description: - Kind is the type of resource - being referenced + description: Kind is the type of resource being referenced type: string name: - description: - Name is the name of resource - being referenced + description: Name is the name of resource being referenced type: string namespace: description: |- @@ -6360,25 +5919,17 @@ spec: type: object type: object selector: - description: - selector is a label query over - volumes to consider for binding. + description: selector is a label query over volumes to consider for binding. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The - requirements are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label - key that the selector applies - to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -6435,9 +5986,7 @@ spec: Value of Filesystem is implied when not included in claim spec. type: string volumeName: - description: - volumeName is the binding reference - to the PersistentVolume backing this claim. + description: volumeName is the binding reference to the PersistentVolume backing this claim. type: string type: object required: @@ -6445,10 +5994,7 @@ spec: type: object type: object fc: - description: - fc represents a Fibre Channel resource - that is attached to a kubelet's host machine and then - exposed to the pod. + description: fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. properties: fsType: description: |- @@ -6466,9 +6012,7 @@ spec: the ReadOnly setting in VolumeMounts. type: boolean targetWWNs: - description: - "targetWWNs is Optional: FC target - worldwide names (WWNs)" + description: "targetWWNs is Optional: FC target worldwide names (WWNs)" items: type: string type: array @@ -6489,9 +6033,7 @@ spec: Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead. properties: driver: - description: - driver is the name of the driver to - use for this volume. + description: driver is the name of the driver to use for this volume. type: string fsType: description: |- @@ -6502,9 +6044,7 @@ spec: options: additionalProperties: type: string - description: - "options is Optional: this field holds - extra command options if any." + description: "options is Optional: this field holds extra command options if any." type: object readOnly: description: |- @@ -6544,9 +6084,7 @@ spec: should be considered as deprecated type: string datasetUUID: - description: - datasetUUID is the UUID of the dataset. - This is unique identifier of a Flocker dataset + description: datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset type: string type: object gcePersistentDisk: @@ -6605,9 +6143,7 @@ spec: description: repository is the URL type: string revision: - description: - revision is the commit hash for the - specified revision. + description: revision is the commit hash for the specified revision. type: string required: - repository @@ -6618,9 +6154,7 @@ spec: Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported. properties: endpoints: - description: - endpoints is the endpoint name that - details Glusterfs topology. + description: endpoints is the endpoint name that details Glusterfs topology. type: string path: description: |- @@ -6702,14 +6236,10 @@ spec: More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi properties: chapAuthDiscovery: - description: - chapAuthDiscovery defines whether support - iSCSI Discovery CHAP authentication + description: chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: - description: - chapAuthSession defines whether support - iSCSI Session CHAP authentication + description: chapAuthSession defines whether support iSCSI Session CHAP authentication type: boolean fsType: description: |- @@ -6751,9 +6281,7 @@ spec: Defaults to false. type: boolean secretRef: - description: - secretRef is the CHAP Secret for iSCSI - target and initiator authentication + description: secretRef is the CHAP Secret for iSCSI target and initiator authentication properties: name: default: "" @@ -6838,9 +6366,7 @@ spec: Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: - description: - pdID is the ID that identifies Photon - Controller persistent disk + description: pdID is the ID that identifies Photon Controller persistent disk type: string required: - pdID @@ -6864,17 +6390,13 @@ spec: the ReadOnly setting in VolumeMounts. type: boolean volumeID: - description: - volumeID uniquely identifies a Portworx - volume + description: volumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: - description: - projected items for all in one resources - secrets, configmaps, and downward API + description: projected items for all in one resources secrets, configmaps, and downward API properties: defaultMode: description: |- @@ -6919,20 +6441,14 @@ spec: everything". properties: matchExpressions: - description: - matchExpressions is a - list of label selector requirements. - The requirements are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label - key that the selector applies - to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -6979,9 +6495,7 @@ spec: ClusterTrustBundles. type: boolean path: - description: - Relative path from the volume - root to write the bundle. + description: Relative path from the volume root to write the bundle. type: string signerName: description: |- @@ -6993,9 +6507,7 @@ spec: - path type: object configMap: - description: - configMap information about the - configMap data to project + description: configMap information about the configMap data to project properties: items: description: |- @@ -7007,9 +6519,7 @@ spec: the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: - description: - Maps a string key to a - path within a volume. + description: Maps a string key to a path within a volume. properties: key: description: key is the key to project. @@ -7047,45 +6557,26 @@ spec: More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string optional: - description: - optional specify whether - the ConfigMap or its keys must be defined + description: optional specify whether the ConfigMap or its keys must be defined type: boolean type: object x-kubernetes-map-type: atomic downwardAPI: - description: - downwardAPI information about - the downwardAPI data to project + description: downwardAPI information about the downwardAPI data to project properties: items: - description: - Items is a list of DownwardAPIVolume - file + description: Items is a list of DownwardAPIVolume file items: - description: - DownwardAPIVolumeFile represents - information to create the file containing - the pod field + description: DownwardAPIVolumeFile represents information to create the file containing the pod field properties: fieldRef: - description: - "Required: Selects - a field of the pod: only annotations, - labels, name, namespace and uid - are supported." + description: "Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported." properties: apiVersion: - description: - Version of the - schema the FieldPath is written - in terms of, defaults to "v1". + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: - description: - Path of the field - to select in the specified - API version. + description: Path of the field to select in the specified API version. type: string required: - fieldPath @@ -7102,14 +6593,7 @@ spec: format: int32 type: integer path: - description: - "Required: Path is the - relative path name of the file - to be created. Must not be absolute - or contain the '..' path. Must - be utf-8 encoded. The first item - of the relative path must not - start with '..'" + description: "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'" type: string resourceFieldRef: description: |- @@ -7117,25 +6601,17 @@ spec: (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. properties: containerName: - description: - "Container name: - required for volumes, optional - for env vars" + description: "Container name: required for volumes, optional for env vars" type: string divisor: anyOf: - type: integer - type: string - description: - Specifies the output - format of the exposed resources, - defaults to "1" + description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: - "Required: resource - to select" + description: "Required: resource to select" type: string required: - resource @@ -7245,9 +6721,7 @@ spec: format: int32 type: integer signerName: - description: - Kubelet's generated CSRs - will be addressed to this signer. + description: Kubelet's generated CSRs will be addressed to this signer. type: string userAnnotations: additionalProperties: @@ -7272,9 +6746,7 @@ spec: - signerName type: object secret: - description: - secret information about the - secret data to project + description: secret information about the secret data to project properties: items: description: |- @@ -7286,9 +6758,7 @@ spec: the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: - description: - Maps a string key to a - path within a volume. + description: Maps a string key to a path within a volume. properties: key: description: key is the key to project. @@ -7326,16 +6796,12 @@ spec: More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string optional: - description: - optional field specify whether - the Secret or its key must be defined + description: optional field specify whether the Secret or its key must be defined type: boolean type: object x-kubernetes-map-type: atomic serviceAccountToken: - description: - serviceAccountToken is information - about the serviceAccountToken data to project + description: serviceAccountToken is information about the serviceAccountToken data to project properties: audience: description: |- @@ -7398,9 +6864,7 @@ spec: Defaults to serivceaccount user type: string volume: - description: - volume is a string that references - an already created Quobyte volume by name. + description: volume is a string that references an already created Quobyte volume by name. type: string required: - registry @@ -7494,14 +6958,10 @@ spec: Default is "xfs". type: string gateway: - description: - gateway is the host address of the - ScaleIO API Gateway. + description: gateway is the host address of the ScaleIO API Gateway. type: string protectionDomain: - description: - protectionDomain is the name of the - ScaleIO Protection Domain for the configured storage. + description: protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. type: string readOnly: description: |- @@ -7525,9 +6985,7 @@ spec: type: object x-kubernetes-map-type: atomic sslEnabled: - description: - sslEnabled Flag enable/disable SSL - communication with Gateway, default false + description: sslEnabled Flag enable/disable SSL communication with Gateway, default false type: boolean storageMode: default: ThinProvisioned @@ -7536,14 +6994,10 @@ spec: Default is ThinProvisioned. type: string storagePool: - description: - storagePool is the ScaleIO Storage - Pool associated with the protection domain. + description: storagePool is the ScaleIO Storage Pool associated with the protection domain. type: string system: - description: - system is the name of the storage system - as configured in ScaleIO. + description: system is the name of the storage system as configured in ScaleIO. type: string volumeName: description: |- @@ -7581,9 +7035,7 @@ spec: the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: - description: - Maps a string key to a path within - a volume. + description: Maps a string key to a path within a volume. properties: key: description: key is the key to project. @@ -7612,9 +7064,7 @@ spec: type: array x-kubernetes-list-type: atomic optional: - description: - optional field specify whether the - Secret or its keys must be defined + description: optional field specify whether the Secret or its keys must be defined type: boolean secretName: description: |- @@ -7682,20 +7132,13 @@ spec: Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: - description: - storagePolicyID is the storage Policy - Based Management (SPBM) profile ID associated - with the StoragePolicyName. + description: storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. type: string storagePolicyName: - description: - storagePolicyName is the storage Policy - Based Management (SPBM) profile name. + description: storagePolicyName is the storage Policy Based Management (SPBM) profile name. type: string volumePath: - description: - volumePath is the path that identifies - vSphere volume vmdk + description: volumePath is the path that identifies vSphere volume vmdk type: string required: - volumePath @@ -7707,9 +7150,7 @@ spec: type: array type: object snapshotPolicy: - description: - "Select a policy for snapshot behavior: none, autodetect, - snapshot, sanpshotGroup" + description: "Select a policy for snapshot behavior: none, autodetect, snapshot, sanpshotGroup" enum: - none - volumeGroupSnapshot @@ -7721,8 +7162,8 @@ spec: type: object type: object x-kubernetes-validations: - - message: ".metadata.name must match: '[.](rbd|cephfs|nfs).csi.ceph.com'" - rule: self.metadata.name.matches('^(.+\\.)?(rbd|cephfs|nfs)?\\.csi\\.ceph\\.com$') + - message: ".metadata.name must match: '[.](rbd|cephfs|nfs|nvmeof).csi.ceph.com'" + rule: self.metadata.name.matches('^(.+\\.)?(rbd|cephfs|nfs|nvmeof)?\\.csi\\.ceph\\.com$') served: true storage: true subresources: @@ -7769,9 +7210,7 @@ spec: description: OperatorConfigSpec defines the desired state of OperatorConfig properties: driverSpecDefaults: - description: - Allow overwrite of hardcoded defaults for any driver - managed by this operator + description: Allow overwrite of hardcoded defaults for any driver managed by this operator properties: attachRequired: description: |- @@ -7805,9 +7244,7 @@ spec: description: Pod's affinity settings properties: nodeAffinity: - description: - Describes node affinity scheduling rules - for the pod. + description: Describes node affinity scheduling rules for the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- @@ -7826,23 +7263,17 @@ spec: (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). properties: preference: - description: - A node selector term, associated - with the corresponding weight. + description: A node selector term, associated with the corresponding weight. properties: matchExpressions: - description: - A list of node selector requirements - by node's labels. + description: A list of node selector requirements by node's labels. items: description: |- A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - The label key that the - selector applies to. + description: The label key that the selector applies to. type: string operator: description: |- @@ -7867,18 +7298,14 @@ spec: type: array x-kubernetes-list-type: atomic matchFields: - description: - A list of node selector requirements - by node's fields. + description: A list of node selector requirements by node's fields. items: description: |- A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - The label key that the - selector applies to. + description: The label key that the selector applies to. type: string operator: description: |- @@ -7905,10 +7332,7 @@ spec: type: object x-kubernetes-map-type: atomic weight: - description: - Weight associated with matching - the corresponding nodeSelectorTerm, in the - range 1-100. + description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. format: int32 type: integer required: @@ -7926,9 +7350,7 @@ spec: may or may not try to eventually evict the pod from its node. properties: nodeSelectorTerms: - description: - Required. A list of node selector - terms. The terms are ORed. + description: Required. A list of node selector terms. The terms are ORed. items: description: |- A null or empty node selector term matches no objects. The requirements of @@ -7936,18 +7358,14 @@ spec: The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. properties: matchExpressions: - description: - A list of node selector requirements - by node's labels. + description: A list of node selector requirements by node's labels. items: description: |- A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - The label key that the - selector applies to. + description: The label key that the selector applies to. type: string operator: description: |- @@ -7972,18 +7390,14 @@ spec: type: array x-kubernetes-list-type: atomic matchFields: - description: - A list of node selector requirements - by node's fields. + description: A list of node selector requirements by node's fields. items: description: |- A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - The label key that the - selector applies to. + description: The label key that the selector applies to. type: string operator: description: |- @@ -8017,10 +7431,7 @@ spec: x-kubernetes-map-type: atomic type: object podAffinity: - description: - Describes pod affinity scheduling rules (e.g. - co-locate this pod in the same node, zone, etc. as some - other pod(s)). + description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- @@ -8034,15 +7445,10 @@ spec: "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: - description: - The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) + description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: - description: - Required. A pod affinity term, - associated with the corresponding weight. + description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: |- @@ -8050,20 +7456,14 @@ spec: If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The - requirements are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label - key that the selector applies - to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -8133,20 +7533,14 @@ spec: An empty selector ({}) matches all namespaces. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The - requirements are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label - key that the selector applies - to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -8236,19 +7630,14 @@ spec: If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The requirements - are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key - that the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -8318,19 +7707,14 @@ spec: An empty selector ({}) matches all namespaces. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The requirements - are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key - that the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -8388,10 +7772,7 @@ spec: x-kubernetes-list-type: atomic type: object podAntiAffinity: - description: - Describes pod anti-affinity scheduling rules - (e.g. avoid putting this pod in the same node, zone, - etc. as some other pod(s)). + description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- @@ -8405,15 +7786,10 @@ spec: "weight" from the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: - description: - The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) + description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: - description: - Required. A pod affinity term, - associated with the corresponding weight. + description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: |- @@ -8421,20 +7797,14 @@ spec: If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The - requirements are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label - key that the selector applies - to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -8504,20 +7874,14 @@ spec: An empty selector ({}) matches all namespaces. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The - requirements are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label - key that the selector applies - to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -8607,19 +7971,14 @@ spec: If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The requirements - are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key - that the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -8689,19 +8048,14 @@ spec: An empty selector ({}) matches all namespaces. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The requirements - are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key - that the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -8809,20 +8163,14 @@ spec: x-kubernetes-int-or-string: true type: object type: - description: - Type of deployment. Can be "Recreate" or - "RollingUpdate". Default is RollingUpdate. + description: Type of deployment. Can be "Recreate" or "RollingUpdate". Default is RollingUpdate. type: string type: object hostNetwork: - description: - hostNetwork setting to be propagated to CSI controller - plugin pods + description: hostNetwork setting to be propagated to CSI controller plugin pods type: boolean imagePullPolicy: - description: - To indicate the image pull policy to be applied - to all the containers in the csi driver pods. + description: To indicate the image pull policy to be applied to all the containers in the csi driver pods. type: string labels: additionalProperties: @@ -8839,21 +8187,15 @@ spec: For example, OpenShift with SELinux restrictions requires the pod to be privileged to write to hostPath. type: boolean replicas: - description: - Set replicas for controller plugin's deployment. - Defaults to 2 + description: Set replicas for controller plugin's deployment. Defaults to 2 format: int32 minimum: 1 type: integer resources: - description: - Resource requirements for controller plugin's - containers + description: Resource requirements for controller plugin's containers properties: addons: - description: - ResourceRequirements describes the compute - resource requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -8865,9 +8207,7 @@ spec: This field is immutable. It can only be set for containers. items: - description: - ResourceClaim references one entry - in PodSpec.ResourceClaims. + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: |- @@ -8914,9 +8254,7 @@ spec: type: object type: object attacher: - description: - ResourceRequirements describes the compute - resource requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -8928,9 +8266,7 @@ spec: This field is immutable. It can only be set for containers. items: - description: - ResourceClaim references one entry - in PodSpec.ResourceClaims. + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: |- @@ -8977,9 +8313,7 @@ spec: type: object type: object liveness: - description: - ResourceRequirements describes the compute - resource requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -8991,9 +8325,7 @@ spec: This field is immutable. It can only be set for containers. items: - description: - ResourceClaim references one entry - in PodSpec.ResourceClaims. + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: |- @@ -9040,9 +8372,7 @@ spec: type: object type: object logRotator: - description: - ResourceRequirements describes the compute - resource requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -9054,9 +8384,7 @@ spec: This field is immutable. It can only be set for containers. items: - description: - ResourceClaim references one entry - in PodSpec.ResourceClaims. + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: |- @@ -9103,9 +8431,7 @@ spec: type: object type: object omapGenerator: - description: - ResourceRequirements describes the compute - resource requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -9117,9 +8443,7 @@ spec: This field is immutable. It can only be set for containers. items: - description: - ResourceClaim references one entry - in PodSpec.ResourceClaims. + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: |- @@ -9166,9 +8490,7 @@ spec: type: object type: object plugin: - description: - ResourceRequirements describes the compute - resource requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -9180,9 +8502,7 @@ spec: This field is immutable. It can only be set for containers. items: - description: - ResourceClaim references one entry - in PodSpec.ResourceClaims. + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: |- @@ -9229,9 +8549,7 @@ spec: type: object type: object provisioner: - description: - ResourceRequirements describes the compute - resource requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -9243,9 +8561,7 @@ spec: This field is immutable. It can only be set for containers. items: - description: - ResourceClaim references one entry - in PodSpec.ResourceClaims. + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: |- @@ -9292,9 +8608,7 @@ spec: type: object type: object resizer: - description: - ResourceRequirements describes the compute - resource requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -9306,9 +8620,7 @@ spec: This field is immutable. It can only be set for containers. items: - description: - ResourceClaim references one entry - in PodSpec.ResourceClaims. + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: |- @@ -9355,9 +8667,7 @@ spec: type: object type: object snapshotter: - description: - ResourceRequirements describes the compute - resource requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -9369,9 +8679,7 @@ spec: This field is immutable. It can only be set for containers. items: - description: - ResourceClaim references one entry - in PodSpec.ResourceClaims. + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: |- @@ -9419,9 +8727,7 @@ spec: type: object type: object serviceAccountName: - description: - Service account name to be used for driver's - pods + description: Service account name to be used for driver's pods type: string tolerations: description: Pod's tolerations list @@ -9464,15 +8770,11 @@ spec: type: object type: array volumes: - description: - Volume and volume mount definitions to attach - to the pod + description: Volume and volume mount definitions to attach to the pod items: properties: mount: - description: - VolumeMount describes a mounting of a Volume - within a container. + description: VolumeMount describes a mounting of a Volume within a container. properties: mountPath: description: |- @@ -9532,9 +8834,7 @@ spec: - name type: object volume: - description: - Volume represents a named volume in a pod - that may be accessed by any container in the pod. + description: Volume represents a named volume in a pod that may be accessed by any container in the pod. properties: awsElasticBlockStore: description: |- @@ -9579,19 +8879,13 @@ spec: are redirected to the disk.csi.azure.com CSI driver. properties: cachingMode: - description: - "cachingMode is the Host Caching - mode: None, Read Only, Read Write." + description: "cachingMode is the Host Caching mode: None, Read Only, Read Write." type: string diskName: - description: - diskName is the Name of the data - disk in the blob storage + description: diskName is the Name of the data disk in the blob storage type: string diskURI: - description: - diskURI is the URI of data disk - in the blob storage + description: diskURI is the URI of data disk in the blob storage type: string fsType: default: ext4 @@ -9601,12 +8895,7 @@ spec: Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: - description: - "kind expected values are Shared: - multiple blob disks per storage account Dedicated: - single blob disk per storage account Managed: - azure managed data disk (only in managed availability - set). defaults to shared" + description: "kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared" type: string readOnly: default: false @@ -9630,10 +8919,7 @@ spec: the ReadOnly setting in VolumeMounts. type: boolean secretName: - description: - secretName is the name of secret - that contains Azure Storage Account Name and - Key + description: secretName is the name of secret that contains Azure Storage Account Name and Key type: string shareName: description: shareName is the azure share Name @@ -9656,10 +8942,7 @@ spec: type: array x-kubernetes-list-type: atomic path: - description: - "path is Optional: Used as the - mounted root, rather than the full Ceph tree, - default is /" + description: "path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /" type: string readOnly: description: |- @@ -9741,9 +9024,7 @@ spec: - volumeID type: object configMap: - description: - configMap represents a configMap that - should populate this volume + description: configMap represents a configMap that should populate this volume properties: defaultMode: description: |- @@ -9766,9 +9047,7 @@ spec: the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: - description: - Maps a string key to a path within - a volume. + description: Maps a string key to a path within a volume. properties: key: description: key is the key to project. @@ -9806,17 +9085,12 @@ spec: More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string optional: - description: - optional specify whether the ConfigMap - or its keys must be defined + description: optional specify whether the ConfigMap or its keys must be defined type: boolean type: object x-kubernetes-map-type: atomic csi: - description: - csi (Container Storage Interface) represents - ephemeral storage that is handled by certain external - CSI drivers. + description: csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers. properties: driver: description: |- @@ -9864,9 +9138,7 @@ spec: - driver type: object downwardAPI: - description: - downwardAPI represents downward API - about the pod that should populate this volume + description: downwardAPI represents downward API about the pod that should populate this volume properties: defaultMode: description: |- @@ -9881,31 +9153,18 @@ spec: format: int32 type: integer items: - description: - Items is a list of downward API - volume file + description: Items is a list of downward API volume file items: - description: - DownwardAPIVolumeFile represents - information to create the file containing - the pod field + description: DownwardAPIVolumeFile represents information to create the file containing the pod field properties: fieldRef: - description: - "Required: Selects a field - of the pod: only annotations, labels, - name, namespace and uid are supported." + description: "Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported." properties: apiVersion: - description: - Version of the schema - the FieldPath is written in terms - of, defaults to "v1". + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: - description: - Path of the field to - select in the specified API version. + description: Path of the field to select in the specified API version. type: string required: - fieldPath @@ -9922,13 +9181,7 @@ spec: format: int32 type: integer path: - description: - "Required: Path is the relative - path name of the file to be created. - Must not be absolute or contain the - '..' path. Must be utf-8 encoded. - The first item of the relative path - must not start with '..'" + description: "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'" type: string resourceFieldRef: description: |- @@ -9936,24 +9189,17 @@ spec: (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. properties: containerName: - description: - "Container name: required - for volumes, optional for env vars" + description: "Container name: required for volumes, optional for env vars" type: string divisor: anyOf: - type: integer - type: string - description: - Specifies the output - format of the exposed resources, - defaults to "1" + description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: - "Required: resource to - select" + description: "Required: resource to select" type: string required: - resource @@ -10081,14 +9327,10 @@ spec: For any other third-party types, APIGroup is required. type: string kind: - description: - Kind is the type of - resource being referenced + description: Kind is the type of resource being referenced type: string name: - description: - Name is the name of - resource being referenced + description: Name is the name of resource being referenced type: string required: - kind @@ -10128,14 +9370,10 @@ spec: For any other third-party types, APIGroup is required. type: string kind: - description: - Kind is the type of - resource being referenced + description: Kind is the type of resource being referenced type: string name: - description: - Name is the name of - resource being referenced + description: Name is the name of resource being referenced type: string namespace: description: |- @@ -10181,25 +9419,17 @@ spec: type: object type: object selector: - description: - selector is a label query - over volumes to consider for binding. + description: selector is a label query over volumes to consider for binding. properties: matchExpressions: - description: - matchExpressions is - a list of label selector requirements. - The requirements are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label - key that the selector applies - to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -10256,10 +9486,7 @@ spec: Value of Filesystem is implied when not included in claim spec. type: string volumeName: - description: - volumeName is the binding - reference to the PersistentVolume - backing this claim. + description: volumeName is the binding reference to the PersistentVolume backing this claim. type: string type: object required: @@ -10267,10 +9494,7 @@ spec: type: object type: object fc: - description: - fc represents a Fibre Channel resource - that is attached to a kubelet's host machine and - then exposed to the pod. + description: fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. properties: fsType: description: |- @@ -10279,9 +9503,7 @@ spec: Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string lun: - description: - "lun is Optional: FC target lun - number" + description: "lun is Optional: FC target lun number" format: int32 type: integer readOnly: @@ -10290,9 +9512,7 @@ spec: the ReadOnly setting in VolumeMounts. type: boolean targetWWNs: - description: - "targetWWNs is Optional: FC target - worldwide names (WWNs)" + description: "targetWWNs is Optional: FC target worldwide names (WWNs)" items: type: string type: array @@ -10313,9 +9533,7 @@ spec: Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead. properties: driver: - description: - driver is the name of the driver - to use for this volume. + description: driver is the name of the driver to use for this volume. type: string fsType: description: |- @@ -10326,9 +9544,7 @@ spec: options: additionalProperties: type: string - description: - "options is Optional: this field - holds extra command options if any." + description: "options is Optional: this field holds extra command options if any." type: object readOnly: description: |- @@ -10368,10 +9584,7 @@ spec: should be considered as deprecated type: string datasetUUID: - description: - datasetUUID is the UUID of the - dataset. This is unique identifier of a Flocker - dataset + description: datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset type: string type: object gcePersistentDisk: @@ -10430,9 +9643,7 @@ spec: description: repository is the URL type: string revision: - description: - revision is the commit hash for - the specified revision. + description: revision is the commit hash for the specified revision. type: string required: - repository @@ -10443,9 +9654,7 @@ spec: Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported. properties: endpoints: - description: - endpoints is the endpoint name - that details Glusterfs topology. + description: endpoints is the endpoint name that details Glusterfs topology. type: string path: description: |- @@ -10527,14 +9736,10 @@ spec: More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi properties: chapAuthDiscovery: - description: - chapAuthDiscovery defines whether - support iSCSI Discovery CHAP authentication + description: chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: - description: - chapAuthSession defines whether - support iSCSI Session CHAP authentication + description: chapAuthSession defines whether support iSCSI Session CHAP authentication type: boolean fsType: description: |- @@ -10550,9 +9755,7 @@ spec: : will be created for the connection. type: string iqn: - description: - iqn is the target iSCSI Qualified - Name. + description: iqn is the target iSCSI Qualified Name. type: string iscsiInterface: default: default @@ -10561,9 +9764,7 @@ spec: Defaults to 'default' (tcp). type: string lun: - description: - lun represents iSCSI Target Lun - number. + description: lun represents iSCSI Target Lun number. format: int32 type: integer portals: @@ -10580,9 +9781,7 @@ spec: Defaults to false. type: boolean secretRef: - description: - secretRef is the CHAP Secret for - iSCSI target and initiator authentication + description: secretRef is the CHAP Secret for iSCSI target and initiator authentication properties: name: default: "" @@ -10667,9 +9866,7 @@ spec: Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: - description: - pdID is the ID that identifies - Photon Controller persistent disk + description: pdID is the ID that identifies Photon Controller persistent disk type: string required: - pdID @@ -10693,17 +9890,13 @@ spec: the ReadOnly setting in VolumeMounts. type: boolean volumeID: - description: - volumeID uniquely identifies a - Portworx volume + description: volumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: - description: - projected items for all in one resources - secrets, configmaps, and downward API + description: projected items for all in one resources secrets, configmaps, and downward API properties: defaultMode: description: |- @@ -10748,21 +9941,14 @@ spec: everything". properties: matchExpressions: - description: - matchExpressions - is a list of label selector - requirements. The requirements - are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the - label key that the selector - applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -10809,9 +9995,7 @@ spec: ClusterTrustBundles. type: boolean path: - description: - Relative path from the - volume root to write the bundle. + description: Relative path from the volume root to write the bundle. type: string signerName: description: |- @@ -10823,9 +10007,7 @@ spec: - path type: object configMap: - description: - configMap information about - the configMap data to project + description: configMap information about the configMap data to project properties: items: description: |- @@ -10837,14 +10019,10 @@ spec: the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: - description: - Maps a string key to - a path within a volume. + description: Maps a string key to a path within a volume. properties: key: - description: - key is the key - to project. + description: key is the key to project. type: string mode: description: |- @@ -10879,47 +10057,26 @@ spec: More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string optional: - description: - optional specify whether - the ConfigMap or its keys must be - defined + description: optional specify whether the ConfigMap or its keys must be defined type: boolean type: object x-kubernetes-map-type: atomic downwardAPI: - description: - downwardAPI information about - the downwardAPI data to project + description: downwardAPI information about the downwardAPI data to project properties: items: - description: - Items is a list of DownwardAPIVolume - file + description: Items is a list of DownwardAPIVolume file items: - description: - DownwardAPIVolumeFile - represents information to create - the file containing the pod field + description: DownwardAPIVolumeFile represents information to create the file containing the pod field properties: fieldRef: - description: - "Required: Selects - a field of the pod: only annotations, - labels, name, namespace and - uid are supported." + description: "Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported." properties: apiVersion: - description: - Version of - the schema the FieldPath - is written in terms of, - defaults to "v1". + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: - description: - Path of the - field to select in the - specified API version. + description: Path of the field to select in the specified API version. type: string required: - fieldPath @@ -10936,15 +10093,7 @@ spec: format: int32 type: integer path: - description: - "Required: Path - is the relative path name - of the file to be created. - Must not be absolute or contain - the '..' path. Must be utf-8 - encoded. The first item of - the relative path must not - start with '..'" + description: "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'" type: string resourceFieldRef: description: |- @@ -10952,26 +10101,17 @@ spec: (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. properties: containerName: - description: - "Container - name: required for volumes, - optional for env vars" + description: "Container name: required for volumes, optional for env vars" type: string divisor: anyOf: - type: integer - type: string - description: - Specifies the - output format of the exposed - resources, defaults to - "1" + description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: - "Required: - resource to select" + description: "Required: resource to select" type: string required: - resource @@ -11081,9 +10221,7 @@ spec: format: int32 type: integer signerName: - description: - Kubelet's generated CSRs - will be addressed to this signer. + description: Kubelet's generated CSRs will be addressed to this signer. type: string userAnnotations: additionalProperties: @@ -11108,9 +10246,7 @@ spec: - signerName type: object secret: - description: - secret information about - the secret data to project + description: secret information about the secret data to project properties: items: description: |- @@ -11122,14 +10258,10 @@ spec: the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: - description: - Maps a string key to - a path within a volume. + description: Maps a string key to a path within a volume. properties: key: - description: - key is the key - to project. + description: key is the key to project. type: string mode: description: |- @@ -11164,18 +10296,12 @@ spec: More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string optional: - description: - optional field specify - whether the Secret or its key must - be defined + description: optional field specify whether the Secret or its key must be defined type: boolean type: object x-kubernetes-map-type: atomic serviceAccountToken: - description: - serviceAccountToken is information - about the serviceAccountToken data to - project + description: serviceAccountToken is information about the serviceAccountToken data to project properties: audience: description: |- @@ -11238,9 +10364,7 @@ spec: Defaults to serivceaccount user type: string volume: - description: - volume is a string that references - an already created Quobyte volume by name. + description: volume is a string that references an already created Quobyte volume by name. type: string required: - registry @@ -11334,15 +10458,10 @@ spec: Default is "xfs". type: string gateway: - description: - gateway is the host address of - the ScaleIO API Gateway. + description: gateway is the host address of the ScaleIO API Gateway. type: string protectionDomain: - description: - protectionDomain is the name of - the ScaleIO Protection Domain for the configured - storage. + description: protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. type: string readOnly: description: |- @@ -11366,9 +10485,7 @@ spec: type: object x-kubernetes-map-type: atomic sslEnabled: - description: - sslEnabled Flag enable/disable - SSL communication with Gateway, default false + description: sslEnabled Flag enable/disable SSL communication with Gateway, default false type: boolean storageMode: default: ThinProvisioned @@ -11377,14 +10494,10 @@ spec: Default is ThinProvisioned. type: string storagePool: - description: - storagePool is the ScaleIO Storage - Pool associated with the protection domain. + description: storagePool is the ScaleIO Storage Pool associated with the protection domain. type: string system: - description: - system is the name of the storage - system as configured in ScaleIO. + description: system is the name of the storage system as configured in ScaleIO. type: string volumeName: description: |- @@ -11422,9 +10535,7 @@ spec: the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: - description: - Maps a string key to a path within - a volume. + description: Maps a string key to a path within a volume. properties: key: description: key is the key to project. @@ -11453,9 +10564,7 @@ spec: type: array x-kubernetes-list-type: atomic optional: - description: - optional field specify whether - the Secret or its keys must be defined + description: optional field specify whether the Secret or its keys must be defined type: boolean secretName: description: |- @@ -11523,20 +10632,13 @@ spec: Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: - description: - storagePolicyID is the storage - Policy Based Management (SPBM) profile ID - associated with the StoragePolicyName. + description: storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. type: string storagePolicyName: - description: - storagePolicyName is the storage - Policy Based Management (SPBM) profile name. + description: storagePolicyName is the storage Policy Based Management (SPBM) profile name. type: string volumePath: - description: - volumePath is the path that identifies - vSphere volume vmdk + description: volumePath is the path that identifies vSphere volume vmdk type: string required: - volumePath @@ -11604,9 +10706,7 @@ spec: it set it to true. type: boolean grpcTimeout: - description: - Set the gRPC timeout for gRPC call issued by the - driver components + description: Set the gRPC timeout for gRPC call issued by the driver components minimum: 0 type: integer imageSet: @@ -11690,15 +10790,11 @@ spec: anyOf: - type: integer - type: string - description: - MaxLogSize is the maximum size of the log - file per csi pods + description: MaxLogSize is the maximum size of the log file per csi pods pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true periodicity: - description: - Periodicity is the periodicity of the log - rotation. + description: Periodicity is the periodicity of the log rotation. enum: - hourly - daily @@ -11725,9 +10821,7 @@ spec: description: Pod's affinity settings properties: nodeAffinity: - description: - Describes node affinity scheduling rules - for the pod. + description: Describes node affinity scheduling rules for the pod. properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- @@ -11746,23 +10840,17 @@ spec: (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). properties: preference: - description: - A node selector term, associated - with the corresponding weight. + description: A node selector term, associated with the corresponding weight. properties: matchExpressions: - description: - A list of node selector requirements - by node's labels. + description: A list of node selector requirements by node's labels. items: description: |- A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - The label key that the - selector applies to. + description: The label key that the selector applies to. type: string operator: description: |- @@ -11787,18 +10875,14 @@ spec: type: array x-kubernetes-list-type: atomic matchFields: - description: - A list of node selector requirements - by node's fields. + description: A list of node selector requirements by node's fields. items: description: |- A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - The label key that the - selector applies to. + description: The label key that the selector applies to. type: string operator: description: |- @@ -11825,10 +10909,7 @@ spec: type: object x-kubernetes-map-type: atomic weight: - description: - Weight associated with matching - the corresponding nodeSelectorTerm, in the - range 1-100. + description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. format: int32 type: integer required: @@ -11846,9 +10927,7 @@ spec: may or may not try to eventually evict the pod from its node. properties: nodeSelectorTerms: - description: - Required. A list of node selector - terms. The terms are ORed. + description: Required. A list of node selector terms. The terms are ORed. items: description: |- A null or empty node selector term matches no objects. The requirements of @@ -11856,18 +10935,14 @@ spec: The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. properties: matchExpressions: - description: - A list of node selector requirements - by node's labels. + description: A list of node selector requirements by node's labels. items: description: |- A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - The label key that the - selector applies to. + description: The label key that the selector applies to. type: string operator: description: |- @@ -11892,18 +10967,14 @@ spec: type: array x-kubernetes-list-type: atomic matchFields: - description: - A list of node selector requirements - by node's fields. + description: A list of node selector requirements by node's fields. items: description: |- A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - The label key that the - selector applies to. + description: The label key that the selector applies to. type: string operator: description: |- @@ -11937,10 +11008,7 @@ spec: x-kubernetes-map-type: atomic type: object podAffinity: - description: - Describes pod affinity scheduling rules (e.g. - co-locate this pod in the same node, zone, etc. as some - other pod(s)). + description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- @@ -11954,15 +11022,10 @@ spec: "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: - description: - The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) + description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: - description: - Required. A pod affinity term, - associated with the corresponding weight. + description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: |- @@ -11970,20 +11033,14 @@ spec: If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The - requirements are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label - key that the selector applies - to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -12053,20 +11110,14 @@ spec: An empty selector ({}) matches all namespaces. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The - requirements are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label - key that the selector applies - to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -12156,19 +11207,14 @@ spec: If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The requirements - are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key - that the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -12238,19 +11284,14 @@ spec: An empty selector ({}) matches all namespaces. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The requirements - are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key - that the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -12308,10 +11349,7 @@ spec: x-kubernetes-list-type: atomic type: object podAntiAffinity: - description: - Describes pod anti-affinity scheduling rules - (e.g. avoid putting this pod in the same node, zone, - etc. as some other pod(s)). + description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). properties: preferredDuringSchedulingIgnoredDuringExecution: description: |- @@ -12325,15 +11363,10 @@ spec: "weight" from the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. items: - description: - The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred - node(s) + description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) properties: podAffinityTerm: - description: - Required. A pod affinity term, - associated with the corresponding weight. + description: Required. A pod affinity term, associated with the corresponding weight. properties: labelSelector: description: |- @@ -12341,20 +11374,14 @@ spec: If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The - requirements are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label - key that the selector applies - to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -12424,20 +11451,14 @@ spec: An empty selector ({}) matches all namespaces. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The - requirements are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label - key that the selector applies - to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -12527,19 +11548,14 @@ spec: If it's null, this PodAffinityTerm matches with no Pods. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The requirements - are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key - that the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -12609,19 +11625,14 @@ spec: An empty selector ({}) matches all namespaces. properties: matchExpressions: - description: - matchExpressions is a list - of label selector requirements. The requirements - are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label key - that the selector applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -12685,19 +11696,13 @@ spec: description: Pod's annotations type: object enableSeLinuxHostMount: - description: - Control the host mount of /etc/selinux for csi - plugin pods. Defaults to false + description: Control the host mount of /etc/selinux for csi plugin pods. Defaults to false type: boolean imagePullPolicy: - description: - To indicate the image pull policy to be applied - to all the containers in the csi driver pods. + description: To indicate the image pull policy to be applied to all the containers in the csi driver pods. type: string kubeletDirPath: - description: - kubelet directory path, if kubelet configured - to use other than /var/lib/kubelet path. + description: kubelet directory path, if kubelet configured to use other than /var/lib/kubelet path. type: string labels: additionalProperties: @@ -12711,9 +11716,7 @@ spec: description: Resource requirements for plugin's containers properties: addons: - description: - ResourceRequirements describes the compute - resource requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -12725,9 +11728,7 @@ spec: This field is immutable. It can only be set for containers. items: - description: - ResourceClaim references one entry - in PodSpec.ResourceClaims. + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: |- @@ -12774,9 +11775,7 @@ spec: type: object type: object liveness: - description: - ResourceRequirements describes the compute - resource requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -12788,9 +11787,7 @@ spec: This field is immutable. It can only be set for containers. items: - description: - ResourceClaim references one entry - in PodSpec.ResourceClaims. + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: |- @@ -12837,9 +11834,7 @@ spec: type: object type: object logRotator: - description: - ResourceRequirements describes the compute - resource requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -12851,9 +11846,7 @@ spec: This field is immutable. It can only be set for containers. items: - description: - ResourceClaim references one entry - in PodSpec.ResourceClaims. + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: |- @@ -12900,9 +11893,7 @@ spec: type: object type: object plugin: - description: - ResourceRequirements describes the compute - resource requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -12914,9 +11905,7 @@ spec: This field is immutable. It can only be set for containers. items: - description: - ResourceClaim references one entry - in PodSpec.ResourceClaims. + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: |- @@ -12963,9 +11952,7 @@ spec: type: object type: object registrar: - description: - ResourceRequirements describes the compute - resource requirements. + description: ResourceRequirements describes the compute resource requirements. properties: claims: description: |- @@ -12977,9 +11964,7 @@ spec: This field is immutable. It can only be set for containers. items: - description: - ResourceClaim references one entry - in PodSpec.ResourceClaims. + description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: description: |- @@ -13027,9 +12012,7 @@ spec: type: object type: object serviceAccountName: - description: - Service account name to be used for driver's - pods + description: Service account name to be used for driver's pods type: string tolerations: description: Pod's tolerations list @@ -13075,10 +12058,7 @@ spec: description: Topology settings for the plugin pods properties: domainLabels: - description: - Domain labels define which node labels to - use as domains for CSI nodeplugins to advertise their - domains + description: Domain labels define which node labels to use as domains for CSI nodeplugins to advertise their domains items: type: string type: array @@ -13091,9 +12071,7 @@ spec: Default value is RollingUpdate with MaxAvailabile set to 1 properties: rollingUpdate: - description: - Rolling update config params. Present only - if type = "RollingUpdate". + description: Rolling update config params. Present only if type = "RollingUpdate". properties: maxSurge: anyOf: @@ -13141,21 +12119,15 @@ spec: x-kubernetes-int-or-string: true type: object type: - description: - Type of daemon set update. Can be "RollingUpdate" - or "OnDelete". Default is RollingUpdate. + description: Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is RollingUpdate. type: string type: object volumes: - description: - Volume and volume mount definitions to attach - to the pod + description: Volume and volume mount definitions to attach to the pod items: properties: mount: - description: - VolumeMount describes a mounting of a Volume - within a container. + description: VolumeMount describes a mounting of a Volume within a container. properties: mountPath: description: |- @@ -13215,9 +12187,7 @@ spec: - name type: object volume: - description: - Volume represents a named volume in a pod - that may be accessed by any container in the pod. + description: Volume represents a named volume in a pod that may be accessed by any container in the pod. properties: awsElasticBlockStore: description: |- @@ -13262,19 +12232,13 @@ spec: are redirected to the disk.csi.azure.com CSI driver. properties: cachingMode: - description: - "cachingMode is the Host Caching - mode: None, Read Only, Read Write." + description: "cachingMode is the Host Caching mode: None, Read Only, Read Write." type: string diskName: - description: - diskName is the Name of the data - disk in the blob storage + description: diskName is the Name of the data disk in the blob storage type: string diskURI: - description: - diskURI is the URI of data disk - in the blob storage + description: diskURI is the URI of data disk in the blob storage type: string fsType: default: ext4 @@ -13284,12 +12248,7 @@ spec: Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string kind: - description: - "kind expected values are Shared: - multiple blob disks per storage account Dedicated: - single blob disk per storage account Managed: - azure managed data disk (only in managed availability - set). defaults to shared" + description: "kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared" type: string readOnly: default: false @@ -13313,10 +12272,7 @@ spec: the ReadOnly setting in VolumeMounts. type: boolean secretName: - description: - secretName is the name of secret - that contains Azure Storage Account Name and - Key + description: secretName is the name of secret that contains Azure Storage Account Name and Key type: string shareName: description: shareName is the azure share Name @@ -13339,10 +12295,7 @@ spec: type: array x-kubernetes-list-type: atomic path: - description: - "path is Optional: Used as the - mounted root, rather than the full Ceph tree, - default is /" + description: "path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /" type: string readOnly: description: |- @@ -13424,9 +12377,7 @@ spec: - volumeID type: object configMap: - description: - configMap represents a configMap that - should populate this volume + description: configMap represents a configMap that should populate this volume properties: defaultMode: description: |- @@ -13449,9 +12400,7 @@ spec: the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: - description: - Maps a string key to a path within - a volume. + description: Maps a string key to a path within a volume. properties: key: description: key is the key to project. @@ -13489,17 +12438,12 @@ spec: More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string optional: - description: - optional specify whether the ConfigMap - or its keys must be defined + description: optional specify whether the ConfigMap or its keys must be defined type: boolean type: object x-kubernetes-map-type: atomic csi: - description: - csi (Container Storage Interface) represents - ephemeral storage that is handled by certain external - CSI drivers. + description: csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers. properties: driver: description: |- @@ -13547,9 +12491,7 @@ spec: - driver type: object downwardAPI: - description: - downwardAPI represents downward API - about the pod that should populate this volume + description: downwardAPI represents downward API about the pod that should populate this volume properties: defaultMode: description: |- @@ -13564,31 +12506,18 @@ spec: format: int32 type: integer items: - description: - Items is a list of downward API - volume file + description: Items is a list of downward API volume file items: - description: - DownwardAPIVolumeFile represents - information to create the file containing - the pod field + description: DownwardAPIVolumeFile represents information to create the file containing the pod field properties: fieldRef: - description: - "Required: Selects a field - of the pod: only annotations, labels, - name, namespace and uid are supported." + description: "Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported." properties: apiVersion: - description: - Version of the schema - the FieldPath is written in terms - of, defaults to "v1". + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: - description: - Path of the field to - select in the specified API version. + description: Path of the field to select in the specified API version. type: string required: - fieldPath @@ -13605,13 +12534,7 @@ spec: format: int32 type: integer path: - description: - "Required: Path is the relative - path name of the file to be created. - Must not be absolute or contain the - '..' path. Must be utf-8 encoded. - The first item of the relative path - must not start with '..'" + description: "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'" type: string resourceFieldRef: description: |- @@ -13619,24 +12542,17 @@ spec: (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. properties: containerName: - description: - "Container name: required - for volumes, optional for env vars" + description: "Container name: required for volumes, optional for env vars" type: string divisor: anyOf: - type: integer - type: string - description: - Specifies the output - format of the exposed resources, - defaults to "1" + description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: - "Required: resource to - select" + description: "Required: resource to select" type: string required: - resource @@ -13764,14 +12680,10 @@ spec: For any other third-party types, APIGroup is required. type: string kind: - description: - Kind is the type of - resource being referenced + description: Kind is the type of resource being referenced type: string name: - description: - Name is the name of - resource being referenced + description: Name is the name of resource being referenced type: string required: - kind @@ -13811,14 +12723,10 @@ spec: For any other third-party types, APIGroup is required. type: string kind: - description: - Kind is the type of - resource being referenced + description: Kind is the type of resource being referenced type: string name: - description: - Name is the name of - resource being referenced + description: Name is the name of resource being referenced type: string namespace: description: |- @@ -13864,25 +12772,17 @@ spec: type: object type: object selector: - description: - selector is a label query - over volumes to consider for binding. + description: selector is a label query over volumes to consider for binding. properties: matchExpressions: - description: - matchExpressions is - a list of label selector requirements. - The requirements are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the label - key that the selector applies - to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -13939,10 +12839,7 @@ spec: Value of Filesystem is implied when not included in claim spec. type: string volumeName: - description: - volumeName is the binding - reference to the PersistentVolume - backing this claim. + description: volumeName is the binding reference to the PersistentVolume backing this claim. type: string type: object required: @@ -13950,10 +12847,7 @@ spec: type: object type: object fc: - description: - fc represents a Fibre Channel resource - that is attached to a kubelet's host machine and - then exposed to the pod. + description: fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. properties: fsType: description: |- @@ -13962,9 +12856,7 @@ spec: Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string lun: - description: - "lun is Optional: FC target lun - number" + description: "lun is Optional: FC target lun number" format: int32 type: integer readOnly: @@ -13973,9 +12865,7 @@ spec: the ReadOnly setting in VolumeMounts. type: boolean targetWWNs: - description: - "targetWWNs is Optional: FC target - worldwide names (WWNs)" + description: "targetWWNs is Optional: FC target worldwide names (WWNs)" items: type: string type: array @@ -13996,9 +12886,7 @@ spec: Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead. properties: driver: - description: - driver is the name of the driver - to use for this volume. + description: driver is the name of the driver to use for this volume. type: string fsType: description: |- @@ -14009,9 +12897,7 @@ spec: options: additionalProperties: type: string - description: - "options is Optional: this field - holds extra command options if any." + description: "options is Optional: this field holds extra command options if any." type: object readOnly: description: |- @@ -14051,10 +12937,7 @@ spec: should be considered as deprecated type: string datasetUUID: - description: - datasetUUID is the UUID of the - dataset. This is unique identifier of a Flocker - dataset + description: datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset type: string type: object gcePersistentDisk: @@ -14113,9 +12996,7 @@ spec: description: repository is the URL type: string revision: - description: - revision is the commit hash for - the specified revision. + description: revision is the commit hash for the specified revision. type: string required: - repository @@ -14126,9 +13007,7 @@ spec: Deprecated: Glusterfs is deprecated and the in-tree glusterfs type is no longer supported. properties: endpoints: - description: - endpoints is the endpoint name - that details Glusterfs topology. + description: endpoints is the endpoint name that details Glusterfs topology. type: string path: description: |- @@ -14210,14 +13089,10 @@ spec: More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi properties: chapAuthDiscovery: - description: - chapAuthDiscovery defines whether - support iSCSI Discovery CHAP authentication + description: chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication type: boolean chapAuthSession: - description: - chapAuthSession defines whether - support iSCSI Session CHAP authentication + description: chapAuthSession defines whether support iSCSI Session CHAP authentication type: boolean fsType: description: |- @@ -14233,9 +13108,7 @@ spec: : will be created for the connection. type: string iqn: - description: - iqn is the target iSCSI Qualified - Name. + description: iqn is the target iSCSI Qualified Name. type: string iscsiInterface: default: default @@ -14244,9 +13117,7 @@ spec: Defaults to 'default' (tcp). type: string lun: - description: - lun represents iSCSI Target Lun - number. + description: lun represents iSCSI Target Lun number. format: int32 type: integer portals: @@ -14263,9 +13134,7 @@ spec: Defaults to false. type: boolean secretRef: - description: - secretRef is the CHAP Secret for - iSCSI target and initiator authentication + description: secretRef is the CHAP Secret for iSCSI target and initiator authentication properties: name: default: "" @@ -14350,9 +13219,7 @@ spec: Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string pdID: - description: - pdID is the ID that identifies - Photon Controller persistent disk + description: pdID is the ID that identifies Photon Controller persistent disk type: string required: - pdID @@ -14376,17 +13243,13 @@ spec: the ReadOnly setting in VolumeMounts. type: boolean volumeID: - description: - volumeID uniquely identifies a - Portworx volume + description: volumeID uniquely identifies a Portworx volume type: string required: - volumeID type: object projected: - description: - projected items for all in one resources - secrets, configmaps, and downward API + description: projected items for all in one resources secrets, configmaps, and downward API properties: defaultMode: description: |- @@ -14431,21 +13294,14 @@ spec: everything". properties: matchExpressions: - description: - matchExpressions - is a list of label selector - requirements. The requirements - are ANDed. + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: description: |- A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: - description: - key is the - label key that the selector - applies to. + description: key is the label key that the selector applies to. type: string operator: description: |- @@ -14492,9 +13348,7 @@ spec: ClusterTrustBundles. type: boolean path: - description: - Relative path from the - volume root to write the bundle. + description: Relative path from the volume root to write the bundle. type: string signerName: description: |- @@ -14506,9 +13360,7 @@ spec: - path type: object configMap: - description: - configMap information about - the configMap data to project + description: configMap information about the configMap data to project properties: items: description: |- @@ -14520,14 +13372,10 @@ spec: the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: - description: - Maps a string key to - a path within a volume. + description: Maps a string key to a path within a volume. properties: key: - description: - key is the key - to project. + description: key is the key to project. type: string mode: description: |- @@ -14562,47 +13410,26 @@ spec: More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string optional: - description: - optional specify whether - the ConfigMap or its keys must be - defined + description: optional specify whether the ConfigMap or its keys must be defined type: boolean type: object x-kubernetes-map-type: atomic downwardAPI: - description: - downwardAPI information about - the downwardAPI data to project + description: downwardAPI information about the downwardAPI data to project properties: items: - description: - Items is a list of DownwardAPIVolume - file + description: Items is a list of DownwardAPIVolume file items: - description: - DownwardAPIVolumeFile - represents information to create - the file containing the pod field + description: DownwardAPIVolumeFile represents information to create the file containing the pod field properties: fieldRef: - description: - "Required: Selects - a field of the pod: only annotations, - labels, name, namespace and - uid are supported." + description: "Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported." properties: apiVersion: - description: - Version of - the schema the FieldPath - is written in terms of, - defaults to "v1". + description: Version of the schema the FieldPath is written in terms of, defaults to "v1". type: string fieldPath: - description: - Path of the - field to select in the - specified API version. + description: Path of the field to select in the specified API version. type: string required: - fieldPath @@ -14619,15 +13446,7 @@ spec: format: int32 type: integer path: - description: - "Required: Path - is the relative path name - of the file to be created. - Must not be absolute or contain - the '..' path. Must be utf-8 - encoded. The first item of - the relative path must not - start with '..'" + description: "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'" type: string resourceFieldRef: description: |- @@ -14635,26 +13454,17 @@ spec: (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. properties: containerName: - description: - "Container - name: required for volumes, - optional for env vars" + description: "Container name: required for volumes, optional for env vars" type: string divisor: anyOf: - type: integer - type: string - description: - Specifies the - output format of the exposed - resources, defaults to - "1" + description: Specifies the output format of the exposed resources, defaults to "1" pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true resource: - description: - "Required: - resource to select" + description: "Required: resource to select" type: string required: - resource @@ -14764,9 +13574,7 @@ spec: format: int32 type: integer signerName: - description: - Kubelet's generated CSRs - will be addressed to this signer. + description: Kubelet's generated CSRs will be addressed to this signer. type: string userAnnotations: additionalProperties: @@ -14791,9 +13599,7 @@ spec: - signerName type: object secret: - description: - secret information about - the secret data to project + description: secret information about the secret data to project properties: items: description: |- @@ -14805,14 +13611,10 @@ spec: the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: - description: - Maps a string key to - a path within a volume. + description: Maps a string key to a path within a volume. properties: key: - description: - key is the key - to project. + description: key is the key to project. type: string mode: description: |- @@ -14847,18 +13649,12 @@ spec: More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names type: string optional: - description: - optional field specify - whether the Secret or its key must - be defined + description: optional field specify whether the Secret or its key must be defined type: boolean type: object x-kubernetes-map-type: atomic serviceAccountToken: - description: - serviceAccountToken is information - about the serviceAccountToken data to - project + description: serviceAccountToken is information about the serviceAccountToken data to project properties: audience: description: |- @@ -14921,9 +13717,7 @@ spec: Defaults to serivceaccount user type: string volume: - description: - volume is a string that references - an already created Quobyte volume by name. + description: volume is a string that references an already created Quobyte volume by name. type: string required: - registry @@ -15017,15 +13811,10 @@ spec: Default is "xfs". type: string gateway: - description: - gateway is the host address of - the ScaleIO API Gateway. + description: gateway is the host address of the ScaleIO API Gateway. type: string protectionDomain: - description: - protectionDomain is the name of - the ScaleIO Protection Domain for the configured - storage. + description: protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. type: string readOnly: description: |- @@ -15049,9 +13838,7 @@ spec: type: object x-kubernetes-map-type: atomic sslEnabled: - description: - sslEnabled Flag enable/disable - SSL communication with Gateway, default false + description: sslEnabled Flag enable/disable SSL communication with Gateway, default false type: boolean storageMode: default: ThinProvisioned @@ -15060,14 +13847,10 @@ spec: Default is ThinProvisioned. type: string storagePool: - description: - storagePool is the ScaleIO Storage - Pool associated with the protection domain. + description: storagePool is the ScaleIO Storage Pool associated with the protection domain. type: string system: - description: - system is the name of the storage - system as configured in ScaleIO. + description: system is the name of the storage system as configured in ScaleIO. type: string volumeName: description: |- @@ -15105,9 +13888,7 @@ spec: the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. items: - description: - Maps a string key to a path within - a volume. + description: Maps a string key to a path within a volume. properties: key: description: key is the key to project. @@ -15136,9 +13917,7 @@ spec: type: array x-kubernetes-list-type: atomic optional: - description: - optional field specify whether - the Secret or its keys must be defined + description: optional field specify whether the Secret or its keys must be defined type: boolean secretName: description: |- @@ -15206,20 +13985,13 @@ spec: Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. type: string storagePolicyID: - description: - storagePolicyID is the storage - Policy Based Management (SPBM) profile ID - associated with the StoragePolicyName. + description: storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. type: string storagePolicyName: - description: - storagePolicyName is the storage - Policy Based Management (SPBM) profile name. + description: storagePolicyName is the storage Policy Based Management (SPBM) profile name. type: string volumePath: - description: - volumePath is the path that identifies - vSphere volume vmdk + description: volumePath is the path that identifies vSphere volume vmdk type: string required: - volumePath @@ -15231,9 +14003,7 @@ spec: type: array type: object snapshotPolicy: - description: - "Select a policy for snapshot behavior: none, autodetect, - snapshot, sanpshotGroup" + description: "Select a policy for snapshot behavior: none, autodetect, snapshot, sanpshotGroup" enum: - none - volumeGroupSnapshot @@ -15241,9 +14011,7 @@ spec: type: string type: object log: - description: - OperatorLogSpec provide log related settings for the - operator + description: OperatorLogSpec provide log related settings for the operator properties: verbosity: description: Operator's log level @@ -15296,6 +14064,18 @@ metadata: --- apiVersion: v1 kind: ServiceAccount +metadata: + name: ceph-csi-nvmeof-ctrlplugin-sa + namespace: rook-ceph # namespace:operator +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ceph-csi-nvmeof-nodeplugin-sa + namespace: rook-ceph # namespace:operator +--- +apiVersion: v1 +kind: ServiceAccount metadata: name: ceph-csi-rbd-ctrlplugin-sa namespace: rook-ceph # namespace:operator @@ -15518,6 +14298,91 @@ rules: - update --- apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: ceph-csi-nvmeof-ctrlplugin-r + namespace: rook-ceph # namespace:operator +rules: + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - watch + - list + - delete + - update + - create + - apiGroups: + - csiaddons.openshift.io + resources: + - csiaddonsnodes + verbs: + - get + - watch + - list + - create + - update + - delete + - apiGroups: + - "" + resources: + - pods + verbs: + - get + - apiGroups: + - apps + resources: + - replicasets + verbs: + - get + - apiGroups: + - apps + resources: + - deployments/finalizers + - daemonsets/finalizers + verbs: + - update +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: ceph-csi-nvmeof-nodeplugin-r + namespace: rook-ceph # namespace:operator +rules: + - apiGroups: + - csiaddons.openshift.io + resources: + - csiaddonsnodes + verbs: + - get + - watch + - list + - create + - update + - delete + - apiGroups: + - "" + resources: + - pods + verbs: + - get + - apiGroups: + - apps + resources: + - replicasets + verbs: + - get + - apiGroups: + - apps + resources: + - deployments/finalizers + - daemonsets/finalizers + verbs: + - update +--- +apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: @@ -16631,6 +15496,314 @@ rules: - get --- apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: ceph-csi-nvmeof-ctrlplugin-cr +rules: + - apiGroups: + - "" + resources: + - secrets + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - persistentvolumes + verbs: + - get + - list + - watch + - create + - delete + - patch + - update + - apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - get + - list + - watch + - update + - apiGroups: + - storage.k8s.io + resources: + - storageclasses + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - events + verbs: + - list + - watch + - create + - update + - patch + - apiGroups: + - storage.k8s.io + resources: + - volumeattachments + verbs: + - get + - list + - watch + - patch + - apiGroups: + - storage.k8s.io + resources: + - volumeattachments/status + verbs: + - patch + - apiGroups: + - "" + resources: + - nodes + verbs: + - get + - list + - watch + - apiGroups: + - storage.k8s.io + resources: + - csinodes + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - persistentvolumeclaims/status + verbs: + - patch + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshots + verbs: + - get + - list + - watch + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshotclasses + verbs: + - get + - list + - watch + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshotcontents + verbs: + - get + - list + - watch + - patch + - update + - apiGroups: + - snapshot.storage.k8s.io + resources: + - volumesnapshotcontents/status + verbs: + - update + - patch + - apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - get + - apiGroups: + - "" + resources: + - serviceaccounts/token + verbs: + - create + - apiGroups: + - groupsnapshot.storage.k8s.io + resources: + - volumegroupsnapshotclasses + verbs: + - get + - list + - watch + - apiGroups: + - groupsnapshot.storage.k8s.io + resources: + - volumegroupsnapshotcontents + verbs: + - get + - list + - watch + - update + - patch + - apiGroups: + - groupsnapshot.storage.k8s.io + resources: + - volumegroupsnapshotcontents/status + verbs: + - update + - patch + - apiGroups: + - groupsnapshot.storage.openshift.io + resources: + - volumegroupsnapshotclasses + verbs: + - get + - list + - watch + - apiGroups: + - groupsnapshot.storage.openshift.io + resources: + - volumegroupsnapshotcontents + verbs: + - get + - list + - watch + - update + - patch + - apiGroups: + - groupsnapshot.storage.openshift.io + resources: + - volumegroupsnapshotcontents/status + verbs: + - update + - patch + - apiGroups: + - replication.storage.openshift.io + resources: + - volumegroupreplicationcontents + verbs: + - get + - list + - watch + - apiGroups: + - replication.storage.openshift.io + resources: + - volumegroupreplicationclasses + verbs: + - get + - list + - watch + - apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create + - apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create + - apiGroups: + - cbt.storage.k8s.io + resources: + - snapshotmetadataservices + verbs: + - get + - list + - apiGroups: + - storage.k8s.io + resources: + - volumeattributesclasses + verbs: + - get + - list + - watch +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: ceph-csi-nvmeof-nodeplugin-cr +rules: + - apiGroups: + - "" + resources: + - secrets + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - persistentvolumes + verbs: + - get + - list + - apiGroups: + - storage.k8s.io + resources: + - volumeattachments + verbs: + - get + - list + - apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - apiGroups: + - "" + resources: + - serviceaccounts + verbs: + - get + - apiGroups: + - "" + resources: + - serviceaccounts/token + verbs: + - create + - apiGroups: + - "" + resources: + - nodes + verbs: + - get + - apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create + - apiGroups: + - "" + resources: + - events + verbs: + - list + - watch + - create + - update + - patch + - apiGroups: + - "" + resources: + - persistentvolumeclaims + verbs: + - get +--- +apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: ceph-csi-cephfs-ctrlplugin-rb @@ -16677,6 +15850,34 @@ subjects: --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding +metadata: + name: ceph-csi-nvmeof-ctrlplugin-rb + namespace: rook-ceph # namespace:operator +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: ceph-csi-nvmeof-ctrlplugin-r +subjects: + - kind: ServiceAccount + name: ceph-csi-nvmeof-ctrlplugin-sa + namespace: rook-ceph # namespace:operator +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: ceph-csi-nvmeof-nodeplugin-rb + namespace: rook-ceph # namespace:operator +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: ceph-csi-nvmeof-nodeplugin-r +subjects: + - kind: ServiceAccount + name: ceph-csi-nvmeof-nodeplugin-sa + namespace: rook-ceph # namespace:operator +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding metadata: name: ceph-csi-rbd-ctrlplugin-rb namespace: rook-ceph # namespace:operator @@ -16789,6 +15990,32 @@ subjects: --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding +metadata: + name: ceph-csi-nvmeof-ctrlplugin-crb +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: ceph-csi-nvmeof-ctrlplugin-cr +subjects: + - kind: ServiceAccount + name: ceph-csi-nvmeof-ctrlplugin-sa + namespace: rook-ceph # namespace:operator +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: ceph-csi-nvmeof-nodeplugin-crb +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: ceph-csi-nvmeof-nodeplugin-cr +subjects: + - kind: ServiceAccount + name: ceph-csi-nvmeof-nodeplugin-sa + namespace: rook-ceph # namespace:operator +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding metadata: name: ceph-csi-rbd-ctrlplugin-crb roleRef: @@ -16848,7 +16075,7 @@ spec: value: ceph-csi- - name: WATCH_NAMESPACE value: "" - image: quay.io/cephcsi/ceph-csi-operator:v0.5.0 + image: quay.io/cephcsi/ceph-csi-operator:v0.6.0 livenessProbe: httpGet: path: /healthz diff --git a/deploy/examples/csi/nvmeof/driver.yaml b/deploy/examples/csi/nvmeof/driver.yaml new file mode 100644 index 000000000..4caa02ebe --- /dev/null +++ b/deploy/examples/csi/nvmeof/driver.yaml @@ -0,0 +1,8 @@ +apiVersion: csi.ceph.io/v1 +kind: Driver +metadata: + name: rook-ceph.nvmeof.csi.ceph.com + namespace: rook-ceph # namespace:operator +spec: + controllerPlugin: + hostNetwork: false diff --git a/deploy/examples/csi/nvmeof/node-plugin.yaml b/deploy/examples/csi/nvmeof/node-plugin.yaml deleted file mode 100644 index 2ad2fe41a..000000000 --- a/deploy/examples/csi/nvmeof/node-plugin.yaml +++ /dev/null @@ -1,202 +0,0 @@ ---- -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: nvmeof.csi.ceph.com-nodeplugin - namespace: rook-ceph -spec: - revisionHistoryLimit: 10 - selector: - matchLabels: - app: nvmeof.csi.ceph.com-nodeplugin - template: - metadata: - labels: - app: nvmeof.csi.ceph.com-nodeplugin - spec: - containers: - - args: - - --v=5 - - --type=nvmeof - - --nodeserver=true - - --nodeid=$(NODE_ID) - - --drivername=nvmeof.csi.ceph.com - - --endpoint=unix:///csi/csi.sock - - --pidlimit=-1 - - --csi-addons-endpoint=unix:///csi/csi-addons.sock - - --stagingpath=/var/lib/kubelet/plugins/kubernetes.io/csi/ - - --logtostderr=false - - --alsologtostderr=true - - --log_file=csi-logs/csi-nvmeofplugin.log - env: - - name: POD_IP - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: status.podIP - - name: NODE_ID - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: spec.nodeName - - name: POD_NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - image: quay.io/cephcsi/cephcsi:v3.16.2 - imagePullPolicy: Always - name: csi-nvmeofplugin - resources: {} - securityContext: - allowPrivilegeEscalation: true - capabilities: - add: - - SYS_ADMIN - drop: - - All - privileged: true - terminationMessagePath: /dev/termination-log - terminationMessagePolicy: File - volumeMounts: - - mountPath: /dev - name: host-dev - - mountPath: /sys - name: host-sys - - mountPath: /run/mount - name: host-run-mount - - mountPath: /lib/modules - name: lib-modules - readOnly: true - - mountPath: /tmp/csi/keys - name: keys-tmp-dir - - mountPath: /csi - name: plugin-dir - # FIXED: Mount path should end with / to mount as directory - - mountPath: /etc/ceph-csi-config/ - name: ceph-csi-config - - mountPath: /var/lib/kubelet/plugins - mountPropagation: Bidirectional - name: plugin-mount-dir - - mountPath: /var/lib/kubelet/pods - mountPropagation: Bidirectional - name: pods-mount-dir - - mountPath: /etc/selinux - name: etc-selinux - readOnly: true - - mountPath: /run/secrets/tokens - name: oidc-token - readOnly: true - - mountPath: /csi-logs - name: logs-dir - # Log rotation mount - commented out since ConfigMap is optional - # - mountPath: /etc/logrotate.d - # name: log-rotate-dir - # readOnly: true - - args: - - "--v=1" - - "--csi-address=/csi/csi.sock" - - "--kubelet-registration-path=/var/lib/kubelet/plugins/nvmeof.csi.ceph.com/csi.sock" - image: registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.13.0 - imagePullPolicy: IfNotPresent - name: driver-registrar - resources: {} - securityContext: - capabilities: - drop: - - All - privileged: true - terminationMessagePath: /dev/termination-log - terminationMessagePolicy: File - volumeMounts: - - mountPath: /csi - name: plugin-dir - - mountPath: /registration - name: registration-dir - dnsPolicy: ClusterFirstWithHostNet - hostNetwork: true - hostPID: true - priorityClassName: system-node-critical - restartPolicy: Always - schedulerName: default-scheduler - securityContext: {} - # FIXED: Use rook-csi-rbd-plugin-sa since nvmeof uses RBD backend - # This service account already exists and has the necessary permissions - serviceAccount: rook-csi-rbd-plugin-sa - serviceAccountName: rook-csi-rbd-plugin-sa - terminationGracePeriodSeconds: 30 - # tolerations: - # - effect: NoSchedule - # key: node.ocs.openshift.io/storage - # operator: Equal - # value: "true" - volumes: - - hostPath: - path: /dev - type: "" - name: host-dev - - hostPath: - path: /sys - type: "" - name: host-sys - - hostPath: - path: /run/mount - type: "" - name: host-run-mount - - hostPath: - path: /lib/modules - type: "" - name: lib-modules - - emptyDir: - medium: Memory - name: keys-tmp-dir - # FIXED: Use rook-ceph-csi-config instead of ceph-csi-config - # This ConfigMap contains the cluster configuration with monitor endpoints - - configMap: - name: rook-ceph-csi-config - items: - - key: csi-cluster-config-json - path: config.json - name: ceph-csi-config - - hostPath: - path: /var/lib/kubelet/plugins/nvmeof.csi.ceph.com - type: DirectoryOrCreate - name: plugin-dir - - hostPath: - path: /var/lib/kubelet/plugins - type: Directory - name: plugin-mount-dir - - hostPath: - path: /var/lib/kubelet/pods - type: Directory - name: pods-mount-dir - - hostPath: - path: /var/lib/kubelet/plugins_registry - type: Directory - name: registration-dir - - hostPath: - path: /etc/selinux - type: "" - name: etc-selinux - - name: oidc-token - projected: - defaultMode: 420 - sources: - - serviceAccountToken: - audience: ceph-csi-kms - expirationSeconds: 3600 - path: oidc-token - - hostPath: - path: /var/lib/cephcsi/nvmeof.csi.ceph.com-nodeplugin - type: DirectoryOrCreate - name: logs-dir - # Log rotation ConfigMap - optional, can be created if log rotation is needed - # - configMap: - # defaultMode: 420 - # name: nvmeof.csi.ceph.com-logrotate-config - # name: log-rotate-dir - updateStrategy: - rollingUpdate: - maxSurge: 0 - maxUnavailable: 1 - type: RollingUpdate diff --git a/deploy/examples/csi/nvmeof/provisioner.yaml b/deploy/examples/csi/nvmeof/provisioner.yaml deleted file mode 100644 index a3f49241f..000000000 --- a/deploy/examples/csi/nvmeof/provisioner.yaml +++ /dev/null @@ -1,339 +0,0 @@ ---- -kind: ServiceAccount -apiVersion: v1 -metadata: - name: nvmeof-csi-provisioner - # replace with non-default namespace name - namespace: rook-ceph - ---- -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: nvmeof-external-provisioner-runner -rules: - - apiGroups: [""] - resources: ["nodes"] - verbs: ["get", "list", "watch"] - - apiGroups: [""] - resources: ["secrets"] - verbs: ["get", "list", "watch"] - - apiGroups: [""] - resources: ["events"] - verbs: ["list", "watch", "create", "update", "patch"] - - apiGroups: ["events.k8s.io"] - resources: ["events"] - verbs: ["create", "patch", "update"] - - apiGroups: [""] - resources: ["persistentvolumes"] - verbs: ["get", "list", "watch", "create", "update", "delete", "patch"] - - apiGroups: [""] - resources: ["persistentvolumeclaims"] - verbs: ["get", "list", "watch", "update"] - - apiGroups: [""] - resources: ["persistentvolumeclaims/status"] - verbs: ["update", "patch"] - - apiGroups: ["storage.k8s.io"] - resources: ["storageclasses"] - verbs: ["get", "list", "watch"] - - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshots"] - verbs: ["get", "list", "watch", "update", "patch", "create"] - - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshots/status"] - verbs: ["get", "list", "patch"] - - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshotcontents"] - verbs: ["create", "get", "list", "watch", "update", "delete", "patch"] - - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshotclasses"] - verbs: ["get", "list", "watch"] - - apiGroups: ["storage.k8s.io"] - resources: ["volumeattachments"] - verbs: ["get", "list", "watch", "update", "patch"] - - apiGroups: ["storage.k8s.io"] - resources: ["volumeattachments/status"] - verbs: ["patch"] - - apiGroups: ["storage.k8s.io"] - resources: ["csinodes"] - verbs: ["get", "list", "watch"] - - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshotcontents/status"] - verbs: ["update", "patch"] - - apiGroups: [""] - resources: ["configmaps"] - verbs: ["get"] - - apiGroups: [""] - resources: ["serviceaccounts"] - verbs: ["get"] - - apiGroups: [""] - resources: ["serviceaccounts/token"] - verbs: ["create"] - - apiGroups: ["groupsnapshot.storage.k8s.io"] - resources: ["volumegroupsnapshotclasses"] - verbs: ["get", "list", "watch"] - - apiGroups: ["groupsnapshot.storage.k8s.io"] - resources: ["volumegroupsnapshotcontents"] - verbs: ["get", "list", "watch", "update", "patch"] - - apiGroups: ["groupsnapshot.storage.k8s.io"] - resources: ["volumegroupsnapshotcontents/status"] - verbs: ["update", "patch"] - - apiGroups: ["replication.storage.openshift.io"] - resources: ["volumegroupreplicationcontents"] - verbs: ["get", "list", "watch"] - - apiGroups: ["replication.storage.openshift.io"] - resources: ["volumegroupreplicationclasses"] - verbs: ["get"] - - apiGroups: ["storage.k8s.io"] - resources: ["volumeattributesclasses"] - verbs: ["get", "list", "watch"] - - apiGroups: [""] - resources: ["persistentvolumeclaims/status"] - verbs: ["patch"] ---- -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: nvmeof-csi-provisioner-role -subjects: - - kind: ServiceAccount - name: nvmeof-csi-provisioner - # replace with non-default namespace name - namespace: rook-ceph -roleRef: - kind: ClusterRole - name: nvmeof-external-provisioner-runner - apiGroup: rbac.authorization.k8s.io ---- -kind: Role -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - # replace with non-default namespace name - namespace: rook-ceph - name: nvmeof-external-provisioner-cfg -rules: - - apiGroups: [""] - resources: ["configmaps"] - verbs: ["get", "list", "watch", "create", "update", "delete"] - - apiGroups: ["coordination.k8s.io"] - resources: ["leases"] - verbs: ["get", "watch", "list", "delete", "update", "create"] ---- -kind: RoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: nvmeof-csi-provisioner-role-cfg - # replace with non-default namespace name - namespace: rook-ceph -subjects: - - kind: ServiceAccount - name: nvmeof-csi-provisioner - # replace with non-default namespace name - namespace: rook-ceph -roleRef: - kind: Role - name: nvmeof-external-provisioner-cfg - apiGroup: rbac.authorization.k8s.io -# --- -# # ssc based on the Ceph-CSI ssc -# # the "users:" contains a reference to the "rook-ceph" namespace -# # -# kind: SecurityContextConstraints -# apiVersion: security.openshift.io/v1 -# metadata: -# name: "ceph-nvmeof-provisioner" -# # To allow running privilegedContainers -# allowPrivilegedContainer: true -# # SYS_ADMIN is needed for rbd to execute rbd map command -# allowedCapabilities: -# - "SYS_ADMIN" -# # Set to false as we write to RootFilesystem inside container -# readOnlyRootFilesystem: false -# requiredDropCapabilities: -# - ALL -# # The type of volumes which are mounted to csi pods -# volumes: -# - configMap -# - projected -# - emptyDir -# runAsUser: -# type: RunAsAny -# seLinuxContext: -# type: RunAsAny -# users: -# # A user needs to be added for each service account. -# - "system:serviceaccount:rook-ceph:nvmeof-csi-provisioner" ---- -kind: Deployment -apiVersion: apps/v1 -metadata: - name: csi-nvmeofplugin-provisioner - # replace with non-default namespace name - namespace: rook-ceph -spec: - replicas: 1 - selector: - matchLabels: - app: csi-nvmeofplugin-provisioner - template: - metadata: - annotations: - openshift.io/scc: rook-ceph-csi - labels: - app: csi-nvmeofplugin-provisioner - spec: - affinity: - podAntiAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: app - operator: In - values: - - csi-nvmeofplugin-provisioner - topologyKey: "kubernetes.io/hostname" - serviceAccountName: nvmeof-csi-provisioner - priorityClassName: system-cluster-critical - containers: - - name: csi-nvmeofplugin - # for stable functionality replace canary with latest release version - # image: quay.io/gdidi/cephcsi:nvmeof - image: quay.io/cephcsi/cephcsi:v3.16.2 - command: ["/usr/local/bin/cephcsi"] - args: - - "--nodeid=$(NODE_ID)" - - "--type=nvmeof" - - "--controllerserver=true" - - "--endpoint=$(CSI_ENDPOINT)" - - "--v=5" - - "--drivername=nvmeof.csi.ceph.com" - - "--pidlimit=-1" - - "--rbdhardmaxclonedepth=8" - - "--rbdsoftmaxclonedepth=4" - - "--enableprofiling=false" - - "--setmetadata=true" - env: - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - - name: NODE_ID - valueFrom: - fieldRef: - fieldPath: spec.nodeName - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: CSI_ENDPOINT - value: unix:///csi/csi-provisioner.sock - imagePullPolicy: "IfNotPresent" - securityContext: - privileged: true - capabilities: - drop: - - ALL - volumeMounts: - - name: socket-dir - mountPath: /csi - - name: ceph-csi-config - mountPath: /etc/ceph-csi-config/ - - name: keys-tmp-dir - mountPath: /tmp/csi/keys - - name: oidc-token - mountPath: /run/secrets/tokens - readOnly: true - - name: csi-provisioner - # image: registry.k8s.io/sig-storage/csi-provisioner:v5.1.0 - image: quay.io/nixpanic/csi-provisioner:pr1440 - args: - - "--csi-address=$(ADDRESS)" - - "--v=1" - - "--timeout=150s" - - "--retry-interval-start=500ms" - - "--leader-election=true" - - "--feature-gates=HonorPVReclaimPolicy=true" - - "--prevent-volume-mode-conversion=true" - # if fstype is not specified in storageclass, ext4 is default - - "--default-fstype=ext4" - - "--extra-create-metadata=true" - - "--immediate-topology=false" - - "--http-endpoint=$(POD_IP):8090" - env: - - name: ADDRESS - value: unix:///csi/csi-provisioner.sock - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - imagePullPolicy: "IfNotPresent" - ports: - - containerPort: 8090 - name: provisioner - protocol: TCP - volumeMounts: - - name: socket-dir - mountPath: /csi - - name: csi-attacher - image: registry.k8s.io/sig-storage/csi-attacher:v4.8.0 - args: - - "--v=1" - - "--csi-address=$(ADDRESS)" - - "--leader-election=true" - - "--retry-interval-start=500ms" - - "--default-fstype=ext4" - - "--http-endpoint=$(POD_IP):8093" - env: - - name: ADDRESS - value: /csi/csi-provisioner.sock - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - imagePullPolicy: "IfNotPresent" - ports: - - containerPort: 8093 - name: attacher - protocol: TCP - volumeMounts: - - name: socket-dir - mountPath: /csi - - name: csi-resizer - image: quay.io/nixpanic/csi-resizer:pr544 - # image: registry.k8s.io/sig-storage/csi-resizer:v1.12.0 - args: - - "--csi-address=$(ADDRESS)" - - "--v=5" - - "--leader-election=true" - - "--handle-volume-inuse-error=false" - - "--feature-gates=VolumeAttributesClass=true" - env: - - name: ADDRESS - value: unix:///csi/csi-provisioner.sock - volumeMounts: - - name: socket-dir - mountPath: /csi - volumes: - - name: socket-dir - emptyDir: - medium: "Memory" - # FIXED: Mount rook-ceph-csi-config instead of rook-ceph-nvmeof-*-config - # This ConfigMap contains the cluster configuration with monitor endpoints - # that Ceph-CSI needs to connect to the Ceph cluster - - name: ceph-csi-config - configMap: - name: rook-ceph-csi-config - items: - - key: csi-cluster-config-json - path: config.json - - name: keys-tmp-dir - emptyDir: - medium: "Memory" - # Only if nvmeof support encryption - - name: oidc-token - projected: - sources: - - serviceAccountToken: - path: oidc-token - expirationSeconds: 3600 - audience: ceph-csi-kms diff --git a/deploy/examples/csi/nvmeof/storageclass.yaml b/deploy/examples/csi/nvmeof/storageclass.yaml index 2f6691ffd..ffe19a569 100644 --- a/deploy/examples/csi/nvmeof/storageclass.yaml +++ b/deploy/examples/csi/nvmeof/storageclass.yaml @@ -7,7 +7,7 @@ parameters: pool: nvmeof subsystemNQN: nqn.2016-06.io.spdk:cnode1.rook-ceph # Management API - talks to gateway to create subsystems/namespaces - nvmeofGatewayAddress: "172.30.47.120" + nvmeofGatewayAddress: "rook-ceph-nvmeof-nvmeof-a.rook-ceph.svc.cluster.local" nvmeofGatewayPort: "5500" # Data Plane - worker nodes connect here for actual I/O # List ALL gateway pods for HA and multipath @@ -27,7 +27,7 @@ parameters: csi.storage.k8s.io/node-expand-secret-namespace: rook-ceph imageFormat: "2" imageFeatures: layering,deep-flatten,exclusive-lock,object-map,fast-diff -provisioner: nvmeof.csi.ceph.com +provisioner: rook-ceph.nvmeof.csi.ceph.com reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: true diff --git a/deploy/examples/images.txt b/deploy/examples/images.txt index 6021ba160..ba226900b 100644 --- a/deploy/examples/images.txt +++ b/deploy/examples/images.txt @@ -2,7 +2,7 @@ gcr.io/k8s-staging-sig-storage/objectstorage-sidecar:v20240513-v0.1.0-35-gefb3255 quay.io/ceph/ceph:v19.2.3 quay.io/ceph/cosi:v0.1.2 - quay.io/cephcsi/ceph-csi-operator:v0.5.0 + quay.io/cephcsi/ceph-csi-operator:v0.6.0 quay.io/cephcsi/cephcsi:v3.16.2 quay.io/csiaddons/k8s-sidecar:v0.14.0 registry.k8s.io/sig-storage/csi-attacher:v4.11.0 diff --git a/deploy/examples/operator-openshift.yaml b/deploy/examples/operator-openshift.yaml index 0708d4d7a..095f5d091 100644 --- a/deploy/examples/operator-openshift.yaml +++ b/deploy/examples/operator-openshift.yaml @@ -104,6 +104,8 @@ users: - system:serviceaccount:rook-ceph:ceph-csi-cephfs-nodeplugin-sa # serviceaccount:namespace:operator - system:serviceaccount:rook-ceph:ceph-csi-nfs-ctrlplugin-sa # serviceaccount:namespace:operator - system:serviceaccount:rook-ceph:ceph-csi-nfs-nodeplugin-sa # serviceaccount:namespace:operator + - system:serviceaccount:rook-ceph:ceph-csi-nvmeof-ctrlplugin-sa # serviceaccount:namespace:operator + - system:serviceaccount:rook-ceph:ceph-csi-nvmeof-nodeplugin-sa # serviceaccount:namespace:operator - system:serviceaccount:rook-ceph:ceph-csi-rbd-ctrlplugin-sa # serviceaccount:namespace:operator - system:serviceaccount:rook-ceph:ceph-csi-rbd-nodeplugin-sa # serviceaccount:namespace:operator --- diff --git a/tests/scripts/github-action-helper.sh b/tests/scripts/github-action-helper.sh index da5ae8a7e..cbea506ca 100755 --- a/tests/scripts/github-action-helper.sh +++ b/tests/scripts/github-action-helper.sh @@ -755,10 +755,6 @@ function test_csi_nfs_workload { function test_csi_nvmeof_workload { cd "${REPO_DIR}/deploy/examples/csi/nvmeof" - local cephcsi_image="${1:-quay.io/nixpanic/cephcsi:nvmeof}" - local gateway_svc="rook-ceph-nvmeof-nvmeof-a" - local gateway_listener_hostname="rook-ceph-nvmeof-nvmeof-a" - local service_ip local old_gateway_pod sed -i 's/failureDomain: .*/failureDomain: osd/' nvmeof-pool.yaml @@ -769,52 +765,47 @@ function test_csi_nvmeof_workload { kubectl create -f "${REPO_DIR}/deploy/examples/nvmeof-test.yaml" wait_for cephnvmeofgateway nvmeof rook-ceph 600 timeout 300 bash </dev/null | awk '/rook-ceph-nvmeof-nvmeof-a-/ && \$3 == "Running" {f=1} END {exit !f}'; do echo "waiting for NVMe-oF gateway pod to be running" sleep 5 done EOF - service_ip="$(kubectl -n rook-ceph get svc "${gateway_svc}" -o jsonpath='{.spec.clusterIP}')" - if [[ -z "${service_ip}" ]]; then - echo "failed to discover gateway service IP for ${gateway_svc}" - exit 1 + # ceph-csi-operator creates these deployments, make sure they are available + + timeout 300 bash </dev/null | grep -q "nvmeof"; do + echo "waiting for CSI operator to create NVMe-oF controller plugin deployment" + sleep 5 +done +EOF + + kubectl -n rook-ceph wait --for=condition=available \ + deployment/rook-ceph.nvmeof.csi.ceph.com-ctrlplugin --timeout=300s + + timeout 300 bash </dev/null | grep -q "nvmeof"; do + echo "waiting for CSI operator to create NVMe-oF node plugin daemonset" + sleep 5 +done +EOF + + kubectl -n rook-ceph rollout status \ + daemonset/rook-ceph.nvmeof.csi.ceph.com-nodeplugin --timeout=300s + + lsmod | grep -E 'nvme(_|-)(tcp|fabrics)' || true + if [[ ! -d /sys/module/nvme_tcp ]]; then + echo "nvme_tcp kernel module is required but unavailable on kernel $(uname -r)" + return 1 fi - sed -i "s|nvmeofGatewayAddress: \".*\"|nvmeofGatewayAddress: \"${service_ip}\"|g" storageclass.yaml - # ceph-csi PR 6061 expects listeners to include hostname only. - sed -i '/"address":/d' storageclass.yaml - sed -i '/"port":/d' storageclass.yaml - sed -i "s|\"hostname\": \".*\"|\"hostname\": \"${gateway_listener_hostname}\"|g" storageclass.yaml - sed -i "s|image: quay.io/cephcsi/cephcsi:.*|image: ${cephcsi_image}|g" provisioner.yaml - sed -i "s|image: quay.io/cephcsi/cephcsi:.*|image: ${cephcsi_image}|g" node-plugin.yaml - - kubectl create -f provisioner.yaml - kubectl -n rook-ceph wait --for=condition=available deployment/csi-nvmeofplugin-provisioner --timeout=300s - kubectl create -f storageclass.yaml kubectl create -f pvc.yaml if ! kubectl wait pvc/nvmeof-external-volume --for=jsonpath='{.status.phase}'=Bound --timeout=300s; then echo "PVC nvmeof-external-volume did not reach Bound; collecting diagnostics..." kubectl describe pvc nvmeof-external-volume || true kubectl get events -n default --sort-by=.metadata.creationTimestamp | tail -n 50 || true - kubectl -n rook-ceph logs deploy/csi-nvmeofplugin-provisioner -c csi-provisioner --tail=200 || true - kubectl -n rook-ceph logs deploy/csi-nvmeofplugin-provisioner -c csi-nvmeofplugin --tail=200 || true - return 1 - fi - - # Sanity check module availability; prerequisites are installed earlier in CI setup. - lsmod | grep -E 'nvme(_|-)(tcp|fabrics)' || true - if [[ ! -d /sys/module/nvme_tcp ]]; then - echo "nvme_tcp kernel module is required but unavailable on kernel $(uname -r)" - return 1 - fi - - kubectl create -f node-plugin.yaml - if ! kubectl -n rook-ceph rollout status daemonset/nvmeof.csi.ceph.com-nodeplugin --timeout=300s; then - kubectl -n rook-ceph get pods -l app=nvmeof.csi.ceph.com-nodeplugin -o wide || true - kubectl -n rook-ceph describe daemonset nvmeof.csi.ceph.com-nodeplugin || true - echo "nvmeof nodeplugin daemonset failed to become ready" + kubectl -n rook-ceph logs -l "app.kubernetes.io/part-of=rook-ceph.nvmeof.csi.ceph.com" --tail=200 || true return 1 fi @@ -824,10 +815,10 @@ EOF kubectl -n default exec pod/nvmeof-test-pod -- sh -c "echo 'abcd' > /mnt/nvmeof/test.txt && cat /mnt/nvmeof/test.txt" kubectl -n default exec pod/nvmeof-test-pod -- sh -c "grep -qx 'abcd' /mnt/nvmeof/test.txt" - old_gateway_pod="$(kubectl -n rook-ceph get pod --no-headers | awk '/rook-ceph-nvmeof-nvmeof-a-/ {print $1; exit}')" + old_gateway_pod="$(kubectl -n rook-ceph get pod --no-headers | awk '/rook-ceph-nvmeof-nvmeof-a-/ {if (!f) f=$1} END {print f}')" kubectl -n rook-ceph delete pod "${old_gateway_pod}" timeout 300 bash <