---
# Source: rook-ceph/charts/ceph-csi-operator/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: ceph-csi-cephfs-ctrlplugin-sa
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
  annotations:
    {}
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: ceph-csi-cephfs-nodeplugin-sa
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
  annotations:
    {}
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: ceph-csi-controller-manager
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
  annotations:
    {}
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: ceph-csi-nfs-ctrlplugin-sa
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
  annotations:
    {}
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: ceph-csi-nfs-nodeplugin-sa
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
  annotations:
    {}
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: ceph-csi-nvmeof-ctrlplugin-sa
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
  annotations:
    {}
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: ceph-csi-nvmeof-nodeplugin-sa
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
  annotations:
    {}
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: ceph-csi-rbd-ctrlplugin-sa
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
  annotations:
    {}
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: ceph-csi-rbd-nodeplugin-sa
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
  annotations:
    {}
---
# Source: rook-ceph/templates/cluster-rbac.yaml
# Service account for Ceph OSDs
kind: ServiceAccount
apiVersion: v1
metadata:
  name: rook-ceph-osd
  namespace: default # namespace:cluster
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
# imagePullSecrets:
#   - name: my-registry-secret
---
# Source: rook-ceph/templates/cluster-rbac.yaml
# Service account for Ceph mgrs
kind: ServiceAccount
apiVersion: v1
metadata:
  name: rook-ceph-mgr
  namespace: default # namespace:cluster
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
# imagePullSecrets:
#   - name: my-registry-secret
---
# Source: rook-ceph/templates/cluster-rbac.yaml
# Service account for the job that reports the Ceph version in an image
kind: ServiceAccount
apiVersion: v1
metadata:
  name: rook-ceph-cmd-reporter
  namespace: default # namespace:cluster
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
# imagePullSecrets:
#   - name: my-registry-secret
---
# Source: rook-ceph/templates/cluster-rbac.yaml
# Service account for job that purges OSDs from a Rook-Ceph cluster
kind: ServiceAccount
apiVersion: v1
metadata:
  name: rook-ceph-purge-osd
  namespace: default # namespace:cluster
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
# imagePullSecrets:
#   - name: my-registry-secret
---
# Source: rook-ceph/templates/cluster-rbac.yaml
# Service account for RGW server
kind: ServiceAccount
apiVersion: v1
metadata:
  name: rook-ceph-rgw
  namespace: default # namespace:cluster
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
# imagePullSecrets:
#   - name: my-registry-secret
---
# Source: rook-ceph/templates/cluster-rbac.yaml
# Service account for other components
kind: ServiceAccount
apiVersion: v1
metadata:
  name: rook-ceph-default
  namespace: default # namespace:cluster
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
# imagePullSecrets:
#   - name: my-registry-secret
---
# Source: rook-ceph/templates/cluster-rbac.yaml
# Service account for NVMe-oF gateway
kind: ServiceAccount
apiVersion: v1
metadata:
  name: rook-ceph-nvmeof
  namespace: default # namespace:cluster
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
# imagePullSecrets:
#   - name: my-registry-secret
---
# Source: rook-ceph/templates/serviceaccount.yaml
# Service account for the Rook-Ceph operator
kind: ServiceAccount
apiVersion: v1
metadata:
  name: rook-ceph-system
  namespace: default # namespace:operator
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
# imagePullSecrets:
#   - name: my-registry-secret
---
# Source: rook-ceph/templates/serviceaccount.yaml
# Service account for the CephFS CSI driver
kind: ServiceAccount
apiVersion: v1
metadata:
  name: rook-csi-cephfs-plugin-sa
  namespace: default # namespace:operator
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
# imagePullSecrets:
#   - name: my-registry-secret
---
# Source: rook-ceph/templates/serviceaccount.yaml
# Service account for the CephFS CSI provisioner
kind: ServiceAccount
apiVersion: v1
metadata:
  name: rook-csi-cephfs-provisioner-sa
  namespace: default # namespace:operator
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
# imagePullSecrets:
#   - name: my-registry-secret
---
# Source: rook-ceph/templates/serviceaccount.yaml
# Service account for the RBD CSI driver
kind: ServiceAccount
apiVersion: v1
metadata:
  name: rook-csi-rbd-plugin-sa
  namespace: default # namespace:operator
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
# imagePullSecrets:
#   - name: my-registry-secret
---
# Source: rook-ceph/templates/serviceaccount.yaml
# Service account for the RBD CSI provisioner
kind: ServiceAccount
apiVersion: v1
metadata:
  name: rook-csi-rbd-provisioner-sa
  namespace: default # namespace:operator
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
# imagePullSecrets:
#   - name: my-registry-secret
---
# Source: rook-ceph/templates/serviceaccount.yaml
# Service account for Ceph COSI driver
kind: ServiceAccount
apiVersion: v1
metadata:
  name: objectstorage-provisioner
  namespace: default # namespace:operator
  labels:
    app.kubernetes.io/part-of: container-object-storage-interface
    app.kubernetes.io/component: driver-ceph
    app.kubernetes.io/name: cosi-driver-ceph
# imagePullSecrets:
#   - name: my-registry-secret
---
# Source: rook-ceph/templates/configmap.yaml
# Operator settings that can be updated without an operator restart
# Operator settings that require an operator restart are found in the operator env vars
kind: ConfigMap
apiVersion: v1
metadata:
  name: rook-ceph-operator-config
  namespace: default # namespace:operator
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
data:
  ROOK_LOG_LEVEL: "INFO"
  ROOK_CEPH_COMMANDS_TIMEOUT_SECONDS: "15"
  ROOK_OBC_WATCH_OPERATOR_NAMESPACE: "true"
  ROOK_OBC_ALLOW_ADDITIONAL_CONFIG_FIELDS: "maxObjects,maxSize"
  ROOK_CEPH_ALLOW_LOOP_DEVICES: "false"
  ROOK_ENABLE_DISCOVERY_DAEMON: "false"
  ROOK_USE_CSI_OPERATOR: "true"
  ROOK_CSI_ENABLE_RBD: "true"
  ROOK_CSI_ENABLE_CEPHFS: "true"
  ROOK_CSI_DISABLE_DRIVER: "false"
  CSI_ENABLE_CEPHFS_SNAPSHOTTER: "true"
  CSI_ENABLE_NFS_SNAPSHOTTER: "true"
  CSI_ENABLE_RBD_SNAPSHOTTER: "true"
  CSI_PLUGIN_ENABLE_SELINUX_HOST_MOUNT: "false"
  CSI_ENABLE_ENCRYPTION: "false"
  CSI_ENABLE_OMAP_GENERATOR: "false"
  CSI_ENABLE_HOST_NETWORK: "true"
  CSI_ENABLE_METADATA: "false"
  CSI_ENABLE_VOLUME_GROUP_SNAPSHOT: "true"
  CSI_PLUGIN_PRIORITY_CLASSNAME: "system-node-critical"
  CSI_PROVISIONER_PRIORITY_CLASSNAME: "system-cluster-critical"
  CSI_RBD_FSGROUPPOLICY: "File"
  CSI_CEPHFS_FSGROUPPOLICY: "File"
  CSI_NFS_FSGROUPPOLICY: "File"
  ROOK_CSI_CEPH_IMAGE: "quay.io/cephcsi/cephcsi:v3.16.2"
  ROOK_CSI_REGISTRAR_IMAGE: "registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.16.0"
  ROOK_CSI_PROVISIONER_IMAGE: "registry.k8s.io/sig-storage/csi-provisioner:v6.1.1"
  ROOK_CSI_SNAPSHOTTER_IMAGE: "registry.k8s.io/sig-storage/csi-snapshotter:v8.5.0"
  ROOK_CSI_ATTACHER_IMAGE: "registry.k8s.io/sig-storage/csi-attacher:v4.11.0"
  ROOK_CSI_RESIZER_IMAGE: "registry.k8s.io/sig-storage/csi-resizer:v2.1.0"
  ROOK_CSI_IMAGE_PULL_POLICY: "IfNotPresent"
  CSI_ENABLE_CSIADDONS: "false"
  ROOK_CSIADDONS_IMAGE: "quay.io/csiaddons/k8s-sidecar:v0.14.0"
  CSI_ENABLE_CROSS_NAMESPACE_VOLUME_DATA_SOURCE: "false"
  CSI_ENABLE_TOPOLOGY: "false"
  ROOK_CSI_ENABLE_NFS: "false"
  CSI_FORCE_CEPHFS_KERNEL_CLIENT: "true"
  CSI_GRPC_TIMEOUT_SECONDS: "150"
  CSI_PROVISIONER_REPLICAS: "2"
  CSI_RBD_PROVISIONER_RESOURCE: "- name : csi-provisioner\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 100m\n    limits:\n      memory: 256Mi\n- name : csi-resizer\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 100m\n    limits:\n      memory: 256Mi\n- name : csi-attacher\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 100m\n    limits:\n      memory: 256Mi\n- name : csi-snapshotter\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 100m\n    limits:\n      memory: 256Mi\n- name : csi-rbdplugin\n  resource:\n    requests:\n      memory: 512Mi\n    limits:\n      memory: 1Gi\n- name : csi-omap-generator\n  resource:\n    requests:\n      memory: 512Mi\n      cpu: 250m\n    limits:\n      memory: 1Gi\n- name : liveness-prometheus\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 50m\n    limits:\n      memory: 256Mi\n"
  CSI_RBD_PLUGIN_RESOURCE: "- name : driver-registrar\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 50m\n    limits:\n      memory: 256Mi\n- name : csi-rbdplugin\n  resource:\n    requests:\n      memory: 512Mi\n      cpu: 250m\n    limits:\n      memory: 1Gi\n- name : liveness-prometheus\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 50m\n    limits:\n      memory: 256Mi\n"
  CSI_CEPHFS_PROVISIONER_RESOURCE: "- name : csi-provisioner\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 100m\n    limits:\n      memory: 256Mi\n- name : csi-resizer\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 100m\n    limits:\n      memory: 256Mi\n- name : csi-attacher\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 100m\n    limits:\n      memory: 256Mi\n- name : csi-snapshotter\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 100m\n    limits:\n      memory: 256Mi\n- name : csi-cephfsplugin\n  resource:\n    requests:\n      memory: 512Mi\n      cpu: 250m\n    limits:\n      memory: 1Gi\n- name : liveness-prometheus\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 50m\n    limits:\n      memory: 256Mi\n"
  CSI_CEPHFS_PLUGIN_RESOURCE: "- name : driver-registrar\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 50m\n    limits:\n      memory: 256Mi\n- name : csi-cephfsplugin\n  resource:\n    requests:\n      memory: 512Mi\n      cpu: 250m\n    limits:\n      memory: 1Gi\n- name : liveness-prometheus\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 50m\n    limits:\n      memory: 256Mi\n"
  CSI_NFS_PROVISIONER_RESOURCE: "- name : csi-provisioner\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 100m\n    limits:\n      memory: 256Mi\n- name : csi-nfsplugin\n  resource:\n    requests:\n      memory: 512Mi\n      cpu: 250m\n    limits:\n      memory: 1Gi\n- name : csi-attacher\n  resource:\n    requests:\n      memory: 512Mi\n      cpu: 250m\n    limits:\n      memory: 1Gi\n"
  CSI_NFS_PLUGIN_RESOURCE: "- name : driver-registrar\n  resource:\n    requests:\n      memory: 128Mi\n      cpu: 50m\n    limits:\n      memory: 256Mi\n- name : csi-nfsplugin\n  resource:\n    requests:\n      memory: 512Mi\n      cpu: 250m\n    limits:\n      memory: 1Gi\n"
  CSI_CEPHFS_ATTACH_REQUIRED: "true"
  CSI_RBD_ATTACH_REQUIRED: "true"
  CSI_NFS_ATTACH_REQUIRED: "true"
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/cephconnection-crd.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: cephconnections.csi.ceph.io
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
spec:
  group: csi.ceph.io
  names:
    kind: CephConnection
    listKind: CephConnectionList
    plural: cephconnections
    singular: cephconnection
  scope: Namespaced
  versions:
  - name: v1
    schema:
      openAPIV3Schema:
        description: CephConnection is the Schema for the cephconnections API
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: CephConnectionSpec defines the desired state of CephConnection
            properties:
              monitors:
                items:
                  type: string
                minItems: 1
                type: array
              rbdMirrorDaemonCount:
                minimum: 1
                type: integer
              readAffinity:
                description: ReadAffinitySpec capture Ceph CSI read affinity settings
                properties:
                  crushLocationLabels:
                    items:
                      type: string
                    minItems: 1
                    type: array
                required:
                - crushLocationLabels
                type: object
            required:
            - monitors
            type: object
          status:
            description: CephConnectionStatus defines the observed state of CephConnection
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
  - deprecated: true
    deprecationWarning: v1alpha1 is deprecated, please use v1
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: CephConnection is the Schema for the cephconnections API
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: CephConnectionSpec defines the desired state of CephConnection
            properties:
              monitors:
                items:
                  type: string
                minItems: 1
                type: array
              rbdMirrorDaemonCount:
                minimum: 1
                type: integer
              readAffinity:
                description: ReadAffinitySpec capture Ceph CSI read affinity settings
                properties:
                  crushLocationLabels:
                    items:
                      type: string
                    minItems: 1
                    type: array
                required:
                - crushLocationLabels
                type: object
            required:
            - monitors
            type: object
          status:
            description: CephConnectionStatus defines the observed state of CephConnection
            type: object
        type: object
    served: true
    storage: false
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/clientprofile-crd.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: clientprofiles.csi.ceph.io
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
spec:
  group: csi.ceph.io
  names:
    kind: ClientProfile
    listKind: ClientProfileList
    plural: clientprofiles
    singular: clientprofile
  scope: Namespaced
  versions:
  - name: v1
    schema:
      openAPIV3Schema:
        description: ClientProfile is the Schema for the clientprofiles API
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: |-
              ClientProfileSpec defines the desired state of Ceph CSI
              configuration for volumes and snapshots configured to use
              this profile
            properties:
              cephConnectionRef:
                description: |-
                  LocalObjectReference contains enough information to let you locate the
                  referenced object inside the same namespace.
                properties:
                  name:
                    default: ""
                    description: |-
                      Name of the referent.
                      This field is effectively required, but due to backwards compatibility is
                      allowed to be empty. Instances of this type with an empty value here are
                      almost certainly wrong.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                type: object
                x-kubernetes-map-type: atomic
                x-kubernetes-validations:
                - message: '''.name'' cannot be empty'
                  rule: self.name != ""
              cephFs:
                description: CephFsConfigSpec defines the desired CephFs 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
                  fuseMountOptions:
                    additionalProperties:
                      type: string
                    type: object
                  kernelMountOptions:
                    additionalProperties:
                      type: string
                    type: object
                  radosNamespace:
                    type: string
                    x-kubernetes-validations:
                    - message: field is immutable
                      rule: self == oldSelf
                  subVolumeGroup:
                    type: string
                type: object
              nfs:
                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
                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
            required:
            - cephConnectionRef
            type: object
          status:
            description: |-
              ClientProfileStatus defines the observed state of Ceph CSI
              configuration for volumes and snapshots configured to use
              this profile
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
  - deprecated: true
    deprecationWarning: v1alpha1 is deprecated, please use v1
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: ClientProfile is the Schema for the clientprofiles API
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: |-
              ClientProfileSpec defines the desired state of Ceph CSI
              configuration for volumes and snapshots configured to use
              this profile
            properties:
              cephConnectionRef:
                description: |-
                  LocalObjectReference contains enough information to let you locate the
                  referenced object inside the same namespace.
                properties:
                  name:
                    default: ""
                    description: |-
                      Name of the referent.
                      This field is effectively required, but due to backwards compatibility is
                      allowed to be empty. Instances of this type with an empty value here are
                      almost certainly wrong.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                type: object
                x-kubernetes-map-type: atomic
                x-kubernetes-validations:
                - message: '''.name'' cannot be empty'
                  rule: self.name != ""
              cephFs:
                description: CephFsConfigSpec defines the desired CephFs configuration
                properties:
                  fuseMountOptions:
                    additionalProperties:
                      type: string
                    type: object
                  kernelMountOptions:
                    additionalProperties:
                      type: string
                    type: object
                  radosNamespace:
                    type: string
                    x-kubernetes-validations:
                    - message: field is immutable
                      rule: self == oldSelf
                  subVolumeGroup:
                    type: string
                type: object
              nfs:
                description: NfsConfigSpec defines the desired NFS configuration
                type: object
              rbd:
                description: RbdConfigSpec defines the desired RBD configuration
                properties:
                  radosNamespace:
                    type: string
                    x-kubernetes-validations:
                    - message: field is immutable
                      rule: self == oldSelf
                type: object
            required:
            - cephConnectionRef
            type: object
          status:
            description: |-
              ClientProfileStatus defines the observed state of Ceph CSI
              configuration for volumes and snapshots configured to use
              this profile
            type: object
        type: object
    served: true
    storage: false
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/clientprofilemapping-crd.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: clientprofilemappings.csi.ceph.io
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
spec:
  group: csi.ceph.io
  names:
    kind: ClientProfileMapping
    listKind: ClientProfileMappingList
    plural: clientprofilemappings
    singular: clientprofilemapping
  scope: Namespaced
  versions:
  - name: v1
    schema:
      openAPIV3Schema:
        description: ClientProfileMapping is the Schema for the clientprofilemappings
          API
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ClientProfileMappingSpec defines the desired state of ClientProfileMapping
            properties:
              mappings:
                items:
                  description: MappingsSpec define a mapping between a local and remote
                    profiles
                  properties:
                    blockPoolIdMapping:
                      items:
                        items:
                          type: string
                        maxItems: 2
                        minItems: 2
                        type: array
                      type: array
                    localClientProfile:
                      type: string
                    remoteClientProfile:
                      type: string
                  required:
                  - localClientProfile
                  - remoteClientProfile
                  type: object
                type: array
            required:
            - mappings
            type: object
          status:
            description: ClientProfileMappingStatus defines the observed state of ClientProfileMapping
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
  - deprecated: true
    deprecationWarning: v1alpha1 is deprecated, please use v1
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: ClientProfileMapping is the Schema for the clientprofilemappings
          API
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: ClientProfileMappingSpec defines the desired state of ClientProfileMapping
            properties:
              mappings:
                items:
                  description: MappingsSpec define a mapping between a local and remote
                    profiles
                  properties:
                    blockPoolIdMapping:
                      items:
                        items:
                          type: string
                        maxItems: 2
                        minItems: 2
                        type: array
                      type: array
                    localClientProfile:
                      type: string
                    remoteClientProfile:
                      type: string
                  required:
                  - localClientProfile
                  - remoteClientProfile
                  type: object
                type: array
            required:
            - mappings
            type: object
          status:
            description: ClientProfileMappingStatus defines the observed state of ClientProfileMapping
            type: object
        type: object
    served: true
    storage: false
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/driver-crd.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: drivers.csi.ceph.io
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
spec:
  group: csi.ceph.io
  names:
    kind: Driver
    listKind: DriverList
    plural: drivers
    singular: driver
  scope: Namespaced
  versions:
  - name: v1
    schema:
      openAPIV3Schema:
        description: Driver is the Schema for the drivers API
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: DriverSpec defines the desired state of Driver
            properties:
              attachRequired:
                description: |-
                  Whether to skip any attach operation altogether for CephCsi PVCs.
                  See more details [here](https://kubernetes-csi.github.io/docs/skip-attach.html#skip-attach-with-csi-driver-object).
                  If set to false it skips the volume attachments and makes the creation of pods using the CephCsi PVC fast.
                  **WARNING** It's highly discouraged to use this for RWO volumes. for RBD PVC it can cause data corruption,
                  csi-addons operations like Reclaimspace and PVC Keyrotation will also not be supported if set to false
                  since we'll have no VolumeAttachments to determine which node the PVC is mounted on.
                  Refer to this [issue](https://github.com/kubernetes/kubernetes/issues/103305) for more details.
                type: boolean
              cephFsClientType:
                description: |-
                  Select between between cephfs kernel driver and ceph-fuse
                  If you select a non-kernel client, your application may be disrupted during upgrade.
                  See the upgrade guide: https://rook.io/docs/rook/latest/ceph-upgrade.html
                  NOTE! cephfs quota is not supported in kernel version < 4.17
                enum:
                - autodetect
                - kernel
                type: string
              clusterName:
                description: |-
                  Cluster name identifier to set as metadata on the CephFS subvolume and RBD images. This will be useful in cases
                  when two container orchestrator clusters (Kubernetes/OCP) are using a single ceph cluster.
                type: string
              controllerPlugin:
                description: Driver's controller plugin configuration
                properties:
                  affinity:
                    description: Pod's affinity settings
                    properties:
                      nodeAffinity:
                        description: Describes node affinity scheduling rules for the
                          pod.
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              The scheduler will prefer to schedule pods to nodes that satisfy
                              the affinity expressions specified by this field, but it may choose
                              a node that violates one or more of the expressions. The node that is
                              most preferred is the one with the greatest sum of weights, i.e.
                              for each node that meets all of the scheduling requirements (resource
                              request, requiredDuringScheduling affinity expressions, etc.),
                              compute a sum by iterating through the elements of this field and adding
                              "weight" to the sum if the node matches the corresponding matchExpressions; the
                              node(s) with the highest sum are the most preferred.
                            items:
                              description: |-
                                An empty preferred scheduling term matches all objects with implicit weight 0
                                (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.
                                  properties:
                                    matchExpressions:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchFields:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                  x-kubernetes-map-type: atomic
                                weight:
                                  description: Weight associated with matching the corresponding
                                    nodeSelectorTerm, in the range 1-100.
                                  format: int32
                                  type: integer
                              required:
                              - preference
                              - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              If the affinity requirements specified by this field are not met at
                              scheduling time, the pod will not be scheduled onto the node.
                              If the affinity requirements specified by this field cease to be met
                              at some point during pod execution (e.g. due to an update), the system
                              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.
                                items:
                                  description: |-
                                    A null or empty node selector term matches no objects. The requirements of
                                    them are ANDed.
                                    The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
                                  properties:
                                    matchExpressions:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchFields:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                  x-kubernetes-map-type: atomic
                                type: array
                                x-kubernetes-list-type: atomic
                            required:
                            - nodeSelectorTerms
                            type: object
                            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)).
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              The scheduler will prefer to schedule pods to nodes that satisfy
                              the affinity expressions specified by this field, but it may choose
                              a node that violates one or more of the expressions. The node that is
                              most preferred is the one with the greatest sum of weights, i.e.
                              for each node that meets all of the scheduling requirements (resource
                              request, requiredDuringScheduling affinity expressions, etc.),
                              compute a sum by iterating through the elements of this field and adding
                              "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)
                              properties:
                                podAffinityTerm:
                                  description: Required. A pod affinity term, associated
                                    with the corresponding weight.
                                  properties:
                                    labelSelector:
                                      description: |-
                                        A label query over a set of resources, in this case pods.
                                        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.
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      description: |-
                                        MatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      description: |-
                                        MismatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      description: |-
                                        A label query over the set of namespaces that the term applies to.
                                        The term is applied to the union of the namespaces selected by this field
                                        and the ones listed in the namespaces field.
                                        null selector and null or empty namespaces list means "this pod's namespace".
                                        An empty selector ({}) matches all namespaces.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      description: |-
                                        namespaces specifies a static list of namespace names that the term applies to.
                                        The term is applied to the union of the namespaces listed in this field
                                        and the ones selected by namespaceSelector.
                                        null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      description: |-
                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                        whose value of the label with key topologyKey matches that of any node on which any of the
                                        selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                weight:
                                  description: |-
                                    weight associated with matching the corresponding podAffinityTerm,
                                    in the range 1-100.
                                  format: int32
                                  type: integer
                              required:
                              - podAffinityTerm
                              - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              If the affinity requirements specified by this field are not met at
                              scheduling time, the pod will not be scheduled onto the node.
                              If the affinity requirements specified by this field cease to be met
                              at some point during pod execution (e.g. due to a pod label update), the
                              system may or may not try to eventually evict the pod from its node.
                              When there are multiple elements, the lists of nodes corresponding to each
                              podAffinityTerm are intersected, i.e. all terms must be satisfied.
                            items:
                              description: |-
                                Defines a set of pods (namely those matching the labelSelector
                                relative to the given namespace(s)) that this pod should be
                                co-located (affinity) or not co-located (anti-affinity) with,
                                where co-located is defined as running on a node whose value of
                                the label with key <topologyKey> matches that of any node on which
                                a pod of the set of pods is running
                              properties:
                                labelSelector:
                                  description: |-
                                    A label query over a set of resources, in this case pods.
                                    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.
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                matchLabelKeys:
                                  description: |-
                                    MatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                mismatchLabelKeys:
                                  description: |-
                                    MismatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                namespaceSelector:
                                  description: |-
                                    A label query over the set of namespaces that the term applies to.
                                    The term is applied to the union of the namespaces selected by this field
                                    and the ones listed in the namespaces field.
                                    null selector and null or empty namespaces list means "this pod's namespace".
                                    An empty selector ({}) matches all namespaces.
                                  properties:
                                    matchExpressions:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                namespaces:
                                  description: |-
                                    namespaces specifies a static list of namespace names that the term applies to.
                                    The term is applied to the union of the namespaces listed in this field
                                    and the ones selected by namespaceSelector.
                                    null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                topologyKey:
                                  description: |-
                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                    whose value of the label with key topologyKey matches that of any node on which any of the
                                    selected pods is running.
                                    Empty topologyKey is not allowed.
                                  type: string
                              required:
                              - topologyKey
                              type: object
                            type: array
                            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)).
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              The scheduler will prefer to schedule pods to nodes that satisfy
                              the anti-affinity expressions specified by this field, but it may choose
                              a node that violates one or more of the expressions. The node that is
                              most preferred is the one with the greatest sum of weights, i.e.
                              for each node that meets all of the scheduling requirements (resource
                              request, requiredDuringScheduling anti-affinity expressions, etc.),
                              compute a sum by iterating through the elements of this field and subtracting
                              "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)
                              properties:
                                podAffinityTerm:
                                  description: Required. A pod affinity term, associated
                                    with the corresponding weight.
                                  properties:
                                    labelSelector:
                                      description: |-
                                        A label query over a set of resources, in this case pods.
                                        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.
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      description: |-
                                        MatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      description: |-
                                        MismatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      description: |-
                                        A label query over the set of namespaces that the term applies to.
                                        The term is applied to the union of the namespaces selected by this field
                                        and the ones listed in the namespaces field.
                                        null selector and null or empty namespaces list means "this pod's namespace".
                                        An empty selector ({}) matches all namespaces.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      description: |-
                                        namespaces specifies a static list of namespace names that the term applies to.
                                        The term is applied to the union of the namespaces listed in this field
                                        and the ones selected by namespaceSelector.
                                        null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      description: |-
                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                        whose value of the label with key topologyKey matches that of any node on which any of the
                                        selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                weight:
                                  description: |-
                                    weight associated with matching the corresponding podAffinityTerm,
                                    in the range 1-100.
                                  format: int32
                                  type: integer
                              required:
                              - podAffinityTerm
                              - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              If the anti-affinity requirements specified by this field are not met at
                              scheduling time, the pod will not be scheduled onto the node.
                              If the anti-affinity requirements specified by this field cease to be met
                              at some point during pod execution (e.g. due to a pod label update), the
                              system may or may not try to eventually evict the pod from its node.
                              When there are multiple elements, the lists of nodes corresponding to each
                              podAffinityTerm are intersected, i.e. all terms must be satisfied.
                            items:
                              description: |-
                                Defines a set of pods (namely those matching the labelSelector
                                relative to the given namespace(s)) that this pod should be
                                co-located (affinity) or not co-located (anti-affinity) with,
                                where co-located is defined as running on a node whose value of
                                the label with key <topologyKey> matches that of any node on which
                                a pod of the set of pods is running
                              properties:
                                labelSelector:
                                  description: |-
                                    A label query over a set of resources, in this case pods.
                                    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.
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                matchLabelKeys:
                                  description: |-
                                    MatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                mismatchLabelKeys:
                                  description: |-
                                    MismatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                namespaceSelector:
                                  description: |-
                                    A label query over the set of namespaces that the term applies to.
                                    The term is applied to the union of the namespaces selected by this field
                                    and the ones listed in the namespaces field.
                                    null selector and null or empty namespaces list means "this pod's namespace".
                                    An empty selector ({}) matches all namespaces.
                                  properties:
                                    matchExpressions:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                namespaces:
                                  description: |-
                                    namespaces specifies a static list of namespace names that the term applies to.
                                    The term is applied to the union of the namespaces listed in this field
                                    and the ones selected by namespaceSelector.
                                    null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                topologyKey:
                                  description: |-
                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                    whose value of the label with key topologyKey matches that of any node on which any of the
                                    selected pods is running.
                                    Empty topologyKey is not allowed.
                                  type: string
                              required:
                              - topologyKey
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                        type: object
                    type: object
                  annotations:
                    additionalProperties:
                      type: string
                    description: Pod's annotations
                    type: object
                  deploymentStrategy:
                    description: |-
                      DeploymentStrategy describes how to replace existing pods with new ones
                      Default value is Recreate
                    properties:
                      rollingUpdate:
                        description: |-
                          Rolling update config params. Present only if DeploymentStrategyType =
                          RollingUpdate.
                        properties:
                          maxSurge:
                            anyOf:
                            - type: integer
                            - type: string
                            description: |-
                              The maximum number of pods that can be scheduled above the desired number of
                              pods.
                              Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
                              This can not be 0 if MaxUnavailable is 0.
                              Absolute number is calculated from percentage by rounding up.
                              Defaults to 25%.
                              Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when
                              the rolling update starts, such that the total number of old and new pods do not exceed
                              130% of desired pods. Once old pods have been killed,
                              new ReplicaSet can be scaled up further, ensuring that total number of pods running
                              at any time during the update is at most 130% of desired pods.
                            x-kubernetes-int-or-string: true
                          maxUnavailable:
                            anyOf:
                            - type: integer
                            - type: string
                            description: |-
                              The maximum number of pods that can be unavailable during the update.
                              Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
                              Absolute number is calculated from percentage by rounding down.
                              This can not be 0 if MaxSurge is 0.
                              Defaults to 25%.
                              Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods
                              immediately when the rolling update starts. Once new pods are ready, old ReplicaSet
                              can be scaled down further, followed by scaling up the new ReplicaSet, ensuring
                              that the total number of pods available at all times during the update is at
                              least 70% of desired pods.
                            x-kubernetes-int-or-string: true
                        type: object
                      type:
                        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
                    type: boolean
                  imagePullPolicy:
                    description: To indicate the image pull policy to be applied to
                      all the containers in the csi driver pods.
                    type: string
                  labels:
                    additionalProperties:
                      type: string
                    description: Pod's labels
                    type: object
                  priorityClassName:
                    description: Pod's user defined priority class name
                    type: string
                  privileged:
                    description: |-
                      To enable logrotation for csi pods,
                      Some platforms require controller plugin to run privileged,
                      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
                    format: int32
                    minimum: 1
                    type: integer
                  resources:
                    description: Resource requirements for controller plugin's containers
                    properties:
                      addons:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      attacher:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      liveness:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      logRotator:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      omapGenerator:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      plugin:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      provisioner:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      resizer:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      snapshotter:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                    type: object
                  serviceAccountName:
                    description: Service account name to be used for driver's pods
                    type: string
                  tolerations:
                    description: Pod's tolerations list
                    items:
                      description: |-
                        The pod this Toleration is attached to tolerates any taint that matches
                        the triple <key,value,effect> using the matching operator <operator>.
                      properties:
                        effect:
                          description: |-
                            Effect indicates the taint effect to match. Empty means match all taint effects.
                            When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
                          type: string
                        key:
                          description: |-
                            Key is the taint key that the toleration applies to. Empty means match all taint keys.
                            If the key is empty, operator must be Exists; this combination means to match all values and all keys.
                          type: string
                        operator:
                          description: |-
                            Operator represents a key's relationship to the value.
                            Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal.
                            Exists is equivalent to wildcard for value, so that a pod can
                            tolerate all taints of a particular category.
                            Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators).
                          type: string
                        tolerationSeconds:
                          description: |-
                            TolerationSeconds represents the period of time the toleration (which must be
                            of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
                            it is not set, which means tolerate the taint forever (do not evict). Zero and
                            negative values will be treated as 0 (evict immediately) by the system.
                          format: int64
                          type: integer
                        value:
                          description: |-
                            Value is the taint value the toleration matches to.
                            If the operator is Exists, the value should be empty, otherwise just a regular string.
                          type: string
                      type: object
                    type: array
                  volumes:
                    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.
                          properties:
                            mountPath:
                              description: |-
                                Path within the container at which the volume should be mounted.  Must
                                not contain ':'.
                              type: string
                            mountPropagation:
                              description: |-
                                mountPropagation determines how mounts are propagated from the host
                                to container and the other way around.
                                When not set, MountPropagationNone is used.
                                This field is beta in 1.10.
                                When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
                                (which defaults to None).
                              type: string
                            name:
                              description: This must match the Name of a Volume.
                              type: string
                            readOnly:
                              description: |-
                                Mounted read-only if true, read-write otherwise (false or unspecified).
                                Defaults to false.
                              type: boolean
                            recursiveReadOnly:
                              description: |-
                                RecursiveReadOnly specifies whether read-only mounts should be handled
                                recursively.

                                If ReadOnly is false, this field has no meaning and must be unspecified.

                                If ReadOnly is true, and this field is set to Disabled, the mount is not made
                                recursively read-only.  If this field is set to IfPossible, the mount is made
                                recursively read-only, if it is supported by the container runtime.  If this
                                field is set to Enabled, the mount is made recursively read-only if it is
                                supported by the container runtime, otherwise the pod will not be started and
                                an error will be generated to indicate the reason.

                                If this field is set to IfPossible or Enabled, MountPropagation must be set to
                                None (or be unspecified, which defaults to None).

                                If this field is not specified, it is treated as an equivalent of Disabled.
                              type: string
                            subPath:
                              description: |-
                                Path within the volume from which the container's volume should be mounted.
                                Defaults to "" (volume's root).
                              type: string
                            subPathExpr:
                              description: |-
                                Expanded path within the volume from which the container's volume should be mounted.
                                Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
                                Defaults to "" (volume's root).
                                SubPathExpr and SubPath are mutually exclusive.
                              type: string
                          required:
                          - mountPath
                          - name
                          type: object
                        volume:
                          description: Volume represents a named volume in a pod that
                            may be accessed by any container in the pod.
                          properties:
                            awsElasticBlockStore:
                              description: |-
                                awsElasticBlockStore represents an AWS Disk resource that is attached to a
                                kubelet's host machine and then exposed to the pod.
                                Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree
                                awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type of the volume that you want to mount.
                                    Tip: Ensure that the filesystem type is supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                  type: string
                                partition:
                                  description: |-
                                    partition is the partition in the volume that you want to mount.
                                    If omitted, the default is to mount by volume name.
                                    Examples: For volume /dev/sda1, you specify the partition as "1".
                                    Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
                                  format: int32
                                  type: integer
                                readOnly:
                                  description: |-
                                    readOnly value true will force the readOnly setting in VolumeMounts.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                  type: boolean
                                volumeID:
                                  description: |-
                                    volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                  type: string
                              required:
                              - volumeID
                              type: object
                            azureDisk:
                              description: |-
                                azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
                                Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type
                                are redirected to the disk.csi.azure.com CSI driver.
                              properties:
                                cachingMode:
                                  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
                                  type: string
                                diskURI:
                                  description: diskURI is the URI of data disk in the
                                    blob storage
                                  type: string
                                fsType:
                                  default: ext4
                                  description: |-
                                    fsType is Filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    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'
                                  type: string
                                readOnly:
                                  default: false
                                  description: |-
                                    readOnly Defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                              required:
                              - diskName
                              - diskURI
                              type: object
                            azureFile:
                              description: |-
                                azureFile represents an Azure File Service mount on the host and bind mount to the pod.
                                Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type
                                are redirected to the file.csi.azure.com CSI driver.
                              properties:
                                readOnly:
                                  description: |-
                                    readOnly defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                secretName:
                                  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
                                  type: string
                              required:
                              - secretName
                              - shareName
                              type: object
                            cephfs:
                              description: |-
                                cephFS represents a Ceph FS mount on the host that shares a pod's lifetime.
                                Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.
                              properties:
                                monitors:
                                  description: |-
                                    monitors is Required: Monitors is a collection of Ceph monitors
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  items:
                                    type: string
                                  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
                                    /'
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  type: boolean
                                secretFile:
                                  description: |-
                                    secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  type: string
                                secretRef:
                                  description: |-
                                    secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                user:
                                  description: |-
                                    user is optional: User is the rados user name, default is admin
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  type: string
                              required:
                              - monitors
                              type: object
                            cinder:
                              description: |-
                                cinder represents a cinder volume attached and mounted on kubelets host machine.
                                Deprecated: Cinder is deprecated. All operations for the in-tree cinder type
                                are redirected to the cinder.csi.openstack.org CSI driver.
                                More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                    More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef is optional: points to a secret object containing parameters used to connect
                                    to OpenStack.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                volumeID:
                                  description: |-
                                    volumeID used to identify the volume in cinder.
                                    More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                  type: string
                              required:
                              - volumeID
                              type: object
                            configMap:
                              description: configMap represents a configMap that should
                                populate this volume
                              properties:
                                defaultMode:
                                  description: |-
                                    defaultMode is optional: mode bits used to set permissions on created files by default.
                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                    Defaults to 0644.
                                    Directories within the path are not affected by this setting.
                                    This might be in conflict with other options that affect the file
                                    mode, like fsGroup, and the result can be other mode bits set.
                                  format: int32
                                  type: integer
                                items:
                                  description: |-
                                    items if unspecified, each key-value pair in the Data field of the referenced
                                    ConfigMap will be projected into the volume as a file whose name is the
                                    key and content is the value. If specified, the listed keys will be
                                    projected into the specified paths, and unlisted keys will not be
                                    present. If a key is specified which is not present in the ConfigMap,
                                    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.
                                    properties:
                                      key:
                                        description: key is the key to project.
                                        type: string
                                      mode:
                                        description: |-
                                          mode is Optional: mode bits used to set permissions on this file.
                                          Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                          YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                          If not specified, the volume defaultMode will be used.
                                          This might be in conflict with other options that affect the file
                                          mode, like fsGroup, and the result can be other mode bits set.
                                        format: int32
                                        type: integer
                                      path:
                                        description: |-
                                          path is the relative path of the file to map the key to.
                                          May not be an absolute path.
                                          May not contain the path element '..'.
                                          May not start with the string '..'.
                                        type: string
                                    required:
                                    - key
                                    - path
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    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
                                  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.
                              properties:
                                driver:
                                  description: |-
                                    driver is the name of the CSI driver that handles this volume.
                                    Consult with your admin for the correct name as registered in the cluster.
                                  type: string
                                fsType:
                                  description: |-
                                    fsType to mount. Ex. "ext4", "xfs", "ntfs".
                                    If not provided, the empty value is passed to the associated CSI driver
                                    which will determine the default filesystem to apply.
                                  type: string
                                nodePublishSecretRef:
                                  description: |-
                                    nodePublishSecretRef is a reference to the secret object containing
                                    sensitive information to pass to the CSI driver to complete the CSI
                                    NodePublishVolume and NodeUnpublishVolume calls.
                                    This field is optional, and  may be empty if no secret is required. If the
                                    secret object contains more than one secret, all secret references are passed.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                readOnly:
                                  description: |-
                                    readOnly specifies a read-only configuration for the volume.
                                    Defaults to false (read/write).
                                  type: boolean
                                volumeAttributes:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    volumeAttributes stores driver-specific properties that are passed to the CSI
                                    driver. Consult your driver's documentation for supported values.
                                  type: object
                              required:
                              - driver
                              type: object
                            downwardAPI:
                              description: downwardAPI represents downward API about
                                the pod that should populate this volume
                              properties:
                                defaultMode:
                                  description: |-
                                    Optional: mode bits to use on created files by default. Must be a
                                    Optional: mode bits used to set permissions on created files by default.
                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                    Defaults to 0644.
                                    Directories within the path are not affected by this setting.
                                    This might be in conflict with other options that affect the file
                                    mode, like fsGroup, and the result can be other mode bits set.
                                  format: int32
                                  type: integer
                                items:
                                  description: Items is a list of downward API volume
                                    file
                                  items:
                                    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.'
                                        properties:
                                          apiVersion:
                                            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.
                                            type: string
                                        required:
                                        - fieldPath
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      mode:
                                        description: |-
                                          Optional: mode bits used to set permissions on this file, must be an octal value
                                          between 0000 and 0777 or a decimal value between 0 and 511.
                                          YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                          If not specified, the volume defaultMode will be used.
                                          This might be in conflict with other options that affect the file
                                          mode, like fsGroup, and the result can be other mode bits set.
                                        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 ''..'''
                                        type: string
                                      resourceFieldRef:
                                        description: |-
                                          Selects a resource of the container: only resources limits and requests
                                          (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                        properties:
                                          containerName:
                                            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"
                                            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'
                                            type: string
                                        required:
                                        - resource
                                        type: object
                                        x-kubernetes-map-type: atomic
                                    required:
                                    - path
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            emptyDir:
                              description: |-
                                emptyDir represents a temporary directory that shares a pod's lifetime.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                              properties:
                                medium:
                                  description: |-
                                    medium represents what type of storage medium should back this directory.
                                    The default is "" which means to use the node's default medium.
                                    Must be an empty string (default) or Memory.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                  type: string
                                sizeLimit:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    sizeLimit is the total amount of local storage required for this EmptyDir volume.
                                    The size limit is also applicable for memory medium.
                                    The maximum usage on memory medium EmptyDir would be the minimum value between
                                    the SizeLimit specified here and the sum of memory limits of all containers in a pod.
                                    The default is nil which means that the limit is undefined.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                              type: object
                            ephemeral:
                              description: |-
                                ephemeral represents a volume that is handled by a cluster storage driver.
                                The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
                                and deleted when the pod is removed.

                                Use this if:
                                a) the volume is only needed while the pod runs,
                                b) features of normal volumes like restoring from snapshot or capacity
                                   tracking are needed,
                                c) the storage driver is specified through a storage class, and
                                d) the storage driver supports dynamic volume provisioning through
                                   a PersistentVolumeClaim (see EphemeralVolumeSource for more
                                   information on the connection between this volume type
                                   and PersistentVolumeClaim).

                                Use PersistentVolumeClaim or one of the vendor-specific
                                APIs for volumes that persist for longer than the lifecycle
                                of an individual pod.

                                Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
                                be used that way - see the documentation of the driver for
                                more information.

                                A pod can use both types of ephemeral volumes and
                                persistent volumes at the same time.
                              properties:
                                volumeClaimTemplate:
                                  description: |-
                                    Will be used to create a stand-alone PVC to provision the volume.
                                    The pod in which this EphemeralVolumeSource is embedded will be the
                                    owner of the PVC, i.e. the PVC will be deleted together with the
                                    pod.  The name of the PVC will be `<pod name>-<volume name>` where
                                    `<volume name>` is the name from the `PodSpec.Volumes` array
                                    entry. Pod validation will reject the pod if the concatenated name
                                    is not valid for a PVC (for example, too long).

                                    An existing PVC with that name that is not owned by the pod
                                    will *not* be used for the pod to avoid using an unrelated
                                    volume by mistake. Starting the pod is then blocked until
                                    the unrelated PVC is removed. If such a pre-created PVC is
                                    meant to be used by the pod, the PVC has to updated with an
                                    owner reference to the pod once the pod exists. Normally
                                    this should not be necessary, but it may be useful when
                                    manually reconstructing a broken cluster.

                                    This field is read-only and no changes will be made by Kubernetes
                                    to the PVC after it has been created.

                                    Required, must not be nil.
                                  properties:
                                    metadata:
                                      description: |-
                                        May contain labels and annotations that will be copied into the PVC
                                        when creating it. No other fields are allowed and will be rejected during
                                        validation.
                                      type: object
                                    spec:
                                      description: |-
                                        The specification for the PersistentVolumeClaim. The entire content is
                                        copied unchanged into the PVC that gets created from this
                                        template. The same fields as in a PersistentVolumeClaim
                                        are also valid here.
                                      properties:
                                        accessModes:
                                          description: |-
                                            accessModes contains the desired access modes the volume should have.
                                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        dataSource:
                                          description: |-
                                            dataSource field can be used to specify either:
                                            * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
                                            * An existing PVC (PersistentVolumeClaim)
                                            If the provisioner or an external controller can support the specified data source,
                                            it will create a new volume based on the contents of the specified data source.
                                            When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
                                            and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
                                            If the namespace is specified, then dataSourceRef will not be copied to dataSource.
                                          properties:
                                            apiGroup:
                                              description: |-
                                                APIGroup is the group for the resource being referenced.
                                                If APIGroup is not specified, the specified Kind must be in the core API group.
                                                For any other third-party types, APIGroup is required.
                                              type: string
                                            kind:
                                              description: Kind is the type of resource
                                                being referenced
                                              type: string
                                            name:
                                              description: Name is the name of resource
                                                being referenced
                                              type: string
                                          required:
                                          - kind
                                          - name
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        dataSourceRef:
                                          description: |-
                                            dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
                                            volume is desired. This may be any object from a non-empty API group (non
                                            core object) or a PersistentVolumeClaim object.
                                            When this field is specified, volume binding will only succeed if the type of
                                            the specified object matches some installed volume populator or dynamic
                                            provisioner.
                                            This field will replace the functionality of the dataSource field and as such
                                            if both fields are non-empty, they must have the same value. For backwards
                                            compatibility, when namespace isn't specified in dataSourceRef,
                                            both fields (dataSource and dataSourceRef) will be set to the same
                                            value automatically if one of them is empty and the other is non-empty.
                                            When namespace is specified in dataSourceRef,
                                            dataSource isn't set to the same value and must be empty.
                                            There are three important differences between dataSource and dataSourceRef:
                                            * While dataSource only allows two specific types of objects, dataSourceRef
                                              allows any non-core object, as well as PersistentVolumeClaim objects.
                                            * While dataSource ignores disallowed values (dropping them), dataSourceRef
                                              preserves all values, and generates an error if a disallowed value is
                                              specified.
                                            * While dataSource only allows local objects, dataSourceRef allows objects
                                              in any namespaces.
                                            (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
                                            (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                          properties:
                                            apiGroup:
                                              description: |-
                                                APIGroup is the group for the resource being referenced.
                                                If APIGroup is not specified, the specified Kind must be in the core API group.
                                                For any other third-party types, APIGroup is required.
                                              type: string
                                            kind:
                                              description: Kind is the type of resource
                                                being referenced
                                              type: string
                                            name:
                                              description: Name is the name of resource
                                                being referenced
                                              type: string
                                            namespace:
                                              description: |-
                                                Namespace is the namespace of resource being referenced
                                                Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
                                                (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                              type: string
                                          required:
                                          - kind
                                          - name
                                          type: object
                                        resources:
                                          description: |-
                                            resources represents the minimum resources the volume should have.
                                            Users are allowed to specify resource requirements
                                            that are lower than previous value but must still be higher than capacity recorded in the
                                            status field of the claim.
                                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
                                          properties:
                                            limits:
                                              additionalProperties:
                                                anyOf:
                                                - type: integer
                                                - type: string
                                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                x-kubernetes-int-or-string: true
                                              description: |-
                                                Limits describes the maximum amount of compute resources allowed.
                                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                              type: object
                                            requests:
                                              additionalProperties:
                                                anyOf:
                                                - type: integer
                                                - type: string
                                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                x-kubernetes-int-or-string: true
                                              description: |-
                                                Requests describes the minimum amount of compute resources required.
                                                If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                                otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                              type: object
                                          type: object
                                        selector:
                                          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.
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        storageClassName:
                                          description: |-
                                            storageClassName is the name of the StorageClass required by the claim.
                                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
                                          type: string
                                        volumeAttributesClassName:
                                          description: |-
                                            volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
                                            If specified, the CSI driver will create or update the volume with the attributes defined
                                            in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
                                            it can be changed after the claim is created. An empty string or nil value indicates that no
                                            VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
                                            this field can be reset to its previous value (including nil) to cancel the modification.
                                            If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
                                            set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
                                            exists.
                                            More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
                                          type: string
                                        volumeMode:
                                          description: |-
                                            volumeMode defines what type of volume is required by the claim.
                                            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.
                                          type: string
                                      type: object
                                  required:
                                  - 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.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                  type: string
                                lun:
                                  description: 'lun is Optional: FC target lun number'
                                  format: int32
                                  type: integer
                                readOnly:
                                  description: |-
                                    readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                targetWWNs:
                                  description: 'targetWWNs is Optional: FC target worldwide
                                    names (WWNs)'
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                wwids:
                                  description: |-
                                    wwids Optional: FC volume world wide identifiers (wwids)
                                    Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            flexVolume:
                              description: |-
                                flexVolume represents a generic volume resource that is
                                provisioned/attached using an exec based plugin.
                                Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead.
                              properties:
                                driver:
                                  description: driver is the name of the driver to use
                                    for this volume.
                                  type: string
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
                                  type: string
                                options:
                                  additionalProperties:
                                    type: string
                                  description: 'options is Optional: this field holds
                                    extra command options if any.'
                                  type: object
                                readOnly:
                                  description: |-
                                    readOnly is Optional: defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef is Optional: secretRef is reference to the secret object containing
                                    sensitive information to pass to the plugin scripts. This may be
                                    empty if no secret object is specified. If the secret object
                                    contains more than one secret, all secrets are passed to the plugin
                                    scripts.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                              required:
                              - driver
                              type: object
                            flocker:
                              description: |-
                                flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running.
                                Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported.
                              properties:
                                datasetName:
                                  description: |-
                                    datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker
                                    should be considered as deprecated
                                  type: string
                                datasetUUID:
                                  description: datasetUUID is the UUID of the dataset.
                                    This is unique identifier of a Flocker dataset
                                  type: string
                              type: object
                            gcePersistentDisk:
                              description: |-
                                gcePersistentDisk represents a GCE Disk resource that is attached to a
                                kubelet's host machine and then exposed to the pod.
                                Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree
                                gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                              properties:
                                fsType:
                                  description: |-
                                    fsType is filesystem type of the volume that you want to mount.
                                    Tip: Ensure that the filesystem type is supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  type: string
                                partition:
                                  description: |-
                                    partition is the partition in the volume that you want to mount.
                                    If omitted, the default is to mount by volume name.
                                    Examples: For volume /dev/sda1, you specify the partition as "1".
                                    Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  format: int32
                                  type: integer
                                pdName:
                                  description: |-
                                    pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the ReadOnly setting in VolumeMounts.
                                    Defaults to false.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  type: boolean
                              required:
                              - pdName
                              type: object
                            gitRepo:
                              description: |-
                                gitRepo represents a git repository at a particular revision.
                                Deprecated: GitRepo is deprecated. To provision a container with a git repo, mount an
                                EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
                                into the Pod's container.
                              properties:
                                directory:
                                  description: |-
                                    directory is the target directory name.
                                    Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
                                    git repository.  Otherwise, if specified, the volume will contain the git repository in
                                    the subdirectory with the given name.
                                  type: string
                                repository:
                                  description: repository is the URL
                                  type: string
                                revision:
                                  description: revision is the commit hash for the specified
                                    revision.
                                  type: string
                              required:
                              - repository
                              type: object
                            glusterfs:
                              description: |-
                                glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
                                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.
                                  type: string
                                path:
                                  description: |-
                                    path is the Glusterfs volume path.
                                    More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
                                    Defaults to false.
                                    More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                  type: boolean
                              required:
                              - endpoints
                              - path
                              type: object
                            hostPath:
                              description: |-
                                hostPath represents a pre-existing file or directory on the host
                                machine that is directly exposed to the container. This is generally
                                used for system agents or other privileged things that are allowed
                                to see the host machine. Most containers will NOT need this.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                              properties:
                                path:
                                  description: |-
                                    path of the directory on the host.
                                    If the path is a symlink, it will follow the link to the real path.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                  type: string
                                type:
                                  description: |-
                                    type for HostPath Volume
                                    Defaults to ""
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                  type: string
                              required:
                              - path
                              type: object
                            image:
                              description: |-
                                image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine.
                                The volume is resolved at pod startup depending on which PullPolicy value is provided:

                                - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
                                - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
                                - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.

                                The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation.
                                A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message.
                                The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field.
                                The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images.
                                The volume will be mounted read-only (ro) and non-executable files (noexec).
                                Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath) before 1.33.
                                The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type.
                              properties:
                                pullPolicy:
                                  description: |-
                                    Policy for pulling OCI objects. Possible values are:
                                    Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
                                    Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
                                    IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.
                                    Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
                                  type: string
                                reference:
                                  description: |-
                                    Required: Image or artifact reference to be used.
                                    Behaves in the same way as pod.spec.containers[*].image.
                                    Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets.
                                    More info: https://kubernetes.io/docs/concepts/containers/images
                                    This field is optional to allow higher level config management to default or override
                                    container images in workload controllers like Deployments and StatefulSets.
                                  type: string
                              type: object
                            iscsi:
                              description: |-
                                iscsi represents an ISCSI Disk resource that is attached to a
                                kubelet's host machine and then exposed to the pod.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi
                              properties:
                                chapAuthDiscovery:
                                  description: chapAuthDiscovery defines whether support
                                    iSCSI Discovery CHAP authentication
                                  type: boolean
                                chapAuthSession:
                                  description: chapAuthSession defines whether support
                                    iSCSI Session CHAP authentication
                                  type: boolean
                                fsType:
                                  description: |-
                                    fsType is the filesystem type of the volume that you want to mount.
                                    Tip: Ensure that the filesystem type is supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
                                  type: string
                                initiatorName:
                                  description: |-
                                    initiatorName is the custom iSCSI Initiator Name.
                                    If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
                                    <target portal>:<volume name> will be created for the connection.
                                  type: string
                                iqn:
                                  description: iqn is the target iSCSI Qualified Name.
                                  type: string
                                iscsiInterface:
                                  default: default
                                  description: |-
                                    iscsiInterface is the interface Name that uses an iSCSI transport.
                                    Defaults to 'default' (tcp).
                                  type: string
                                lun:
                                  description: lun represents iSCSI Target Lun number.
                                  format: int32
                                  type: integer
                                portals:
                                  description: |-
                                    portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
                                    is other than default (typically TCP ports 860 and 3260).
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                readOnly:
                                  description: |-
                                    readOnly here will force the ReadOnly setting in VolumeMounts.
                                    Defaults to false.
                                  type: boolean
                                secretRef:
                                  description: secretRef is the CHAP Secret for iSCSI
                                    target and initiator authentication
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                targetPortal:
                                  description: |-
                                    targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
                                    is other than default (typically TCP ports 860 and 3260).
                                  type: string
                              required:
                              - iqn
                              - lun
                              - targetPortal
                              type: object
                            name:
                              description: |-
                                name of the volume.
                                Must be a DNS_LABEL and unique within the pod.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                            nfs:
                              description: |-
                                nfs represents an NFS mount on the host that shares a pod's lifetime
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                              properties:
                                path:
                                  description: |-
                                    path that is exported by the NFS server.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the NFS export to be mounted with read-only permissions.
                                    Defaults to false.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                  type: boolean
                                server:
                                  description: |-
                                    server is the hostname or IP address of the NFS server.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                  type: string
                              required:
                              - path
                              - server
                              type: object
                            persistentVolumeClaim:
                              description: |-
                                persistentVolumeClaimVolumeSource represents a reference to a
                                PersistentVolumeClaim in the same namespace.
                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                              properties:
                                claimName:
                                  description: |-
                                    claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly Will force the ReadOnly setting in VolumeMounts.
                                    Default false.
                                  type: boolean
                              required:
                              - claimName
                              type: object
                            photonPersistentDisk:
                              description: |-
                                photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine.
                                Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    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
                                  type: string
                              required:
                              - pdID
                              type: object
                            portworxVolume:
                              description: |-
                                portworxVolume represents a portworx volume attached and mounted on kubelets host machine.
                                Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type
                                are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate
                                is on.
                              properties:
                                fsType:
                                  description: |-
                                    fSType represents the filesystem type to mount
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                volumeID:
                                  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
                              properties:
                                defaultMode:
                                  description: |-
                                    defaultMode are the mode bits used to set permissions on created files by default.
                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                    Directories within the path are not affected by this setting.
                                    This might be in conflict with other options that affect the file
                                    mode, like fsGroup, and the result can be other mode bits set.
                                  format: int32
                                  type: integer
                                sources:
                                  description: |-
                                    sources is the list of volume projections. Each entry in this list
                                    handles one source.
                                  items:
                                    description: |-
                                      Projection that may be projected along with other supported volume types.
                                      Exactly one of these fields must be set.
                                    properties:
                                      clusterTrustBundle:
                                        description: |-
                                          ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
                                          of ClusterTrustBundle objects in an auto-updating file.

                                          Alpha, gated by the ClusterTrustBundleProjection feature gate.

                                          ClusterTrustBundle objects can either be selected by name, or by the
                                          combination of signer name and a label selector.

                                          Kubelet performs aggressive normalization of the PEM contents written
                                          into the pod filesystem.  Esoteric PEM features such as inter-block
                                          comments and block headers are stripped.  Certificates are deduplicated.
                                          The ordering of certificates within the file is arbitrary, and Kubelet
                                          may change the order over time.
                                        properties:
                                          labelSelector:
                                            description: |-
                                              Select all ClusterTrustBundles that match this label selector.  Only has
                                              effect if signerName is set.  Mutually-exclusive with name.  If unset,
                                              interpreted as "match nothing".  If set but empty, interpreted as "match
                                              everything".
                                            properties:
                                              matchExpressions:
                                                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.
                                                      type: string
                                                    operator:
                                                      description: |-
                                                        operator represents a key's relationship to a set of values.
                                                        Valid operators are In, NotIn, Exists and DoesNotExist.
                                                      type: string
                                                    values:
                                                      description: |-
                                                        values is an array of string values. If the operator is In or NotIn,
                                                        the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                        the values array must be empty. This array is replaced during a strategic
                                                        merge patch.
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              matchLabels:
                                                additionalProperties:
                                                  type: string
                                                description: |-
                                                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                  map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                  operator is "In", and the values array contains only "value". The requirements are ANDed.
                                                type: object
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          name:
                                            description: |-
                                              Select a single ClusterTrustBundle by object name.  Mutually-exclusive
                                              with signerName and labelSelector.
                                            type: string
                                          optional:
                                            description: |-
                                              If true, don't block pod startup if the referenced ClusterTrustBundle(s)
                                              aren't available.  If using name, then the named ClusterTrustBundle is
                                              allowed not to exist.  If using signerName, then the combination of
                                              signerName and labelSelector is allowed to match zero
                                              ClusterTrustBundles.
                                            type: boolean
                                          path:
                                            description: Relative path from the volume
                                              root to write the bundle.
                                            type: string
                                          signerName:
                                            description: |-
                                              Select all ClusterTrustBundles that match this signer name.
                                              Mutually-exclusive with name.  The contents of all selected
                                              ClusterTrustBundles will be unified and deduplicated.
                                            type: string
                                        required:
                                        - path
                                        type: object
                                      configMap:
                                        description: configMap information about the
                                          configMap data to project
                                        properties:
                                          items:
                                            description: |-
                                              items if unspecified, each key-value pair in the Data field of the referenced
                                              ConfigMap will be projected into the volume as a file whose name is the
                                              key and content is the value. If specified, the listed keys will be
                                              projected into the specified paths, and unlisted keys will not be
                                              present. If a key is specified which is not present in the ConfigMap,
                                              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.
                                              properties:
                                                key:
                                                  description: key is the key to project.
                                                  type: string
                                                mode:
                                                  description: |-
                                                    mode is Optional: mode bits used to set permissions on this file.
                                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                    If not specified, the volume defaultMode will be used.
                                                    This might be in conflict with other options that affect the file
                                                    mode, like fsGroup, and the result can be other mode bits set.
                                                  format: int32
                                                  type: integer
                                                path:
                                                  description: |-
                                                    path is the relative path of the file to map the key to.
                                                    May not be an absolute path.
                                                    May not contain the path element '..'.
                                                    May not start with the string '..'.
                                                  type: string
                                              required:
                                              - key
                                              - path
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          name:
                                            default: ""
                                            description: |-
                                              Name of the referent.
                                              This field is effectively required, but due to backwards compatibility is
                                              allowed to be empty. Instances of this type with an empty value here are
                                              almost certainly wrong.
                                              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
                                            type: boolean
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      downwardAPI:
                                        description: downwardAPI information about the
                                          downwardAPI data to project
                                        properties:
                                          items:
                                            description: Items is a list of DownwardAPIVolume
                                              file
                                            items:
                                              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.'
                                                  properties:
                                                    apiVersion:
                                                      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.
                                                      type: string
                                                  required:
                                                  - fieldPath
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                mode:
                                                  description: |-
                                                    Optional: mode bits used to set permissions on this file, must be an octal value
                                                    between 0000 and 0777 or a decimal value between 0 and 511.
                                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                    If not specified, the volume defaultMode will be used.
                                                    This might be in conflict with other options that affect the file
                                                    mode, like fsGroup, and the result can be other mode bits set.
                                                  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 ''..'''
                                                  type: string
                                                resourceFieldRef:
                                                  description: |-
                                                    Selects a resource of the container: only resources limits and requests
                                                    (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                                  properties:
                                                    containerName:
                                                      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"
                                                      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'
                                                      type: string
                                                  required:
                                                  - resource
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                              required:
                                              - path
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        type: object
                                      podCertificate:
                                        description: |-
                                          Projects an auto-rotating credential bundle (private key and certificate
                                          chain) that the pod can use either as a TLS client or server.

                                          Kubelet generates a private key and uses it to send a
                                          PodCertificateRequest to the named signer.  Once the signer approves the
                                          request and issues a certificate chain, Kubelet writes the key and
                                          certificate chain to the pod filesystem.  The pod does not start until
                                          certificates have been issued for each podCertificate projected volume
                                          source in its spec.

                                          Kubelet will begin trying to rotate the certificate at the time indicated
                                          by the signer using the PodCertificateRequest.Status.BeginRefreshAt
                                          timestamp.

                                          Kubelet can write a single file, indicated by the credentialBundlePath
                                          field, or separate files, indicated by the keyPath and
                                          certificateChainPath fields.

                                          The credential bundle is a single file in PEM format.  The first PEM
                                          entry is the private key (in PKCS#8 format), and the remaining PEM
                                          entries are the certificate chain issued by the signer (typically,
                                          signers will return their certificate chain in leaf-to-root order).

                                          Prefer using the credential bundle format, since your application code
                                          can read it atomically.  If you use keyPath and certificateChainPath,
                                          your application must make two separate file reads. If these coincide
                                          with a certificate rotation, it is possible that the private key and leaf
                                          certificate you read may not correspond to each other.  Your application
                                          will need to check for this condition, and re-read until they are
                                          consistent.

                                          The named signer controls chooses the format of the certificate it
                                          issues; consult the signer implementation's documentation to learn how to
                                          use the certificates it issues.
                                        properties:
                                          certificateChainPath:
                                            description: |-
                                              Write the certificate chain at this path in the projected volume.

                                              Most applications should use credentialBundlePath.  When using keyPath
                                              and certificateChainPath, your application needs to check that the key
                                              and leaf certificate are consistent, because it is possible to read the
                                              files mid-rotation.
                                            type: string
                                          credentialBundlePath:
                                            description: |-
                                              Write the credential bundle at this path in the projected volume.

                                              The credential bundle is a single file that contains multiple PEM blocks.
                                              The first PEM block is a PRIVATE KEY block, containing a PKCS#8 private
                                              key.

                                              The remaining blocks are CERTIFICATE blocks, containing the issued
                                              certificate chain from the signer (leaf and any intermediates).

                                              Using credentialBundlePath lets your Pod's application code make a single
                                              atomic read that retrieves a consistent key and certificate chain.  If you
                                              project them to separate files, your application code will need to
                                              additionally check that the leaf certificate was issued to the key.
                                            type: string
                                          keyPath:
                                            description: |-
                                              Write the key at this path in the projected volume.

                                              Most applications should use credentialBundlePath.  When using keyPath
                                              and certificateChainPath, your application needs to check that the key
                                              and leaf certificate are consistent, because it is possible to read the
                                              files mid-rotation.
                                            type: string
                                          keyType:
                                            description: |-
                                              The type of keypair Kubelet will generate for the pod.

                                              Valid values are "RSA3072", "RSA4096", "ECDSAP256", "ECDSAP384",
                                              "ECDSAP521", and "ED25519".
                                            type: string
                                          maxExpirationSeconds:
                                            description: |-
                                              maxExpirationSeconds is the maximum lifetime permitted for the
                                              certificate.

                                              Kubelet copies this value verbatim into the PodCertificateRequests it
                                              generates for this projection.

                                              If omitted, kube-apiserver will set it to 86400(24 hours). kube-apiserver
                                              will reject values shorter than 3600 (1 hour).  The maximum allowable
                                              value is 7862400 (91 days).

                                              The signer implementation is then free to issue a certificate with any
                                              lifetime *shorter* than MaxExpirationSeconds, but no shorter than 3600
                                              seconds (1 hour).  This constraint is enforced by kube-apiserver.
                                              `kubernetes.io` signers will never issue certificates with a lifetime
                                              longer than 24 hours.
                                            format: int32
                                            type: integer
                                          signerName:
                                            description: Kubelet's generated CSRs will
                                              be addressed to this signer.
                                            type: string
                                          userAnnotations:
                                            additionalProperties:
                                              type: string
                                            description: |-
                                              userAnnotations allow pod authors to pass additional information to
                                              the signer implementation.  Kubernetes does not restrict or validate this
                                              metadata in any way.

                                              These values are copied verbatim into the `spec.unverifiedUserAnnotations` field of
                                              the PodCertificateRequest objects that Kubelet creates.

                                              Entries are subject to the same validation as object metadata annotations,
                                              with the addition that all keys must be domain-prefixed. No restrictions
                                              are placed on values, except an overall size limitation on the entire field.

                                              Signers should document the keys and values they support. Signers should
                                              deny requests that contain keys they do not recognize.
                                            type: object
                                        required:
                                        - keyType
                                        - signerName
                                        type: object
                                      secret:
                                        description: secret information about the secret
                                          data to project
                                        properties:
                                          items:
                                            description: |-
                                              items if unspecified, each key-value pair in the Data field of the referenced
                                              Secret will be projected into the volume as a file whose name is the
                                              key and content is the value. If specified, the listed keys will be
                                              projected into the specified paths, and unlisted keys will not be
                                              present. If a key is specified which is not present in the Secret,
                                              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.
                                              properties:
                                                key:
                                                  description: key is the key to project.
                                                  type: string
                                                mode:
                                                  description: |-
                                                    mode is Optional: mode bits used to set permissions on this file.
                                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                    If not specified, the volume defaultMode will be used.
                                                    This might be in conflict with other options that affect the file
                                                    mode, like fsGroup, and the result can be other mode bits set.
                                                  format: int32
                                                  type: integer
                                                path:
                                                  description: |-
                                                    path is the relative path of the file to map the key to.
                                                    May not be an absolute path.
                                                    May not contain the path element '..'.
                                                    May not start with the string '..'.
                                                  type: string
                                              required:
                                              - key
                                              - path
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          name:
                                            default: ""
                                            description: |-
                                              Name of the referent.
                                              This field is effectively required, but due to backwards compatibility is
                                              allowed to be empty. Instances of this type with an empty value here are
                                              almost certainly wrong.
                                              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
                                            type: boolean
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      serviceAccountToken:
                                        description: serviceAccountToken is information
                                          about the serviceAccountToken data to project
                                        properties:
                                          audience:
                                            description: |-
                                              audience is the intended audience of the token. A recipient of a token
                                              must identify itself with an identifier specified in the audience of the
                                              token, and otherwise should reject the token. The audience defaults to the
                                              identifier of the apiserver.
                                            type: string
                                          expirationSeconds:
                                            description: |-
                                              expirationSeconds is the requested duration of validity of the service
                                              account token. As the token approaches expiration, the kubelet volume
                                              plugin will proactively rotate the service account token. The kubelet will
                                              start trying to rotate the token if the token is older than 80 percent of
                                              its time to live or if the token is older than 24 hours.Defaults to 1 hour
                                              and must be at least 10 minutes.
                                            format: int64
                                            type: integer
                                          path:
                                            description: |-
                                              path is the path relative to the mount point of the file to project the
                                              token into.
                                            type: string
                                        required:
                                        - path
                                        type: object
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            quobyte:
                              description: |-
                                quobyte represents a Quobyte mount on the host that shares a pod's lifetime.
                                Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.
                              properties:
                                group:
                                  description: |-
                                    group to map volume access to
                                    Default is no group
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the Quobyte volume to be mounted with read-only permissions.
                                    Defaults to false.
                                  type: boolean
                                registry:
                                  description: |-
                                    registry represents a single or multiple Quobyte Registry services
                                    specified as a string as host:port pair (multiple entries are separated with commas)
                                    which acts as the central registry for volumes
                                  type: string
                                tenant:
                                  description: |-
                                    tenant owning the given Quobyte volume in the Backend
                                    Used with dynamically provisioned Quobyte volumes, value is set by the plugin
                                  type: string
                                user:
                                  description: |-
                                    user to map volume access to
                                    Defaults to serivceaccount user
                                  type: string
                                volume:
                                  description: volume is a string that references an
                                    already created Quobyte volume by name.
                                  type: string
                              required:
                              - registry
                              - volume
                              type: object
                            rbd:
                              description: |-
                                rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
                                Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type of the volume that you want to mount.
                                    Tip: Ensure that the filesystem type is supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
                                  type: string
                                image:
                                  description: |-
                                    image is the rados image name.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: string
                                keyring:
                                  default: /etc/ceph/keyring
                                  description: |-
                                    keyring is the path to key ring for RBDUser.
                                    Default is /etc/ceph/keyring.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: string
                                monitors:
                                  description: |-
                                    monitors is a collection of Ceph monitors.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                pool:
                                  default: rbd
                                  description: |-
                                    pool is the rados pool name.
                                    Default is rbd.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the ReadOnly setting in VolumeMounts.
                                    Defaults to false.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef is name of the authentication secret for RBDUser. If provided
                                    overrides keyring.
                                    Default is nil.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                user:
                                  default: admin
                                  description: |-
                                    user is the rados user name.
                                    Default is admin.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: string
                              required:
                              - image
                              - monitors
                              type: object
                            scaleIO:
                              description: |-
                                scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
                                Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.
                              properties:
                                fsType:
                                  default: xfs
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs", "ntfs".
                                    Default is "xfs".
                                  type: string
                                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.
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly Defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef references to the secret for ScaleIO user and other
                                    sensitive information. If this is not provided, Login operation will fail.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                sslEnabled:
                                  description: sslEnabled Flag enable/disable SSL communication
                                    with Gateway, default false
                                  type: boolean
                                storageMode:
                                  default: ThinProvisioned
                                  description: |-
                                    storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
                                    Default is ThinProvisioned.
                                  type: string
                                storagePool:
                                  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.
                                  type: string
                                volumeName:
                                  description: |-
                                    volumeName is the name of a volume already created in the ScaleIO system
                                    that is associated with this volume source.
                                  type: string
                              required:
                              - gateway
                              - secretRef
                              - system
                              type: object
                            secret:
                              description: |-
                                secret represents a secret that should populate this volume.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                              properties:
                                defaultMode:
                                  description: |-
                                    defaultMode is Optional: mode bits used to set permissions on created files by default.
                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                    YAML accepts both octal and decimal values, JSON requires decimal values
                                    for mode bits. Defaults to 0644.
                                    Directories within the path are not affected by this setting.
                                    This might be in conflict with other options that affect the file
                                    mode, like fsGroup, and the result can be other mode bits set.
                                  format: int32
                                  type: integer
                                items:
                                  description: |-
                                    items If unspecified, each key-value pair in the Data field of the referenced
                                    Secret will be projected into the volume as a file whose name is the
                                    key and content is the value. If specified, the listed keys will be
                                    projected into the specified paths, and unlisted keys will not be
                                    present. If a key is specified which is not present in the Secret,
                                    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.
                                    properties:
                                      key:
                                        description: key is the key to project.
                                        type: string
                                      mode:
                                        description: |-
                                          mode is Optional: mode bits used to set permissions on this file.
                                          Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                          YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                          If not specified, the volume defaultMode will be used.
                                          This might be in conflict with other options that affect the file
                                          mode, like fsGroup, and the result can be other mode bits set.
                                        format: int32
                                        type: integer
                                      path:
                                        description: |-
                                          path is the relative path of the file to map the key to.
                                          May not be an absolute path.
                                          May not contain the path element '..'.
                                          May not start with the string '..'.
                                        type: string
                                    required:
                                    - key
                                    - path
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                optional:
                                  description: optional field specify whether the Secret
                                    or its keys must be defined
                                  type: boolean
                                secretName:
                                  description: |-
                                    secretName is the name of the secret in the pod's namespace to use.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                                  type: string
                              type: object
                            storageos:
                              description: |-
                                storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
                                Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef specifies the secret to use for obtaining the StorageOS API
                                    credentials.  If not specified, default values will be attempted.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                volumeName:
                                  description: |-
                                    volumeName is the human-readable name of the StorageOS volume.  Volume
                                    names are only unique within a namespace.
                                  type: string
                                volumeNamespace:
                                  description: |-
                                    volumeNamespace specifies the scope of the volume within StorageOS.  If no
                                    namespace is specified then the Pod's namespace will be used.  This allows the
                                    Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
                                    Set VolumeName to any name to override the default behaviour.
                                    Set to "default" if you are not using namespaces within StorageOS.
                                    Namespaces that do not pre-exist within StorageOS will be created.
                                  type: string
                              type: object
                            vsphereVolume:
                              description: |-
                                vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine.
                                Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type
                                are redirected to the csi.vsphere.vmware.com CSI driver.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    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.
                                  type: string
                                storagePolicyName:
                                  description: storagePolicyName is the storage Policy
                                    Based Management (SPBM) profile name.
                                  type: string
                                volumePath:
                                  description: volumePath is the path that identifies
                                    vSphere volume vmdk
                                  type: string
                              required:
                              - volumePath
                              type: object
                          required:
                          - name
                          type: object
                      type: object
                    type: array
                type: object
              deployCsiAddons:
                description: a list of additional sidecars?
                type: boolean
              enableFencing:
                description: |-
                  Set to true to enable fencing for the driver.
                  Fencing is a feature that allows the driver to fence a node when it is tainted with node.kubernetes.io/out-of-service.
                type: boolean
              enableMetadata:
                description: |-
                  Set to true to enable adding volume metadata on the CephFS subvolumes and RBD images.
                  Not all users might be interested in getting volume/snapshot details as metadata on CephFS subvolume and RBD images.
                  Hence enable metadata is false by default.
                type: boolean
              encryption:
                description: Driver's encryption settings
                properties:
                  configMapName:
                    description: |-
                      LocalObjectReference contains enough information to let you locate the
                      referenced object inside the same namespace.
                    properties:
                      name:
                        default: ""
                        description: |-
                          Name of the referent.
                          This field is effectively required, but due to backwards compatibility is
                          allowed to be empty. Instances of this type with an empty value here are
                          almost certainly wrong.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                    x-kubernetes-validations:
                    - message: '''.name'' cannot be empty'
                      rule: self.name != ""
                required:
                - configMapName
                type: object
              fsGroupPolicy:
                description: |-
                  Policy for modifying a volume's ownership or permissions when the PVC is being mounted.
                  supported values are documented at https://kubernetes-csi.github.io/docs/support-fsgroup.html
                type: string
              fuseMountOptions:
                additionalProperties:
                  type: string
                description: Set mount options to use when using the Fuse client
                type: object
              generateOMapInfo:
                description: |-
                  OMAP generator will generate the omap mapping between the PV name and the RBD image.
                  Need to be enabled when we are using rbd mirroring feature.
                  By default OMAP generator sidecar is not deployed with Csi controller plugin pod, to enable
                  it set it to true.
                type: boolean
              grpcTimeout:
                description: Set the gRPC timeout for gRPC call issued by the driver
                  components
                minimum: 0
                type: integer
              imageSet:
                description: |-
                  A reference to a ConfigMap resource holding image overwrite for deployed
                  containers
                properties:
                  name:
                    default: ""
                    description: |-
                      Name of the referent.
                      This field is effectively required, but due to backwards compatibility is
                      allowed to be empty. Instances of this type with an empty value here are
                      almost certainly wrong.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                type: object
                x-kubernetes-map-type: atomic
                x-kubernetes-validations:
                - message: '''.name'' cannot be empty'
                  rule: self.name != ""
              kernelMountOptions:
                additionalProperties:
                  type: string
                description: |-
                  Set mount options to use https://docs.ceph.com/en/latest/man/8/mount.ceph/#options
                  Set to "ms_mode=secure" when connections.encrypted is enabled in Ceph
                type: object
              leaderElection:
                description: Leader election setting
                properties:
                  leaseDuration:
                    description: |-
                      Duration in seconds that non-leader candidates will wait to force acquire leadership.
                      Default to 137 seconds.
                    minimum: 0
                    type: integer
                  renewDeadline:
                    description: |-
                      Deadline in seconds that the acting leader will retry refreshing leadership before giving up.
                      Defaults to 107 seconds.
                    minimum: 0
                    type: integer
                  retryPeriod:
                    description: |-
                      Retry Period in seconds the LeaderElector clients should wait between tries of actions.
                      Defaults to 26 seconds.
                    minimum: 0
                    type: integer
                type: object
              liveness:
                description: |-
                  Liveness metrics configuration.
                  disabled by default.
                properties:
                  metricsPort:
                    description: Port to expose liveness metrics
                    maximum: 65535
                    minimum: 1024
                    type: integer
                required:
                - metricsPort
                type: object
              log:
                description: Logging configuration for driver's pods
                properties:
                  rotation:
                    description: log rotation for csi pods
                    properties:
                      logHostPath:
                        description: |-
                          LogHostPath is the prefix directory path for the csi log files
                          Default to /var/lib/cephcsi
                        type: string
                      maxFiles:
                        description: |-
                          MaxFiles is the number of logrtoate files
                          Default to 7
                        type: integer
                      maxLogSize:
                        anyOf:
                        - type: integer
                        - type: string
                        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.
                        enum:
                        - hourly
                        - daily
                        - weekly
                        - monthly
                        type: string
                    type: object
                    x-kubernetes-validations:
                    - message: Either maxLogSize or periodicity must be set
                      rule: (has(self.maxLogSize)) || (has(self.periodicity))
                  verbosity:
                    description: |-
                      Log verbosity level for driver pods,
                      Supported values from 0 to 5. 0 for general useful logs (the default), 5 for trace level verbosity.
                      Default to 0
                    maximum: 5
                    minimum: 0
                    type: integer
                type: object
              nodePlugin:
                description: Driver's plugin configuration
                properties:
                  affinity:
                    description: Pod's affinity settings
                    properties:
                      nodeAffinity:
                        description: Describes node affinity scheduling rules for the
                          pod.
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              The scheduler will prefer to schedule pods to nodes that satisfy
                              the affinity expressions specified by this field, but it may choose
                              a node that violates one or more of the expressions. The node that is
                              most preferred is the one with the greatest sum of weights, i.e.
                              for each node that meets all of the scheduling requirements (resource
                              request, requiredDuringScheduling affinity expressions, etc.),
                              compute a sum by iterating through the elements of this field and adding
                              "weight" to the sum if the node matches the corresponding matchExpressions; the
                              node(s) with the highest sum are the most preferred.
                            items:
                              description: |-
                                An empty preferred scheduling term matches all objects with implicit weight 0
                                (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.
                                  properties:
                                    matchExpressions:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchFields:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                  x-kubernetes-map-type: atomic
                                weight:
                                  description: Weight associated with matching the corresponding
                                    nodeSelectorTerm, in the range 1-100.
                                  format: int32
                                  type: integer
                              required:
                              - preference
                              - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              If the affinity requirements specified by this field are not met at
                              scheduling time, the pod will not be scheduled onto the node.
                              If the affinity requirements specified by this field cease to be met
                              at some point during pod execution (e.g. due to an update), the system
                              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.
                                items:
                                  description: |-
                                    A null or empty node selector term matches no objects. The requirements of
                                    them are ANDed.
                                    The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
                                  properties:
                                    matchExpressions:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchFields:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                  x-kubernetes-map-type: atomic
                                type: array
                                x-kubernetes-list-type: atomic
                            required:
                            - nodeSelectorTerms
                            type: object
                            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)).
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              The scheduler will prefer to schedule pods to nodes that satisfy
                              the affinity expressions specified by this field, but it may choose
                              a node that violates one or more of the expressions. The node that is
                              most preferred is the one with the greatest sum of weights, i.e.
                              for each node that meets all of the scheduling requirements (resource
                              request, requiredDuringScheduling affinity expressions, etc.),
                              compute a sum by iterating through the elements of this field and adding
                              "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)
                              properties:
                                podAffinityTerm:
                                  description: Required. A pod affinity term, associated
                                    with the corresponding weight.
                                  properties:
                                    labelSelector:
                                      description: |-
                                        A label query over a set of resources, in this case pods.
                                        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.
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      description: |-
                                        MatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      description: |-
                                        MismatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      description: |-
                                        A label query over the set of namespaces that the term applies to.
                                        The term is applied to the union of the namespaces selected by this field
                                        and the ones listed in the namespaces field.
                                        null selector and null or empty namespaces list means "this pod's namespace".
                                        An empty selector ({}) matches all namespaces.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      description: |-
                                        namespaces specifies a static list of namespace names that the term applies to.
                                        The term is applied to the union of the namespaces listed in this field
                                        and the ones selected by namespaceSelector.
                                        null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      description: |-
                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                        whose value of the label with key topologyKey matches that of any node on which any of the
                                        selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                weight:
                                  description: |-
                                    weight associated with matching the corresponding podAffinityTerm,
                                    in the range 1-100.
                                  format: int32
                                  type: integer
                              required:
                              - podAffinityTerm
                              - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              If the affinity requirements specified by this field are not met at
                              scheduling time, the pod will not be scheduled onto the node.
                              If the affinity requirements specified by this field cease to be met
                              at some point during pod execution (e.g. due to a pod label update), the
                              system may or may not try to eventually evict the pod from its node.
                              When there are multiple elements, the lists of nodes corresponding to each
                              podAffinityTerm are intersected, i.e. all terms must be satisfied.
                            items:
                              description: |-
                                Defines a set of pods (namely those matching the labelSelector
                                relative to the given namespace(s)) that this pod should be
                                co-located (affinity) or not co-located (anti-affinity) with,
                                where co-located is defined as running on a node whose value of
                                the label with key <topologyKey> matches that of any node on which
                                a pod of the set of pods is running
                              properties:
                                labelSelector:
                                  description: |-
                                    A label query over a set of resources, in this case pods.
                                    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.
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                matchLabelKeys:
                                  description: |-
                                    MatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                mismatchLabelKeys:
                                  description: |-
                                    MismatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                namespaceSelector:
                                  description: |-
                                    A label query over the set of namespaces that the term applies to.
                                    The term is applied to the union of the namespaces selected by this field
                                    and the ones listed in the namespaces field.
                                    null selector and null or empty namespaces list means "this pod's namespace".
                                    An empty selector ({}) matches all namespaces.
                                  properties:
                                    matchExpressions:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                namespaces:
                                  description: |-
                                    namespaces specifies a static list of namespace names that the term applies to.
                                    The term is applied to the union of the namespaces listed in this field
                                    and the ones selected by namespaceSelector.
                                    null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                topologyKey:
                                  description: |-
                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                    whose value of the label with key topologyKey matches that of any node on which any of the
                                    selected pods is running.
                                    Empty topologyKey is not allowed.
                                  type: string
                              required:
                              - topologyKey
                              type: object
                            type: array
                            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)).
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              The scheduler will prefer to schedule pods to nodes that satisfy
                              the anti-affinity expressions specified by this field, but it may choose
                              a node that violates one or more of the expressions. The node that is
                              most preferred is the one with the greatest sum of weights, i.e.
                              for each node that meets all of the scheduling requirements (resource
                              request, requiredDuringScheduling anti-affinity expressions, etc.),
                              compute a sum by iterating through the elements of this field and subtracting
                              "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)
                              properties:
                                podAffinityTerm:
                                  description: Required. A pod affinity term, associated
                                    with the corresponding weight.
                                  properties:
                                    labelSelector:
                                      description: |-
                                        A label query over a set of resources, in this case pods.
                                        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.
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      description: |-
                                        MatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      description: |-
                                        MismatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      description: |-
                                        A label query over the set of namespaces that the term applies to.
                                        The term is applied to the union of the namespaces selected by this field
                                        and the ones listed in the namespaces field.
                                        null selector and null or empty namespaces list means "this pod's namespace".
                                        An empty selector ({}) matches all namespaces.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      description: |-
                                        namespaces specifies a static list of namespace names that the term applies to.
                                        The term is applied to the union of the namespaces listed in this field
                                        and the ones selected by namespaceSelector.
                                        null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      description: |-
                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                        whose value of the label with key topologyKey matches that of any node on which any of the
                                        selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                weight:
                                  description: |-
                                    weight associated with matching the corresponding podAffinityTerm,
                                    in the range 1-100.
                                  format: int32
                                  type: integer
                              required:
                              - podAffinityTerm
                              - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              If the anti-affinity requirements specified by this field are not met at
                              scheduling time, the pod will not be scheduled onto the node.
                              If the anti-affinity requirements specified by this field cease to be met
                              at some point during pod execution (e.g. due to a pod label update), the
                              system may or may not try to eventually evict the pod from its node.
                              When there are multiple elements, the lists of nodes corresponding to each
                              podAffinityTerm are intersected, i.e. all terms must be satisfied.
                            items:
                              description: |-
                                Defines a set of pods (namely those matching the labelSelector
                                relative to the given namespace(s)) that this pod should be
                                co-located (affinity) or not co-located (anti-affinity) with,
                                where co-located is defined as running on a node whose value of
                                the label with key <topologyKey> matches that of any node on which
                                a pod of the set of pods is running
                              properties:
                                labelSelector:
                                  description: |-
                                    A label query over a set of resources, in this case pods.
                                    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.
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                matchLabelKeys:
                                  description: |-
                                    MatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                mismatchLabelKeys:
                                  description: |-
                                    MismatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                namespaceSelector:
                                  description: |-
                                    A label query over the set of namespaces that the term applies to.
                                    The term is applied to the union of the namespaces selected by this field
                                    and the ones listed in the namespaces field.
                                    null selector and null or empty namespaces list means "this pod's namespace".
                                    An empty selector ({}) matches all namespaces.
                                  properties:
                                    matchExpressions:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                namespaces:
                                  description: |-
                                    namespaces specifies a static list of namespace names that the term applies to.
                                    The term is applied to the union of the namespaces listed in this field
                                    and the ones selected by namespaceSelector.
                                    null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                topologyKey:
                                  description: |-
                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                    whose value of the label with key topologyKey matches that of any node on which any of the
                                    selected pods is running.
                                    Empty topologyKey is not allowed.
                                  type: string
                              required:
                              - topologyKey
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                        type: object
                    type: object
                  annotations:
                    additionalProperties:
                      type: string
                    description: Pod's annotations
                    type: object
                  enableSeLinuxHostMount:
                    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.
                    type: string
                  kubeletDirPath:
                    description: kubelet directory path, if kubelet configured to use
                      other than /var/lib/kubelet path.
                    type: string
                  labels:
                    additionalProperties:
                      type: string
                    description: Pod's labels
                    type: object
                  priorityClassName:
                    description: Pod's user defined priority class name
                    type: string
                  resources:
                    description: Resource requirements for plugin's containers
                    properties:
                      addons:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      liveness:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      logRotator:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      plugin:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      registrar:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                    type: object
                  serviceAccountName:
                    description: Service account name to be used for driver's pods
                    type: string
                  tolerations:
                    description: Pod's tolerations list
                    items:
                      description: |-
                        The pod this Toleration is attached to tolerates any taint that matches
                        the triple <key,value,effect> using the matching operator <operator>.
                      properties:
                        effect:
                          description: |-
                            Effect indicates the taint effect to match. Empty means match all taint effects.
                            When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
                          type: string
                        key:
                          description: |-
                            Key is the taint key that the toleration applies to. Empty means match all taint keys.
                            If the key is empty, operator must be Exists; this combination means to match all values and all keys.
                          type: string
                        operator:
                          description: |-
                            Operator represents a key's relationship to the value.
                            Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal.
                            Exists is equivalent to wildcard for value, so that a pod can
                            tolerate all taints of a particular category.
                            Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators).
                          type: string
                        tolerationSeconds:
                          description: |-
                            TolerationSeconds represents the period of time the toleration (which must be
                            of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
                            it is not set, which means tolerate the taint forever (do not evict). Zero and
                            negative values will be treated as 0 (evict immediately) by the system.
                          format: int64
                          type: integer
                        value:
                          description: |-
                            Value is the taint value the toleration matches to.
                            If the operator is Exists, the value should be empty, otherwise just a regular string.
                          type: string
                      type: object
                    type: array
                  topology:
                    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
                        items:
                          type: string
                        type: array
                    required:
                    - domainLabels
                    type: object
                  updateStrategy:
                    description: |-
                      Driver's plugin daemonset update strategy, supported values are OnDelete and RollingUpdate.
                      Default value is RollingUpdate with MaxAvailabile set to 1
                    properties:
                      rollingUpdate:
                        description: Rolling update config params. Present only if type
                          = "RollingUpdate".
                        properties:
                          maxSurge:
                            anyOf:
                            - type: integer
                            - type: string
                            description: |-
                              The maximum number of nodes with an existing available DaemonSet pod that
                              can have an updated DaemonSet pod during during an update.
                              Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
                              This can not be 0 if MaxUnavailable is 0.
                              Absolute number is calculated from percentage by rounding up to a minimum of 1.
                              Default value is 0.
                              Example: when this is set to 30%, at most 30% of the total number of nodes
                              that should be running the daemon pod (i.e. status.desiredNumberScheduled)
                              can have their a new pod created before the old pod is marked as deleted.
                              The update starts by launching new pods on 30% of nodes. Once an updated
                              pod is available (Ready for at least minReadySeconds) the old DaemonSet pod
                              on that node is marked deleted. If the old pod becomes unavailable for any
                              reason (Ready transitions to false, is evicted, or is drained) an updated
                              pod is immediately created on that node without considering surge limits.
                              Allowing surge implies the possibility that the resources consumed by the
                              daemonset on any given node can double if the readiness check fails, and
                              so resource intensive daemonsets should take into account that they may
                              cause evictions during disruption.
                            x-kubernetes-int-or-string: true
                          maxUnavailable:
                            anyOf:
                            - type: integer
                            - type: string
                            description: |-
                              The maximum number of DaemonSet pods that can be unavailable during the
                              update. Value can be an absolute number (ex: 5) or a percentage of total
                              number of DaemonSet pods at the start of the update (ex: 10%). Absolute
                              number is calculated from percentage by rounding up.
                              This cannot be 0 if MaxSurge is 0
                              Default value is 1.
                              Example: when this is set to 30%, at most 30% of the total number of nodes
                              that should be running the daemon pod (i.e. status.desiredNumberScheduled)
                              can have their pods stopped for an update at any given time. The update
                              starts by stopping at most 30% of those DaemonSet pods and then brings
                              up new DaemonSet pods in their place. Once the new pods are available,
                              it then proceeds onto other DaemonSet pods, thus ensuring that at least
                              70% of original number of DaemonSet pods are available at all times during
                              the update.
                            x-kubernetes-int-or-string: true
                        type: object
                      type:
                        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
                    items:
                      properties:
                        mount:
                          description: VolumeMount describes a mounting of a Volume
                            within a container.
                          properties:
                            mountPath:
                              description: |-
                                Path within the container at which the volume should be mounted.  Must
                                not contain ':'.
                              type: string
                            mountPropagation:
                              description: |-
                                mountPropagation determines how mounts are propagated from the host
                                to container and the other way around.
                                When not set, MountPropagationNone is used.
                                This field is beta in 1.10.
                                When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
                                (which defaults to None).
                              type: string
                            name:
                              description: This must match the Name of a Volume.
                              type: string
                            readOnly:
                              description: |-
                                Mounted read-only if true, read-write otherwise (false or unspecified).
                                Defaults to false.
                              type: boolean
                            recursiveReadOnly:
                              description: |-
                                RecursiveReadOnly specifies whether read-only mounts should be handled
                                recursively.

                                If ReadOnly is false, this field has no meaning and must be unspecified.

                                If ReadOnly is true, and this field is set to Disabled, the mount is not made
                                recursively read-only.  If this field is set to IfPossible, the mount is made
                                recursively read-only, if it is supported by the container runtime.  If this
                                field is set to Enabled, the mount is made recursively read-only if it is
                                supported by the container runtime, otherwise the pod will not be started and
                                an error will be generated to indicate the reason.

                                If this field is set to IfPossible or Enabled, MountPropagation must be set to
                                None (or be unspecified, which defaults to None).

                                If this field is not specified, it is treated as an equivalent of Disabled.
                              type: string
                            subPath:
                              description: |-
                                Path within the volume from which the container's volume should be mounted.
                                Defaults to "" (volume's root).
                              type: string
                            subPathExpr:
                              description: |-
                                Expanded path within the volume from which the container's volume should be mounted.
                                Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
                                Defaults to "" (volume's root).
                                SubPathExpr and SubPath are mutually exclusive.
                              type: string
                          required:
                          - mountPath
                          - name
                          type: object
                        volume:
                          description: Volume represents a named volume in a pod that
                            may be accessed by any container in the pod.
                          properties:
                            awsElasticBlockStore:
                              description: |-
                                awsElasticBlockStore represents an AWS Disk resource that is attached to a
                                kubelet's host machine and then exposed to the pod.
                                Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree
                                awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type of the volume that you want to mount.
                                    Tip: Ensure that the filesystem type is supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                  type: string
                                partition:
                                  description: |-
                                    partition is the partition in the volume that you want to mount.
                                    If omitted, the default is to mount by volume name.
                                    Examples: For volume /dev/sda1, you specify the partition as "1".
                                    Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
                                  format: int32
                                  type: integer
                                readOnly:
                                  description: |-
                                    readOnly value true will force the readOnly setting in VolumeMounts.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                  type: boolean
                                volumeID:
                                  description: |-
                                    volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                  type: string
                              required:
                              - volumeID
                              type: object
                            azureDisk:
                              description: |-
                                azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
                                Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type
                                are redirected to the disk.csi.azure.com CSI driver.
                              properties:
                                cachingMode:
                                  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
                                  type: string
                                diskURI:
                                  description: diskURI is the URI of data disk in the
                                    blob storage
                                  type: string
                                fsType:
                                  default: ext4
                                  description: |-
                                    fsType is Filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    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'
                                  type: string
                                readOnly:
                                  default: false
                                  description: |-
                                    readOnly Defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                              required:
                              - diskName
                              - diskURI
                              type: object
                            azureFile:
                              description: |-
                                azureFile represents an Azure File Service mount on the host and bind mount to the pod.
                                Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type
                                are redirected to the file.csi.azure.com CSI driver.
                              properties:
                                readOnly:
                                  description: |-
                                    readOnly defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                secretName:
                                  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
                                  type: string
                              required:
                              - secretName
                              - shareName
                              type: object
                            cephfs:
                              description: |-
                                cephFS represents a Ceph FS mount on the host that shares a pod's lifetime.
                                Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.
                              properties:
                                monitors:
                                  description: |-
                                    monitors is Required: Monitors is a collection of Ceph monitors
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  items:
                                    type: string
                                  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
                                    /'
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  type: boolean
                                secretFile:
                                  description: |-
                                    secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  type: string
                                secretRef:
                                  description: |-
                                    secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                user:
                                  description: |-
                                    user is optional: User is the rados user name, default is admin
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  type: string
                              required:
                              - monitors
                              type: object
                            cinder:
                              description: |-
                                cinder represents a cinder volume attached and mounted on kubelets host machine.
                                Deprecated: Cinder is deprecated. All operations for the in-tree cinder type
                                are redirected to the cinder.csi.openstack.org CSI driver.
                                More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                    More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef is optional: points to a secret object containing parameters used to connect
                                    to OpenStack.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                volumeID:
                                  description: |-
                                    volumeID used to identify the volume in cinder.
                                    More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                  type: string
                              required:
                              - volumeID
                              type: object
                            configMap:
                              description: configMap represents a configMap that should
                                populate this volume
                              properties:
                                defaultMode:
                                  description: |-
                                    defaultMode is optional: mode bits used to set permissions on created files by default.
                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                    Defaults to 0644.
                                    Directories within the path are not affected by this setting.
                                    This might be in conflict with other options that affect the file
                                    mode, like fsGroup, and the result can be other mode bits set.
                                  format: int32
                                  type: integer
                                items:
                                  description: |-
                                    items if unspecified, each key-value pair in the Data field of the referenced
                                    ConfigMap will be projected into the volume as a file whose name is the
                                    key and content is the value. If specified, the listed keys will be
                                    projected into the specified paths, and unlisted keys will not be
                                    present. If a key is specified which is not present in the ConfigMap,
                                    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.
                                    properties:
                                      key:
                                        description: key is the key to project.
                                        type: string
                                      mode:
                                        description: |-
                                          mode is Optional: mode bits used to set permissions on this file.
                                          Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                          YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                          If not specified, the volume defaultMode will be used.
                                          This might be in conflict with other options that affect the file
                                          mode, like fsGroup, and the result can be other mode bits set.
                                        format: int32
                                        type: integer
                                      path:
                                        description: |-
                                          path is the relative path of the file to map the key to.
                                          May not be an absolute path.
                                          May not contain the path element '..'.
                                          May not start with the string '..'.
                                        type: string
                                    required:
                                    - key
                                    - path
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    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
                                  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.
                              properties:
                                driver:
                                  description: |-
                                    driver is the name of the CSI driver that handles this volume.
                                    Consult with your admin for the correct name as registered in the cluster.
                                  type: string
                                fsType:
                                  description: |-
                                    fsType to mount. Ex. "ext4", "xfs", "ntfs".
                                    If not provided, the empty value is passed to the associated CSI driver
                                    which will determine the default filesystem to apply.
                                  type: string
                                nodePublishSecretRef:
                                  description: |-
                                    nodePublishSecretRef is a reference to the secret object containing
                                    sensitive information to pass to the CSI driver to complete the CSI
                                    NodePublishVolume and NodeUnpublishVolume calls.
                                    This field is optional, and  may be empty if no secret is required. If the
                                    secret object contains more than one secret, all secret references are passed.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                readOnly:
                                  description: |-
                                    readOnly specifies a read-only configuration for the volume.
                                    Defaults to false (read/write).
                                  type: boolean
                                volumeAttributes:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    volumeAttributes stores driver-specific properties that are passed to the CSI
                                    driver. Consult your driver's documentation for supported values.
                                  type: object
                              required:
                              - driver
                              type: object
                            downwardAPI:
                              description: downwardAPI represents downward API about
                                the pod that should populate this volume
                              properties:
                                defaultMode:
                                  description: |-
                                    Optional: mode bits to use on created files by default. Must be a
                                    Optional: mode bits used to set permissions on created files by default.
                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                    Defaults to 0644.
                                    Directories within the path are not affected by this setting.
                                    This might be in conflict with other options that affect the file
                                    mode, like fsGroup, and the result can be other mode bits set.
                                  format: int32
                                  type: integer
                                items:
                                  description: Items is a list of downward API volume
                                    file
                                  items:
                                    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.'
                                        properties:
                                          apiVersion:
                                            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.
                                            type: string
                                        required:
                                        - fieldPath
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      mode:
                                        description: |-
                                          Optional: mode bits used to set permissions on this file, must be an octal value
                                          between 0000 and 0777 or a decimal value between 0 and 511.
                                          YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                          If not specified, the volume defaultMode will be used.
                                          This might be in conflict with other options that affect the file
                                          mode, like fsGroup, and the result can be other mode bits set.
                                        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 ''..'''
                                        type: string
                                      resourceFieldRef:
                                        description: |-
                                          Selects a resource of the container: only resources limits and requests
                                          (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                        properties:
                                          containerName:
                                            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"
                                            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'
                                            type: string
                                        required:
                                        - resource
                                        type: object
                                        x-kubernetes-map-type: atomic
                                    required:
                                    - path
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            emptyDir:
                              description: |-
                                emptyDir represents a temporary directory that shares a pod's lifetime.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                              properties:
                                medium:
                                  description: |-
                                    medium represents what type of storage medium should back this directory.
                                    The default is "" which means to use the node's default medium.
                                    Must be an empty string (default) or Memory.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                  type: string
                                sizeLimit:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    sizeLimit is the total amount of local storage required for this EmptyDir volume.
                                    The size limit is also applicable for memory medium.
                                    The maximum usage on memory medium EmptyDir would be the minimum value between
                                    the SizeLimit specified here and the sum of memory limits of all containers in a pod.
                                    The default is nil which means that the limit is undefined.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                              type: object
                            ephemeral:
                              description: |-
                                ephemeral represents a volume that is handled by a cluster storage driver.
                                The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
                                and deleted when the pod is removed.

                                Use this if:
                                a) the volume is only needed while the pod runs,
                                b) features of normal volumes like restoring from snapshot or capacity
                                   tracking are needed,
                                c) the storage driver is specified through a storage class, and
                                d) the storage driver supports dynamic volume provisioning through
                                   a PersistentVolumeClaim (see EphemeralVolumeSource for more
                                   information on the connection between this volume type
                                   and PersistentVolumeClaim).

                                Use PersistentVolumeClaim or one of the vendor-specific
                                APIs for volumes that persist for longer than the lifecycle
                                of an individual pod.

                                Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
                                be used that way - see the documentation of the driver for
                                more information.

                                A pod can use both types of ephemeral volumes and
                                persistent volumes at the same time.
                              properties:
                                volumeClaimTemplate:
                                  description: |-
                                    Will be used to create a stand-alone PVC to provision the volume.
                                    The pod in which this EphemeralVolumeSource is embedded will be the
                                    owner of the PVC, i.e. the PVC will be deleted together with the
                                    pod.  The name of the PVC will be `<pod name>-<volume name>` where
                                    `<volume name>` is the name from the `PodSpec.Volumes` array
                                    entry. Pod validation will reject the pod if the concatenated name
                                    is not valid for a PVC (for example, too long).

                                    An existing PVC with that name that is not owned by the pod
                                    will *not* be used for the pod to avoid using an unrelated
                                    volume by mistake. Starting the pod is then blocked until
                                    the unrelated PVC is removed. If such a pre-created PVC is
                                    meant to be used by the pod, the PVC has to updated with an
                                    owner reference to the pod once the pod exists. Normally
                                    this should not be necessary, but it may be useful when
                                    manually reconstructing a broken cluster.

                                    This field is read-only and no changes will be made by Kubernetes
                                    to the PVC after it has been created.

                                    Required, must not be nil.
                                  properties:
                                    metadata:
                                      description: |-
                                        May contain labels and annotations that will be copied into the PVC
                                        when creating it. No other fields are allowed and will be rejected during
                                        validation.
                                      type: object
                                    spec:
                                      description: |-
                                        The specification for the PersistentVolumeClaim. The entire content is
                                        copied unchanged into the PVC that gets created from this
                                        template. The same fields as in a PersistentVolumeClaim
                                        are also valid here.
                                      properties:
                                        accessModes:
                                          description: |-
                                            accessModes contains the desired access modes the volume should have.
                                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        dataSource:
                                          description: |-
                                            dataSource field can be used to specify either:
                                            * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
                                            * An existing PVC (PersistentVolumeClaim)
                                            If the provisioner or an external controller can support the specified data source,
                                            it will create a new volume based on the contents of the specified data source.
                                            When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
                                            and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
                                            If the namespace is specified, then dataSourceRef will not be copied to dataSource.
                                          properties:
                                            apiGroup:
                                              description: |-
                                                APIGroup is the group for the resource being referenced.
                                                If APIGroup is not specified, the specified Kind must be in the core API group.
                                                For any other third-party types, APIGroup is required.
                                              type: string
                                            kind:
                                              description: Kind is the type of resource
                                                being referenced
                                              type: string
                                            name:
                                              description: Name is the name of resource
                                                being referenced
                                              type: string
                                          required:
                                          - kind
                                          - name
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        dataSourceRef:
                                          description: |-
                                            dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
                                            volume is desired. This may be any object from a non-empty API group (non
                                            core object) or a PersistentVolumeClaim object.
                                            When this field is specified, volume binding will only succeed if the type of
                                            the specified object matches some installed volume populator or dynamic
                                            provisioner.
                                            This field will replace the functionality of the dataSource field and as such
                                            if both fields are non-empty, they must have the same value. For backwards
                                            compatibility, when namespace isn't specified in dataSourceRef,
                                            both fields (dataSource and dataSourceRef) will be set to the same
                                            value automatically if one of them is empty and the other is non-empty.
                                            When namespace is specified in dataSourceRef,
                                            dataSource isn't set to the same value and must be empty.
                                            There are three important differences between dataSource and dataSourceRef:
                                            * While dataSource only allows two specific types of objects, dataSourceRef
                                              allows any non-core object, as well as PersistentVolumeClaim objects.
                                            * While dataSource ignores disallowed values (dropping them), dataSourceRef
                                              preserves all values, and generates an error if a disallowed value is
                                              specified.
                                            * While dataSource only allows local objects, dataSourceRef allows objects
                                              in any namespaces.
                                            (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
                                            (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                          properties:
                                            apiGroup:
                                              description: |-
                                                APIGroup is the group for the resource being referenced.
                                                If APIGroup is not specified, the specified Kind must be in the core API group.
                                                For any other third-party types, APIGroup is required.
                                              type: string
                                            kind:
                                              description: Kind is the type of resource
                                                being referenced
                                              type: string
                                            name:
                                              description: Name is the name of resource
                                                being referenced
                                              type: string
                                            namespace:
                                              description: |-
                                                Namespace is the namespace of resource being referenced
                                                Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
                                                (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                              type: string
                                          required:
                                          - kind
                                          - name
                                          type: object
                                        resources:
                                          description: |-
                                            resources represents the minimum resources the volume should have.
                                            Users are allowed to specify resource requirements
                                            that are lower than previous value but must still be higher than capacity recorded in the
                                            status field of the claim.
                                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
                                          properties:
                                            limits:
                                              additionalProperties:
                                                anyOf:
                                                - type: integer
                                                - type: string
                                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                x-kubernetes-int-or-string: true
                                              description: |-
                                                Limits describes the maximum amount of compute resources allowed.
                                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                              type: object
                                            requests:
                                              additionalProperties:
                                                anyOf:
                                                - type: integer
                                                - type: string
                                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                x-kubernetes-int-or-string: true
                                              description: |-
                                                Requests describes the minimum amount of compute resources required.
                                                If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                                otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                              type: object
                                          type: object
                                        selector:
                                          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.
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        storageClassName:
                                          description: |-
                                            storageClassName is the name of the StorageClass required by the claim.
                                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
                                          type: string
                                        volumeAttributesClassName:
                                          description: |-
                                            volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
                                            If specified, the CSI driver will create or update the volume with the attributes defined
                                            in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
                                            it can be changed after the claim is created. An empty string or nil value indicates that no
                                            VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
                                            this field can be reset to its previous value (including nil) to cancel the modification.
                                            If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
                                            set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
                                            exists.
                                            More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
                                          type: string
                                        volumeMode:
                                          description: |-
                                            volumeMode defines what type of volume is required by the claim.
                                            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.
                                          type: string
                                      type: object
                                  required:
                                  - 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.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                  type: string
                                lun:
                                  description: 'lun is Optional: FC target lun number'
                                  format: int32
                                  type: integer
                                readOnly:
                                  description: |-
                                    readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                targetWWNs:
                                  description: 'targetWWNs is Optional: FC target worldwide
                                    names (WWNs)'
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                wwids:
                                  description: |-
                                    wwids Optional: FC volume world wide identifiers (wwids)
                                    Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            flexVolume:
                              description: |-
                                flexVolume represents a generic volume resource that is
                                provisioned/attached using an exec based plugin.
                                Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead.
                              properties:
                                driver:
                                  description: driver is the name of the driver to use
                                    for this volume.
                                  type: string
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
                                  type: string
                                options:
                                  additionalProperties:
                                    type: string
                                  description: 'options is Optional: this field holds
                                    extra command options if any.'
                                  type: object
                                readOnly:
                                  description: |-
                                    readOnly is Optional: defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef is Optional: secretRef is reference to the secret object containing
                                    sensitive information to pass to the plugin scripts. This may be
                                    empty if no secret object is specified. If the secret object
                                    contains more than one secret, all secrets are passed to the plugin
                                    scripts.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                              required:
                              - driver
                              type: object
                            flocker:
                              description: |-
                                flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running.
                                Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported.
                              properties:
                                datasetName:
                                  description: |-
                                    datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker
                                    should be considered as deprecated
                                  type: string
                                datasetUUID:
                                  description: datasetUUID is the UUID of the dataset.
                                    This is unique identifier of a Flocker dataset
                                  type: string
                              type: object
                            gcePersistentDisk:
                              description: |-
                                gcePersistentDisk represents a GCE Disk resource that is attached to a
                                kubelet's host machine and then exposed to the pod.
                                Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree
                                gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                              properties:
                                fsType:
                                  description: |-
                                    fsType is filesystem type of the volume that you want to mount.
                                    Tip: Ensure that the filesystem type is supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  type: string
                                partition:
                                  description: |-
                                    partition is the partition in the volume that you want to mount.
                                    If omitted, the default is to mount by volume name.
                                    Examples: For volume /dev/sda1, you specify the partition as "1".
                                    Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  format: int32
                                  type: integer
                                pdName:
                                  description: |-
                                    pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the ReadOnly setting in VolumeMounts.
                                    Defaults to false.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  type: boolean
                              required:
                              - pdName
                              type: object
                            gitRepo:
                              description: |-
                                gitRepo represents a git repository at a particular revision.
                                Deprecated: GitRepo is deprecated. To provision a container with a git repo, mount an
                                EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
                                into the Pod's container.
                              properties:
                                directory:
                                  description: |-
                                    directory is the target directory name.
                                    Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
                                    git repository.  Otherwise, if specified, the volume will contain the git repository in
                                    the subdirectory with the given name.
                                  type: string
                                repository:
                                  description: repository is the URL
                                  type: string
                                revision:
                                  description: revision is the commit hash for the specified
                                    revision.
                                  type: string
                              required:
                              - repository
                              type: object
                            glusterfs:
                              description: |-
                                glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
                                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.
                                  type: string
                                path:
                                  description: |-
                                    path is the Glusterfs volume path.
                                    More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
                                    Defaults to false.
                                    More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                  type: boolean
                              required:
                              - endpoints
                              - path
                              type: object
                            hostPath:
                              description: |-
                                hostPath represents a pre-existing file or directory on the host
                                machine that is directly exposed to the container. This is generally
                                used for system agents or other privileged things that are allowed
                                to see the host machine. Most containers will NOT need this.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                              properties:
                                path:
                                  description: |-
                                    path of the directory on the host.
                                    If the path is a symlink, it will follow the link to the real path.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                  type: string
                                type:
                                  description: |-
                                    type for HostPath Volume
                                    Defaults to ""
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                  type: string
                              required:
                              - path
                              type: object
                            image:
                              description: |-
                                image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine.
                                The volume is resolved at pod startup depending on which PullPolicy value is provided:

                                - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
                                - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
                                - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.

                                The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation.
                                A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message.
                                The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field.
                                The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images.
                                The volume will be mounted read-only (ro) and non-executable files (noexec).
                                Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath) before 1.33.
                                The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type.
                              properties:
                                pullPolicy:
                                  description: |-
                                    Policy for pulling OCI objects. Possible values are:
                                    Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
                                    Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
                                    IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.
                                    Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
                                  type: string
                                reference:
                                  description: |-
                                    Required: Image or artifact reference to be used.
                                    Behaves in the same way as pod.spec.containers[*].image.
                                    Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets.
                                    More info: https://kubernetes.io/docs/concepts/containers/images
                                    This field is optional to allow higher level config management to default or override
                                    container images in workload controllers like Deployments and StatefulSets.
                                  type: string
                              type: object
                            iscsi:
                              description: |-
                                iscsi represents an ISCSI Disk resource that is attached to a
                                kubelet's host machine and then exposed to the pod.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi
                              properties:
                                chapAuthDiscovery:
                                  description: chapAuthDiscovery defines whether support
                                    iSCSI Discovery CHAP authentication
                                  type: boolean
                                chapAuthSession:
                                  description: chapAuthSession defines whether support
                                    iSCSI Session CHAP authentication
                                  type: boolean
                                fsType:
                                  description: |-
                                    fsType is the filesystem type of the volume that you want to mount.
                                    Tip: Ensure that the filesystem type is supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
                                  type: string
                                initiatorName:
                                  description: |-
                                    initiatorName is the custom iSCSI Initiator Name.
                                    If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
                                    <target portal>:<volume name> will be created for the connection.
                                  type: string
                                iqn:
                                  description: iqn is the target iSCSI Qualified Name.
                                  type: string
                                iscsiInterface:
                                  default: default
                                  description: |-
                                    iscsiInterface is the interface Name that uses an iSCSI transport.
                                    Defaults to 'default' (tcp).
                                  type: string
                                lun:
                                  description: lun represents iSCSI Target Lun number.
                                  format: int32
                                  type: integer
                                portals:
                                  description: |-
                                    portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
                                    is other than default (typically TCP ports 860 and 3260).
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                readOnly:
                                  description: |-
                                    readOnly here will force the ReadOnly setting in VolumeMounts.
                                    Defaults to false.
                                  type: boolean
                                secretRef:
                                  description: secretRef is the CHAP Secret for iSCSI
                                    target and initiator authentication
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                targetPortal:
                                  description: |-
                                    targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
                                    is other than default (typically TCP ports 860 and 3260).
                                  type: string
                              required:
                              - iqn
                              - lun
                              - targetPortal
                              type: object
                            name:
                              description: |-
                                name of the volume.
                                Must be a DNS_LABEL and unique within the pod.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                            nfs:
                              description: |-
                                nfs represents an NFS mount on the host that shares a pod's lifetime
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                              properties:
                                path:
                                  description: |-
                                    path that is exported by the NFS server.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the NFS export to be mounted with read-only permissions.
                                    Defaults to false.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                  type: boolean
                                server:
                                  description: |-
                                    server is the hostname or IP address of the NFS server.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                  type: string
                              required:
                              - path
                              - server
                              type: object
                            persistentVolumeClaim:
                              description: |-
                                persistentVolumeClaimVolumeSource represents a reference to a
                                PersistentVolumeClaim in the same namespace.
                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                              properties:
                                claimName:
                                  description: |-
                                    claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly Will force the ReadOnly setting in VolumeMounts.
                                    Default false.
                                  type: boolean
                              required:
                              - claimName
                              type: object
                            photonPersistentDisk:
                              description: |-
                                photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine.
                                Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    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
                                  type: string
                              required:
                              - pdID
                              type: object
                            portworxVolume:
                              description: |-
                                portworxVolume represents a portworx volume attached and mounted on kubelets host machine.
                                Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type
                                are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate
                                is on.
                              properties:
                                fsType:
                                  description: |-
                                    fSType represents the filesystem type to mount
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                volumeID:
                                  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
                              properties:
                                defaultMode:
                                  description: |-
                                    defaultMode are the mode bits used to set permissions on created files by default.
                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                    Directories within the path are not affected by this setting.
                                    This might be in conflict with other options that affect the file
                                    mode, like fsGroup, and the result can be other mode bits set.
                                  format: int32
                                  type: integer
                                sources:
                                  description: |-
                                    sources is the list of volume projections. Each entry in this list
                                    handles one source.
                                  items:
                                    description: |-
                                      Projection that may be projected along with other supported volume types.
                                      Exactly one of these fields must be set.
                                    properties:
                                      clusterTrustBundle:
                                        description: |-
                                          ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
                                          of ClusterTrustBundle objects in an auto-updating file.

                                          Alpha, gated by the ClusterTrustBundleProjection feature gate.

                                          ClusterTrustBundle objects can either be selected by name, or by the
                                          combination of signer name and a label selector.

                                          Kubelet performs aggressive normalization of the PEM contents written
                                          into the pod filesystem.  Esoteric PEM features such as inter-block
                                          comments and block headers are stripped.  Certificates are deduplicated.
                                          The ordering of certificates within the file is arbitrary, and Kubelet
                                          may change the order over time.
                                        properties:
                                          labelSelector:
                                            description: |-
                                              Select all ClusterTrustBundles that match this label selector.  Only has
                                              effect if signerName is set.  Mutually-exclusive with name.  If unset,
                                              interpreted as "match nothing".  If set but empty, interpreted as "match
                                              everything".
                                            properties:
                                              matchExpressions:
                                                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.
                                                      type: string
                                                    operator:
                                                      description: |-
                                                        operator represents a key's relationship to a set of values.
                                                        Valid operators are In, NotIn, Exists and DoesNotExist.
                                                      type: string
                                                    values:
                                                      description: |-
                                                        values is an array of string values. If the operator is In or NotIn,
                                                        the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                        the values array must be empty. This array is replaced during a strategic
                                                        merge patch.
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              matchLabels:
                                                additionalProperties:
                                                  type: string
                                                description: |-
                                                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                  map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                  operator is "In", and the values array contains only "value". The requirements are ANDed.
                                                type: object
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          name:
                                            description: |-
                                              Select a single ClusterTrustBundle by object name.  Mutually-exclusive
                                              with signerName and labelSelector.
                                            type: string
                                          optional:
                                            description: |-
                                              If true, don't block pod startup if the referenced ClusterTrustBundle(s)
                                              aren't available.  If using name, then the named ClusterTrustBundle is
                                              allowed not to exist.  If using signerName, then the combination of
                                              signerName and labelSelector is allowed to match zero
                                              ClusterTrustBundles.
                                            type: boolean
                                          path:
                                            description: Relative path from the volume
                                              root to write the bundle.
                                            type: string
                                          signerName:
                                            description: |-
                                              Select all ClusterTrustBundles that match this signer name.
                                              Mutually-exclusive with name.  The contents of all selected
                                              ClusterTrustBundles will be unified and deduplicated.
                                            type: string
                                        required:
                                        - path
                                        type: object
                                      configMap:
                                        description: configMap information about the
                                          configMap data to project
                                        properties:
                                          items:
                                            description: |-
                                              items if unspecified, each key-value pair in the Data field of the referenced
                                              ConfigMap will be projected into the volume as a file whose name is the
                                              key and content is the value. If specified, the listed keys will be
                                              projected into the specified paths, and unlisted keys will not be
                                              present. If a key is specified which is not present in the ConfigMap,
                                              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.
                                              properties:
                                                key:
                                                  description: key is the key to project.
                                                  type: string
                                                mode:
                                                  description: |-
                                                    mode is Optional: mode bits used to set permissions on this file.
                                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                    If not specified, the volume defaultMode will be used.
                                                    This might be in conflict with other options that affect the file
                                                    mode, like fsGroup, and the result can be other mode bits set.
                                                  format: int32
                                                  type: integer
                                                path:
                                                  description: |-
                                                    path is the relative path of the file to map the key to.
                                                    May not be an absolute path.
                                                    May not contain the path element '..'.
                                                    May not start with the string '..'.
                                                  type: string
                                              required:
                                              - key
                                              - path
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          name:
                                            default: ""
                                            description: |-
                                              Name of the referent.
                                              This field is effectively required, but due to backwards compatibility is
                                              allowed to be empty. Instances of this type with an empty value here are
                                              almost certainly wrong.
                                              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
                                            type: boolean
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      downwardAPI:
                                        description: downwardAPI information about the
                                          downwardAPI data to project
                                        properties:
                                          items:
                                            description: Items is a list of DownwardAPIVolume
                                              file
                                            items:
                                              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.'
                                                  properties:
                                                    apiVersion:
                                                      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.
                                                      type: string
                                                  required:
                                                  - fieldPath
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                mode:
                                                  description: |-
                                                    Optional: mode bits used to set permissions on this file, must be an octal value
                                                    between 0000 and 0777 or a decimal value between 0 and 511.
                                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                    If not specified, the volume defaultMode will be used.
                                                    This might be in conflict with other options that affect the file
                                                    mode, like fsGroup, and the result can be other mode bits set.
                                                  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 ''..'''
                                                  type: string
                                                resourceFieldRef:
                                                  description: |-
                                                    Selects a resource of the container: only resources limits and requests
                                                    (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                                  properties:
                                                    containerName:
                                                      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"
                                                      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'
                                                      type: string
                                                  required:
                                                  - resource
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                              required:
                                              - path
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        type: object
                                      podCertificate:
                                        description: |-
                                          Projects an auto-rotating credential bundle (private key and certificate
                                          chain) that the pod can use either as a TLS client or server.

                                          Kubelet generates a private key and uses it to send a
                                          PodCertificateRequest to the named signer.  Once the signer approves the
                                          request and issues a certificate chain, Kubelet writes the key and
                                          certificate chain to the pod filesystem.  The pod does not start until
                                          certificates have been issued for each podCertificate projected volume
                                          source in its spec.

                                          Kubelet will begin trying to rotate the certificate at the time indicated
                                          by the signer using the PodCertificateRequest.Status.BeginRefreshAt
                                          timestamp.

                                          Kubelet can write a single file, indicated by the credentialBundlePath
                                          field, or separate files, indicated by the keyPath and
                                          certificateChainPath fields.

                                          The credential bundle is a single file in PEM format.  The first PEM
                                          entry is the private key (in PKCS#8 format), and the remaining PEM
                                          entries are the certificate chain issued by the signer (typically,
                                          signers will return their certificate chain in leaf-to-root order).

                                          Prefer using the credential bundle format, since your application code
                                          can read it atomically.  If you use keyPath and certificateChainPath,
                                          your application must make two separate file reads. If these coincide
                                          with a certificate rotation, it is possible that the private key and leaf
                                          certificate you read may not correspond to each other.  Your application
                                          will need to check for this condition, and re-read until they are
                                          consistent.

                                          The named signer controls chooses the format of the certificate it
                                          issues; consult the signer implementation's documentation to learn how to
                                          use the certificates it issues.
                                        properties:
                                          certificateChainPath:
                                            description: |-
                                              Write the certificate chain at this path in the projected volume.

                                              Most applications should use credentialBundlePath.  When using keyPath
                                              and certificateChainPath, your application needs to check that the key
                                              and leaf certificate are consistent, because it is possible to read the
                                              files mid-rotation.
                                            type: string
                                          credentialBundlePath:
                                            description: |-
                                              Write the credential bundle at this path in the projected volume.

                                              The credential bundle is a single file that contains multiple PEM blocks.
                                              The first PEM block is a PRIVATE KEY block, containing a PKCS#8 private
                                              key.

                                              The remaining blocks are CERTIFICATE blocks, containing the issued
                                              certificate chain from the signer (leaf and any intermediates).

                                              Using credentialBundlePath lets your Pod's application code make a single
                                              atomic read that retrieves a consistent key and certificate chain.  If you
                                              project them to separate files, your application code will need to
                                              additionally check that the leaf certificate was issued to the key.
                                            type: string
                                          keyPath:
                                            description: |-
                                              Write the key at this path in the projected volume.

                                              Most applications should use credentialBundlePath.  When using keyPath
                                              and certificateChainPath, your application needs to check that the key
                                              and leaf certificate are consistent, because it is possible to read the
                                              files mid-rotation.
                                            type: string
                                          keyType:
                                            description: |-
                                              The type of keypair Kubelet will generate for the pod.

                                              Valid values are "RSA3072", "RSA4096", "ECDSAP256", "ECDSAP384",
                                              "ECDSAP521", and "ED25519".
                                            type: string
                                          maxExpirationSeconds:
                                            description: |-
                                              maxExpirationSeconds is the maximum lifetime permitted for the
                                              certificate.

                                              Kubelet copies this value verbatim into the PodCertificateRequests it
                                              generates for this projection.

                                              If omitted, kube-apiserver will set it to 86400(24 hours). kube-apiserver
                                              will reject values shorter than 3600 (1 hour).  The maximum allowable
                                              value is 7862400 (91 days).

                                              The signer implementation is then free to issue a certificate with any
                                              lifetime *shorter* than MaxExpirationSeconds, but no shorter than 3600
                                              seconds (1 hour).  This constraint is enforced by kube-apiserver.
                                              `kubernetes.io` signers will never issue certificates with a lifetime
                                              longer than 24 hours.
                                            format: int32
                                            type: integer
                                          signerName:
                                            description: Kubelet's generated CSRs will
                                              be addressed to this signer.
                                            type: string
                                          userAnnotations:
                                            additionalProperties:
                                              type: string
                                            description: |-
                                              userAnnotations allow pod authors to pass additional information to
                                              the signer implementation.  Kubernetes does not restrict or validate this
                                              metadata in any way.

                                              These values are copied verbatim into the `spec.unverifiedUserAnnotations` field of
                                              the PodCertificateRequest objects that Kubelet creates.

                                              Entries are subject to the same validation as object metadata annotations,
                                              with the addition that all keys must be domain-prefixed. No restrictions
                                              are placed on values, except an overall size limitation on the entire field.

                                              Signers should document the keys and values they support. Signers should
                                              deny requests that contain keys they do not recognize.
                                            type: object
                                        required:
                                        - keyType
                                        - signerName
                                        type: object
                                      secret:
                                        description: secret information about the secret
                                          data to project
                                        properties:
                                          items:
                                            description: |-
                                              items if unspecified, each key-value pair in the Data field of the referenced
                                              Secret will be projected into the volume as a file whose name is the
                                              key and content is the value. If specified, the listed keys will be
                                              projected into the specified paths, and unlisted keys will not be
                                              present. If a key is specified which is not present in the Secret,
                                              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.
                                              properties:
                                                key:
                                                  description: key is the key to project.
                                                  type: string
                                                mode:
                                                  description: |-
                                                    mode is Optional: mode bits used to set permissions on this file.
                                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                    If not specified, the volume defaultMode will be used.
                                                    This might be in conflict with other options that affect the file
                                                    mode, like fsGroup, and the result can be other mode bits set.
                                                  format: int32
                                                  type: integer
                                                path:
                                                  description: |-
                                                    path is the relative path of the file to map the key to.
                                                    May not be an absolute path.
                                                    May not contain the path element '..'.
                                                    May not start with the string '..'.
                                                  type: string
                                              required:
                                              - key
                                              - path
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          name:
                                            default: ""
                                            description: |-
                                              Name of the referent.
                                              This field is effectively required, but due to backwards compatibility is
                                              allowed to be empty. Instances of this type with an empty value here are
                                              almost certainly wrong.
                                              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
                                            type: boolean
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      serviceAccountToken:
                                        description: serviceAccountToken is information
                                          about the serviceAccountToken data to project
                                        properties:
                                          audience:
                                            description: |-
                                              audience is the intended audience of the token. A recipient of a token
                                              must identify itself with an identifier specified in the audience of the
                                              token, and otherwise should reject the token. The audience defaults to the
                                              identifier of the apiserver.
                                            type: string
                                          expirationSeconds:
                                            description: |-
                                              expirationSeconds is the requested duration of validity of the service
                                              account token. As the token approaches expiration, the kubelet volume
                                              plugin will proactively rotate the service account token. The kubelet will
                                              start trying to rotate the token if the token is older than 80 percent of
                                              its time to live or if the token is older than 24 hours.Defaults to 1 hour
                                              and must be at least 10 minutes.
                                            format: int64
                                            type: integer
                                          path:
                                            description: |-
                                              path is the path relative to the mount point of the file to project the
                                              token into.
                                            type: string
                                        required:
                                        - path
                                        type: object
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            quobyte:
                              description: |-
                                quobyte represents a Quobyte mount on the host that shares a pod's lifetime.
                                Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.
                              properties:
                                group:
                                  description: |-
                                    group to map volume access to
                                    Default is no group
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the Quobyte volume to be mounted with read-only permissions.
                                    Defaults to false.
                                  type: boolean
                                registry:
                                  description: |-
                                    registry represents a single or multiple Quobyte Registry services
                                    specified as a string as host:port pair (multiple entries are separated with commas)
                                    which acts as the central registry for volumes
                                  type: string
                                tenant:
                                  description: |-
                                    tenant owning the given Quobyte volume in the Backend
                                    Used with dynamically provisioned Quobyte volumes, value is set by the plugin
                                  type: string
                                user:
                                  description: |-
                                    user to map volume access to
                                    Defaults to serivceaccount user
                                  type: string
                                volume:
                                  description: volume is a string that references an
                                    already created Quobyte volume by name.
                                  type: string
                              required:
                              - registry
                              - volume
                              type: object
                            rbd:
                              description: |-
                                rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
                                Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type of the volume that you want to mount.
                                    Tip: Ensure that the filesystem type is supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
                                  type: string
                                image:
                                  description: |-
                                    image is the rados image name.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: string
                                keyring:
                                  default: /etc/ceph/keyring
                                  description: |-
                                    keyring is the path to key ring for RBDUser.
                                    Default is /etc/ceph/keyring.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: string
                                monitors:
                                  description: |-
                                    monitors is a collection of Ceph monitors.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                pool:
                                  default: rbd
                                  description: |-
                                    pool is the rados pool name.
                                    Default is rbd.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the ReadOnly setting in VolumeMounts.
                                    Defaults to false.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef is name of the authentication secret for RBDUser. If provided
                                    overrides keyring.
                                    Default is nil.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                user:
                                  default: admin
                                  description: |-
                                    user is the rados user name.
                                    Default is admin.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: string
                              required:
                              - image
                              - monitors
                              type: object
                            scaleIO:
                              description: |-
                                scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
                                Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.
                              properties:
                                fsType:
                                  default: xfs
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs", "ntfs".
                                    Default is "xfs".
                                  type: string
                                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.
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly Defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef references to the secret for ScaleIO user and other
                                    sensitive information. If this is not provided, Login operation will fail.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                sslEnabled:
                                  description: sslEnabled Flag enable/disable SSL communication
                                    with Gateway, default false
                                  type: boolean
                                storageMode:
                                  default: ThinProvisioned
                                  description: |-
                                    storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
                                    Default is ThinProvisioned.
                                  type: string
                                storagePool:
                                  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.
                                  type: string
                                volumeName:
                                  description: |-
                                    volumeName is the name of a volume already created in the ScaleIO system
                                    that is associated with this volume source.
                                  type: string
                              required:
                              - gateway
                              - secretRef
                              - system
                              type: object
                            secret:
                              description: |-
                                secret represents a secret that should populate this volume.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                              properties:
                                defaultMode:
                                  description: |-
                                    defaultMode is Optional: mode bits used to set permissions on created files by default.
                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                    YAML accepts both octal and decimal values, JSON requires decimal values
                                    for mode bits. Defaults to 0644.
                                    Directories within the path are not affected by this setting.
                                    This might be in conflict with other options that affect the file
                                    mode, like fsGroup, and the result can be other mode bits set.
                                  format: int32
                                  type: integer
                                items:
                                  description: |-
                                    items If unspecified, each key-value pair in the Data field of the referenced
                                    Secret will be projected into the volume as a file whose name is the
                                    key and content is the value. If specified, the listed keys will be
                                    projected into the specified paths, and unlisted keys will not be
                                    present. If a key is specified which is not present in the Secret,
                                    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.
                                    properties:
                                      key:
                                        description: key is the key to project.
                                        type: string
                                      mode:
                                        description: |-
                                          mode is Optional: mode bits used to set permissions on this file.
                                          Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                          YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                          If not specified, the volume defaultMode will be used.
                                          This might be in conflict with other options that affect the file
                                          mode, like fsGroup, and the result can be other mode bits set.
                                        format: int32
                                        type: integer
                                      path:
                                        description: |-
                                          path is the relative path of the file to map the key to.
                                          May not be an absolute path.
                                          May not contain the path element '..'.
                                          May not start with the string '..'.
                                        type: string
                                    required:
                                    - key
                                    - path
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                optional:
                                  description: optional field specify whether the Secret
                                    or its keys must be defined
                                  type: boolean
                                secretName:
                                  description: |-
                                    secretName is the name of the secret in the pod's namespace to use.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                                  type: string
                              type: object
                            storageos:
                              description: |-
                                storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
                                Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef specifies the secret to use for obtaining the StorageOS API
                                    credentials.  If not specified, default values will be attempted.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                volumeName:
                                  description: |-
                                    volumeName is the human-readable name of the StorageOS volume.  Volume
                                    names are only unique within a namespace.
                                  type: string
                                volumeNamespace:
                                  description: |-
                                    volumeNamespace specifies the scope of the volume within StorageOS.  If no
                                    namespace is specified then the Pod's namespace will be used.  This allows the
                                    Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
                                    Set VolumeName to any name to override the default behaviour.
                                    Set to "default" if you are not using namespaces within StorageOS.
                                    Namespaces that do not pre-exist within StorageOS will be created.
                                  type: string
                              type: object
                            vsphereVolume:
                              description: |-
                                vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine.
                                Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type
                                are redirected to the csi.vsphere.vmware.com CSI driver.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    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.
                                  type: string
                                storagePolicyName:
                                  description: storagePolicyName is the storage Policy
                                    Based Management (SPBM) profile name.
                                  type: string
                                volumePath:
                                  description: volumePath is the path that identifies
                                    vSphere volume vmdk
                                  type: string
                              required:
                              - volumePath
                              type: object
                          required:
                          - name
                          type: object
                      type: object
                    type: array
                type: object
              snapshotPolicy:
                description: 'Select a policy for snapshot behavior: none, autodetect,
                  snapshot, sanpshotGroup'
                enum:
                - none
                - volumeGroupSnapshot
                - volumeSnapshot
                type: string
            type: object
          status:
            description: DriverStatus defines the observed state of Driver
            type: object
        type: object
        x-kubernetes-validations:
        - message: '.metadata.name must match: ''[<prefix>.](rbd|cephfs|nfs|nvmeof).csi.ceph.com'''
          rule: self.metadata.name.matches('^(.+\\.)?(rbd|cephfs|nfs|nvmeof)?\\.csi\\.ceph\\.com$')
    served: true
    storage: true
    subresources:
      status: {}
  - deprecated: true
    deprecationWarning: v1alpha1 is deprecated, please use v1
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: Driver is the Schema for the drivers API
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: DriverSpec defines the desired state of Driver
            properties:
              attachRequired:
                description: |-
                  Whether to skip any attach operation altogether for CephCsi PVCs.
                  See more details [here](https://kubernetes-csi.github.io/docs/skip-attach.html#skip-attach-with-csi-driver-object).
                  If set to false it skips the volume attachments and makes the creation of pods using the CephCsi PVC fast.
                  **WARNING** It's highly discouraged to use this for RWO volumes. for RBD PVC it can cause data corruption,
                  csi-addons operations like Reclaimspace and PVC Keyrotation will also not be supported if set to false
                  since we'll have no VolumeAttachments to determine which node the PVC is mounted on.
                  Refer to this [issue](https://github.com/kubernetes/kubernetes/issues/103305) for more details.
                type: boolean
              cephFsClientType:
                description: |-
                  Select between between cephfs kernel driver and ceph-fuse
                  If you select a non-kernel client, your application may be disrupted during upgrade.
                  See the upgrade guide: https://rook.io/docs/rook/latest/ceph-upgrade.html
                  NOTE! cephfs quota is not supported in kernel version < 4.17
                enum:
                - autodetect
                - kernel
                type: string
              clusterName:
                description: |-
                  Cluster name identifier to set as metadata on the CephFS subvolume and RBD images. This will be useful in cases
                  when two container orchestrator clusters (Kubernetes/OCP) are using a single ceph cluster.
                type: string
              controllerPlugin:
                description: Driver's controller plugin configuration
                properties:
                  affinity:
                    description: Pod's affinity settings
                    properties:
                      nodeAffinity:
                        description: Describes node affinity scheduling rules for the
                          pod.
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              The scheduler will prefer to schedule pods to nodes that satisfy
                              the affinity expressions specified by this field, but it may choose
                              a node that violates one or more of the expressions. The node that is
                              most preferred is the one with the greatest sum of weights, i.e.
                              for each node that meets all of the scheduling requirements (resource
                              request, requiredDuringScheduling affinity expressions, etc.),
                              compute a sum by iterating through the elements of this field and adding
                              "weight" to the sum if the node matches the corresponding matchExpressions; the
                              node(s) with the highest sum are the most preferred.
                            items:
                              description: |-
                                An empty preferred scheduling term matches all objects with implicit weight 0
                                (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.
                                  properties:
                                    matchExpressions:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchFields:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                  x-kubernetes-map-type: atomic
                                weight:
                                  description: Weight associated with matching the corresponding
                                    nodeSelectorTerm, in the range 1-100.
                                  format: int32
                                  type: integer
                              required:
                              - preference
                              - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              If the affinity requirements specified by this field are not met at
                              scheduling time, the pod will not be scheduled onto the node.
                              If the affinity requirements specified by this field cease to be met
                              at some point during pod execution (e.g. due to an update), the system
                              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.
                                items:
                                  description: |-
                                    A null or empty node selector term matches no objects. The requirements of
                                    them are ANDed.
                                    The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
                                  properties:
                                    matchExpressions:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchFields:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                  x-kubernetes-map-type: atomic
                                type: array
                                x-kubernetes-list-type: atomic
                            required:
                            - nodeSelectorTerms
                            type: object
                            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)).
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              The scheduler will prefer to schedule pods to nodes that satisfy
                              the affinity expressions specified by this field, but it may choose
                              a node that violates one or more of the expressions. The node that is
                              most preferred is the one with the greatest sum of weights, i.e.
                              for each node that meets all of the scheduling requirements (resource
                              request, requiredDuringScheduling affinity expressions, etc.),
                              compute a sum by iterating through the elements of this field and adding
                              "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)
                              properties:
                                podAffinityTerm:
                                  description: Required. A pod affinity term, associated
                                    with the corresponding weight.
                                  properties:
                                    labelSelector:
                                      description: |-
                                        A label query over a set of resources, in this case pods.
                                        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.
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      description: |-
                                        MatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      description: |-
                                        MismatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      description: |-
                                        A label query over the set of namespaces that the term applies to.
                                        The term is applied to the union of the namespaces selected by this field
                                        and the ones listed in the namespaces field.
                                        null selector and null or empty namespaces list means "this pod's namespace".
                                        An empty selector ({}) matches all namespaces.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      description: |-
                                        namespaces specifies a static list of namespace names that the term applies to.
                                        The term is applied to the union of the namespaces listed in this field
                                        and the ones selected by namespaceSelector.
                                        null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      description: |-
                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                        whose value of the label with key topologyKey matches that of any node on which any of the
                                        selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                weight:
                                  description: |-
                                    weight associated with matching the corresponding podAffinityTerm,
                                    in the range 1-100.
                                  format: int32
                                  type: integer
                              required:
                              - podAffinityTerm
                              - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              If the affinity requirements specified by this field are not met at
                              scheduling time, the pod will not be scheduled onto the node.
                              If the affinity requirements specified by this field cease to be met
                              at some point during pod execution (e.g. due to a pod label update), the
                              system may or may not try to eventually evict the pod from its node.
                              When there are multiple elements, the lists of nodes corresponding to each
                              podAffinityTerm are intersected, i.e. all terms must be satisfied.
                            items:
                              description: |-
                                Defines a set of pods (namely those matching the labelSelector
                                relative to the given namespace(s)) that this pod should be
                                co-located (affinity) or not co-located (anti-affinity) with,
                                where co-located is defined as running on a node whose value of
                                the label with key <topologyKey> matches that of any node on which
                                a pod of the set of pods is running
                              properties:
                                labelSelector:
                                  description: |-
                                    A label query over a set of resources, in this case pods.
                                    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.
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                matchLabelKeys:
                                  description: |-
                                    MatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                mismatchLabelKeys:
                                  description: |-
                                    MismatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                namespaceSelector:
                                  description: |-
                                    A label query over the set of namespaces that the term applies to.
                                    The term is applied to the union of the namespaces selected by this field
                                    and the ones listed in the namespaces field.
                                    null selector and null or empty namespaces list means "this pod's namespace".
                                    An empty selector ({}) matches all namespaces.
                                  properties:
                                    matchExpressions:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                namespaces:
                                  description: |-
                                    namespaces specifies a static list of namespace names that the term applies to.
                                    The term is applied to the union of the namespaces listed in this field
                                    and the ones selected by namespaceSelector.
                                    null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                topologyKey:
                                  description: |-
                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                    whose value of the label with key topologyKey matches that of any node on which any of the
                                    selected pods is running.
                                    Empty topologyKey is not allowed.
                                  type: string
                              required:
                              - topologyKey
                              type: object
                            type: array
                            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)).
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              The scheduler will prefer to schedule pods to nodes that satisfy
                              the anti-affinity expressions specified by this field, but it may choose
                              a node that violates one or more of the expressions. The node that is
                              most preferred is the one with the greatest sum of weights, i.e.
                              for each node that meets all of the scheduling requirements (resource
                              request, requiredDuringScheduling anti-affinity expressions, etc.),
                              compute a sum by iterating through the elements of this field and subtracting
                              "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)
                              properties:
                                podAffinityTerm:
                                  description: Required. A pod affinity term, associated
                                    with the corresponding weight.
                                  properties:
                                    labelSelector:
                                      description: |-
                                        A label query over a set of resources, in this case pods.
                                        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.
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      description: |-
                                        MatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      description: |-
                                        MismatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      description: |-
                                        A label query over the set of namespaces that the term applies to.
                                        The term is applied to the union of the namespaces selected by this field
                                        and the ones listed in the namespaces field.
                                        null selector and null or empty namespaces list means "this pod's namespace".
                                        An empty selector ({}) matches all namespaces.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      description: |-
                                        namespaces specifies a static list of namespace names that the term applies to.
                                        The term is applied to the union of the namespaces listed in this field
                                        and the ones selected by namespaceSelector.
                                        null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      description: |-
                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                        whose value of the label with key topologyKey matches that of any node on which any of the
                                        selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                weight:
                                  description: |-
                                    weight associated with matching the corresponding podAffinityTerm,
                                    in the range 1-100.
                                  format: int32
                                  type: integer
                              required:
                              - podAffinityTerm
                              - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              If the anti-affinity requirements specified by this field are not met at
                              scheduling time, the pod will not be scheduled onto the node.
                              If the anti-affinity requirements specified by this field cease to be met
                              at some point during pod execution (e.g. due to a pod label update), the
                              system may or may not try to eventually evict the pod from its node.
                              When there are multiple elements, the lists of nodes corresponding to each
                              podAffinityTerm are intersected, i.e. all terms must be satisfied.
                            items:
                              description: |-
                                Defines a set of pods (namely those matching the labelSelector
                                relative to the given namespace(s)) that this pod should be
                                co-located (affinity) or not co-located (anti-affinity) with,
                                where co-located is defined as running on a node whose value of
                                the label with key <topologyKey> matches that of any node on which
                                a pod of the set of pods is running
                              properties:
                                labelSelector:
                                  description: |-
                                    A label query over a set of resources, in this case pods.
                                    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.
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                matchLabelKeys:
                                  description: |-
                                    MatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                mismatchLabelKeys:
                                  description: |-
                                    MismatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                namespaceSelector:
                                  description: |-
                                    A label query over the set of namespaces that the term applies to.
                                    The term is applied to the union of the namespaces selected by this field
                                    and the ones listed in the namespaces field.
                                    null selector and null or empty namespaces list means "this pod's namespace".
                                    An empty selector ({}) matches all namespaces.
                                  properties:
                                    matchExpressions:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                namespaces:
                                  description: |-
                                    namespaces specifies a static list of namespace names that the term applies to.
                                    The term is applied to the union of the namespaces listed in this field
                                    and the ones selected by namespaceSelector.
                                    null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                topologyKey:
                                  description: |-
                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                    whose value of the label with key topologyKey matches that of any node on which any of the
                                    selected pods is running.
                                    Empty topologyKey is not allowed.
                                  type: string
                              required:
                              - topologyKey
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                        type: object
                    type: object
                  annotations:
                    additionalProperties:
                      type: string
                    description: Pod's annotations
                    type: object
                  deploymentStrategy:
                    description: |-
                      DeploymentStrategy describes how to replace existing pods with new ones
                      Default value is RollingUpdate with MaxUnavailable and MaxSurege as 25% (kubernetes default)
                    properties:
                      rollingUpdate:
                        description: |-
                          Rolling update config params. Present only if DeploymentStrategyType =
                          RollingUpdate.
                        properties:
                          maxSurge:
                            anyOf:
                            - type: integer
                            - type: string
                            description: |-
                              The maximum number of pods that can be scheduled above the desired number of
                              pods.
                              Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
                              This can not be 0 if MaxUnavailable is 0.
                              Absolute number is calculated from percentage by rounding up.
                              Defaults to 25%.
                              Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when
                              the rolling update starts, such that the total number of old and new pods do not exceed
                              130% of desired pods. Once old pods have been killed,
                              new ReplicaSet can be scaled up further, ensuring that total number of pods running
                              at any time during the update is at most 130% of desired pods.
                            x-kubernetes-int-or-string: true
                          maxUnavailable:
                            anyOf:
                            - type: integer
                            - type: string
                            description: |-
                              The maximum number of pods that can be unavailable during the update.
                              Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
                              Absolute number is calculated from percentage by rounding down.
                              This can not be 0 if MaxSurge is 0.
                              Defaults to 25%.
                              Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods
                              immediately when the rolling update starts. Once new pods are ready, old ReplicaSet
                              can be scaled down further, followed by scaling up the new ReplicaSet, ensuring
                              that the total number of pods available at all times during the update is at
                              least 70% of desired pods.
                            x-kubernetes-int-or-string: true
                        type: object
                      type:
                        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
                    type: boolean
                  imagePullPolicy:
                    description: To indicate the image pull policy to be applied to
                      all the containers in the csi driver pods.
                    type: string
                  labels:
                    additionalProperties:
                      type: string
                    description: Pod's labels
                    type: object
                  priorityClassName:
                    description: Pod's user defined priority class name
                    type: string
                  privileged:
                    description: |-
                      To enable logrotation for csi pods,
                      Some platforms require controller plugin to run privileged,
                      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
                    format: int32
                    minimum: 1
                    type: integer
                  resources:
                    description: Resource requirements for controller plugin's containers
                    properties:
                      addons:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      attacher:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      liveness:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      logRotator:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      omapGenerator:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      plugin:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      provisioner:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      resizer:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      snapshotter:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                    type: object
                  serviceAccountName:
                    description: Service account name to be used for driver's pods
                    type: string
                  tolerations:
                    description: Pod's tolerations list
                    items:
                      description: |-
                        The pod this Toleration is attached to tolerates any taint that matches
                        the triple <key,value,effect> using the matching operator <operator>.
                      properties:
                        effect:
                          description: |-
                            Effect indicates the taint effect to match. Empty means match all taint effects.
                            When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
                          type: string
                        key:
                          description: |-
                            Key is the taint key that the toleration applies to. Empty means match all taint keys.
                            If the key is empty, operator must be Exists; this combination means to match all values and all keys.
                          type: string
                        operator:
                          description: |-
                            Operator represents a key's relationship to the value.
                            Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal.
                            Exists is equivalent to wildcard for value, so that a pod can
                            tolerate all taints of a particular category.
                            Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators).
                          type: string
                        tolerationSeconds:
                          description: |-
                            TolerationSeconds represents the period of time the toleration (which must be
                            of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
                            it is not set, which means tolerate the taint forever (do not evict). Zero and
                            negative values will be treated as 0 (evict immediately) by the system.
                          format: int64
                          type: integer
                        value:
                          description: |-
                            Value is the taint value the toleration matches to.
                            If the operator is Exists, the value should be empty, otherwise just a regular string.
                          type: string
                      type: object
                    type: array
                  volumes:
                    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.
                          properties:
                            mountPath:
                              description: |-
                                Path within the container at which the volume should be mounted.  Must
                                not contain ':'.
                              type: string
                            mountPropagation:
                              description: |-
                                mountPropagation determines how mounts are propagated from the host
                                to container and the other way around.
                                When not set, MountPropagationNone is used.
                                This field is beta in 1.10.
                                When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
                                (which defaults to None).
                              type: string
                            name:
                              description: This must match the Name of a Volume.
                              type: string
                            readOnly:
                              description: |-
                                Mounted read-only if true, read-write otherwise (false or unspecified).
                                Defaults to false.
                              type: boolean
                            recursiveReadOnly:
                              description: |-
                                RecursiveReadOnly specifies whether read-only mounts should be handled
                                recursively.

                                If ReadOnly is false, this field has no meaning and must be unspecified.

                                If ReadOnly is true, and this field is set to Disabled, the mount is not made
                                recursively read-only.  If this field is set to IfPossible, the mount is made
                                recursively read-only, if it is supported by the container runtime.  If this
                                field is set to Enabled, the mount is made recursively read-only if it is
                                supported by the container runtime, otherwise the pod will not be started and
                                an error will be generated to indicate the reason.

                                If this field is set to IfPossible or Enabled, MountPropagation must be set to
                                None (or be unspecified, which defaults to None).

                                If this field is not specified, it is treated as an equivalent of Disabled.
                              type: string
                            subPath:
                              description: |-
                                Path within the volume from which the container's volume should be mounted.
                                Defaults to "" (volume's root).
                              type: string
                            subPathExpr:
                              description: |-
                                Expanded path within the volume from which the container's volume should be mounted.
                                Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
                                Defaults to "" (volume's root).
                                SubPathExpr and SubPath are mutually exclusive.
                              type: string
                          required:
                          - mountPath
                          - name
                          type: object
                        volume:
                          description: Volume represents a named volume in a pod that
                            may be accessed by any container in the pod.
                          properties:
                            awsElasticBlockStore:
                              description: |-
                                awsElasticBlockStore represents an AWS Disk resource that is attached to a
                                kubelet's host machine and then exposed to the pod.
                                Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree
                                awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type of the volume that you want to mount.
                                    Tip: Ensure that the filesystem type is supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                  type: string
                                partition:
                                  description: |-
                                    partition is the partition in the volume that you want to mount.
                                    If omitted, the default is to mount by volume name.
                                    Examples: For volume /dev/sda1, you specify the partition as "1".
                                    Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
                                  format: int32
                                  type: integer
                                readOnly:
                                  description: |-
                                    readOnly value true will force the readOnly setting in VolumeMounts.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                  type: boolean
                                volumeID:
                                  description: |-
                                    volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                  type: string
                              required:
                              - volumeID
                              type: object
                            azureDisk:
                              description: |-
                                azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
                                Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type
                                are redirected to the disk.csi.azure.com CSI driver.
                              properties:
                                cachingMode:
                                  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
                                  type: string
                                diskURI:
                                  description: diskURI is the URI of data disk in the
                                    blob storage
                                  type: string
                                fsType:
                                  default: ext4
                                  description: |-
                                    fsType is Filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    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'
                                  type: string
                                readOnly:
                                  default: false
                                  description: |-
                                    readOnly Defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                              required:
                              - diskName
                              - diskURI
                              type: object
                            azureFile:
                              description: |-
                                azureFile represents an Azure File Service mount on the host and bind mount to the pod.
                                Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type
                                are redirected to the file.csi.azure.com CSI driver.
                              properties:
                                readOnly:
                                  description: |-
                                    readOnly defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                secretName:
                                  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
                                  type: string
                              required:
                              - secretName
                              - shareName
                              type: object
                            cephfs:
                              description: |-
                                cephFS represents a Ceph FS mount on the host that shares a pod's lifetime.
                                Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.
                              properties:
                                monitors:
                                  description: |-
                                    monitors is Required: Monitors is a collection of Ceph monitors
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  items:
                                    type: string
                                  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
                                    /'
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  type: boolean
                                secretFile:
                                  description: |-
                                    secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  type: string
                                secretRef:
                                  description: |-
                                    secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                user:
                                  description: |-
                                    user is optional: User is the rados user name, default is admin
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  type: string
                              required:
                              - monitors
                              type: object
                            cinder:
                              description: |-
                                cinder represents a cinder volume attached and mounted on kubelets host machine.
                                Deprecated: Cinder is deprecated. All operations for the in-tree cinder type
                                are redirected to the cinder.csi.openstack.org CSI driver.
                                More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                    More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef is optional: points to a secret object containing parameters used to connect
                                    to OpenStack.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                volumeID:
                                  description: |-
                                    volumeID used to identify the volume in cinder.
                                    More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                  type: string
                              required:
                              - volumeID
                              type: object
                            configMap:
                              description: configMap represents a configMap that should
                                populate this volume
                              properties:
                                defaultMode:
                                  description: |-
                                    defaultMode is optional: mode bits used to set permissions on created files by default.
                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                    Defaults to 0644.
                                    Directories within the path are not affected by this setting.
                                    This might be in conflict with other options that affect the file
                                    mode, like fsGroup, and the result can be other mode bits set.
                                  format: int32
                                  type: integer
                                items:
                                  description: |-
                                    items if unspecified, each key-value pair in the Data field of the referenced
                                    ConfigMap will be projected into the volume as a file whose name is the
                                    key and content is the value. If specified, the listed keys will be
                                    projected into the specified paths, and unlisted keys will not be
                                    present. If a key is specified which is not present in the ConfigMap,
                                    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.
                                    properties:
                                      key:
                                        description: key is the key to project.
                                        type: string
                                      mode:
                                        description: |-
                                          mode is Optional: mode bits used to set permissions on this file.
                                          Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                          YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                          If not specified, the volume defaultMode will be used.
                                          This might be in conflict with other options that affect the file
                                          mode, like fsGroup, and the result can be other mode bits set.
                                        format: int32
                                        type: integer
                                      path:
                                        description: |-
                                          path is the relative path of the file to map the key to.
                                          May not be an absolute path.
                                          May not contain the path element '..'.
                                          May not start with the string '..'.
                                        type: string
                                    required:
                                    - key
                                    - path
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    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
                                  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.
                              properties:
                                driver:
                                  description: |-
                                    driver is the name of the CSI driver that handles this volume.
                                    Consult with your admin for the correct name as registered in the cluster.
                                  type: string
                                fsType:
                                  description: |-
                                    fsType to mount. Ex. "ext4", "xfs", "ntfs".
                                    If not provided, the empty value is passed to the associated CSI driver
                                    which will determine the default filesystem to apply.
                                  type: string
                                nodePublishSecretRef:
                                  description: |-
                                    nodePublishSecretRef is a reference to the secret object containing
                                    sensitive information to pass to the CSI driver to complete the CSI
                                    NodePublishVolume and NodeUnpublishVolume calls.
                                    This field is optional, and  may be empty if no secret is required. If the
                                    secret object contains more than one secret, all secret references are passed.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                readOnly:
                                  description: |-
                                    readOnly specifies a read-only configuration for the volume.
                                    Defaults to false (read/write).
                                  type: boolean
                                volumeAttributes:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    volumeAttributes stores driver-specific properties that are passed to the CSI
                                    driver. Consult your driver's documentation for supported values.
                                  type: object
                              required:
                              - driver
                              type: object
                            downwardAPI:
                              description: downwardAPI represents downward API about
                                the pod that should populate this volume
                              properties:
                                defaultMode:
                                  description: |-
                                    Optional: mode bits to use on created files by default. Must be a
                                    Optional: mode bits used to set permissions on created files by default.
                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                    Defaults to 0644.
                                    Directories within the path are not affected by this setting.
                                    This might be in conflict with other options that affect the file
                                    mode, like fsGroup, and the result can be other mode bits set.
                                  format: int32
                                  type: integer
                                items:
                                  description: Items is a list of downward API volume
                                    file
                                  items:
                                    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.'
                                        properties:
                                          apiVersion:
                                            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.
                                            type: string
                                        required:
                                        - fieldPath
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      mode:
                                        description: |-
                                          Optional: mode bits used to set permissions on this file, must be an octal value
                                          between 0000 and 0777 or a decimal value between 0 and 511.
                                          YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                          If not specified, the volume defaultMode will be used.
                                          This might be in conflict with other options that affect the file
                                          mode, like fsGroup, and the result can be other mode bits set.
                                        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 ''..'''
                                        type: string
                                      resourceFieldRef:
                                        description: |-
                                          Selects a resource of the container: only resources limits and requests
                                          (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                        properties:
                                          containerName:
                                            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"
                                            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'
                                            type: string
                                        required:
                                        - resource
                                        type: object
                                        x-kubernetes-map-type: atomic
                                    required:
                                    - path
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            emptyDir:
                              description: |-
                                emptyDir represents a temporary directory that shares a pod's lifetime.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                              properties:
                                medium:
                                  description: |-
                                    medium represents what type of storage medium should back this directory.
                                    The default is "" which means to use the node's default medium.
                                    Must be an empty string (default) or Memory.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                  type: string
                                sizeLimit:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    sizeLimit is the total amount of local storage required for this EmptyDir volume.
                                    The size limit is also applicable for memory medium.
                                    The maximum usage on memory medium EmptyDir would be the minimum value between
                                    the SizeLimit specified here and the sum of memory limits of all containers in a pod.
                                    The default is nil which means that the limit is undefined.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                              type: object
                            ephemeral:
                              description: |-
                                ephemeral represents a volume that is handled by a cluster storage driver.
                                The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
                                and deleted when the pod is removed.

                                Use this if:
                                a) the volume is only needed while the pod runs,
                                b) features of normal volumes like restoring from snapshot or capacity
                                   tracking are needed,
                                c) the storage driver is specified through a storage class, and
                                d) the storage driver supports dynamic volume provisioning through
                                   a PersistentVolumeClaim (see EphemeralVolumeSource for more
                                   information on the connection between this volume type
                                   and PersistentVolumeClaim).

                                Use PersistentVolumeClaim or one of the vendor-specific
                                APIs for volumes that persist for longer than the lifecycle
                                of an individual pod.

                                Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
                                be used that way - see the documentation of the driver for
                                more information.

                                A pod can use both types of ephemeral volumes and
                                persistent volumes at the same time.
                              properties:
                                volumeClaimTemplate:
                                  description: |-
                                    Will be used to create a stand-alone PVC to provision the volume.
                                    The pod in which this EphemeralVolumeSource is embedded will be the
                                    owner of the PVC, i.e. the PVC will be deleted together with the
                                    pod.  The name of the PVC will be `<pod name>-<volume name>` where
                                    `<volume name>` is the name from the `PodSpec.Volumes` array
                                    entry. Pod validation will reject the pod if the concatenated name
                                    is not valid for a PVC (for example, too long).

                                    An existing PVC with that name that is not owned by the pod
                                    will *not* be used for the pod to avoid using an unrelated
                                    volume by mistake. Starting the pod is then blocked until
                                    the unrelated PVC is removed. If such a pre-created PVC is
                                    meant to be used by the pod, the PVC has to updated with an
                                    owner reference to the pod once the pod exists. Normally
                                    this should not be necessary, but it may be useful when
                                    manually reconstructing a broken cluster.

                                    This field is read-only and no changes will be made by Kubernetes
                                    to the PVC after it has been created.

                                    Required, must not be nil.
                                  properties:
                                    metadata:
                                      description: |-
                                        May contain labels and annotations that will be copied into the PVC
                                        when creating it. No other fields are allowed and will be rejected during
                                        validation.
                                      type: object
                                    spec:
                                      description: |-
                                        The specification for the PersistentVolumeClaim. The entire content is
                                        copied unchanged into the PVC that gets created from this
                                        template. The same fields as in a PersistentVolumeClaim
                                        are also valid here.
                                      properties:
                                        accessModes:
                                          description: |-
                                            accessModes contains the desired access modes the volume should have.
                                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        dataSource:
                                          description: |-
                                            dataSource field can be used to specify either:
                                            * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
                                            * An existing PVC (PersistentVolumeClaim)
                                            If the provisioner or an external controller can support the specified data source,
                                            it will create a new volume based on the contents of the specified data source.
                                            When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
                                            and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
                                            If the namespace is specified, then dataSourceRef will not be copied to dataSource.
                                          properties:
                                            apiGroup:
                                              description: |-
                                                APIGroup is the group for the resource being referenced.
                                                If APIGroup is not specified, the specified Kind must be in the core API group.
                                                For any other third-party types, APIGroup is required.
                                              type: string
                                            kind:
                                              description: Kind is the type of resource
                                                being referenced
                                              type: string
                                            name:
                                              description: Name is the name of resource
                                                being referenced
                                              type: string
                                          required:
                                          - kind
                                          - name
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        dataSourceRef:
                                          description: |-
                                            dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
                                            volume is desired. This may be any object from a non-empty API group (non
                                            core object) or a PersistentVolumeClaim object.
                                            When this field is specified, volume binding will only succeed if the type of
                                            the specified object matches some installed volume populator or dynamic
                                            provisioner.
                                            This field will replace the functionality of the dataSource field and as such
                                            if both fields are non-empty, they must have the same value. For backwards
                                            compatibility, when namespace isn't specified in dataSourceRef,
                                            both fields (dataSource and dataSourceRef) will be set to the same
                                            value automatically if one of them is empty and the other is non-empty.
                                            When namespace is specified in dataSourceRef,
                                            dataSource isn't set to the same value and must be empty.
                                            There are three important differences between dataSource and dataSourceRef:
                                            * While dataSource only allows two specific types of objects, dataSourceRef
                                              allows any non-core object, as well as PersistentVolumeClaim objects.
                                            * While dataSource ignores disallowed values (dropping them), dataSourceRef
                                              preserves all values, and generates an error if a disallowed value is
                                              specified.
                                            * While dataSource only allows local objects, dataSourceRef allows objects
                                              in any namespaces.
                                            (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
                                            (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                          properties:
                                            apiGroup:
                                              description: |-
                                                APIGroup is the group for the resource being referenced.
                                                If APIGroup is not specified, the specified Kind must be in the core API group.
                                                For any other third-party types, APIGroup is required.
                                              type: string
                                            kind:
                                              description: Kind is the type of resource
                                                being referenced
                                              type: string
                                            name:
                                              description: Name is the name of resource
                                                being referenced
                                              type: string
                                            namespace:
                                              description: |-
                                                Namespace is the namespace of resource being referenced
                                                Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
                                                (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                              type: string
                                          required:
                                          - kind
                                          - name
                                          type: object
                                        resources:
                                          description: |-
                                            resources represents the minimum resources the volume should have.
                                            Users are allowed to specify resource requirements
                                            that are lower than previous value but must still be higher than capacity recorded in the
                                            status field of the claim.
                                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
                                          properties:
                                            limits:
                                              additionalProperties:
                                                anyOf:
                                                - type: integer
                                                - type: string
                                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                x-kubernetes-int-or-string: true
                                              description: |-
                                                Limits describes the maximum amount of compute resources allowed.
                                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                              type: object
                                            requests:
                                              additionalProperties:
                                                anyOf:
                                                - type: integer
                                                - type: string
                                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                x-kubernetes-int-or-string: true
                                              description: |-
                                                Requests describes the minimum amount of compute resources required.
                                                If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                                otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                              type: object
                                          type: object
                                        selector:
                                          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.
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        storageClassName:
                                          description: |-
                                            storageClassName is the name of the StorageClass required by the claim.
                                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
                                          type: string
                                        volumeAttributesClassName:
                                          description: |-
                                            volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
                                            If specified, the CSI driver will create or update the volume with the attributes defined
                                            in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
                                            it can be changed after the claim is created. An empty string or nil value indicates that no
                                            VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
                                            this field can be reset to its previous value (including nil) to cancel the modification.
                                            If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
                                            set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
                                            exists.
                                            More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
                                          type: string
                                        volumeMode:
                                          description: |-
                                            volumeMode defines what type of volume is required by the claim.
                                            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.
                                          type: string
                                      type: object
                                  required:
                                  - 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.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                  type: string
                                lun:
                                  description: 'lun is Optional: FC target lun number'
                                  format: int32
                                  type: integer
                                readOnly:
                                  description: |-
                                    readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                targetWWNs:
                                  description: 'targetWWNs is Optional: FC target worldwide
                                    names (WWNs)'
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                wwids:
                                  description: |-
                                    wwids Optional: FC volume world wide identifiers (wwids)
                                    Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            flexVolume:
                              description: |-
                                flexVolume represents a generic volume resource that is
                                provisioned/attached using an exec based plugin.
                                Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead.
                              properties:
                                driver:
                                  description: driver is the name of the driver to use
                                    for this volume.
                                  type: string
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
                                  type: string
                                options:
                                  additionalProperties:
                                    type: string
                                  description: 'options is Optional: this field holds
                                    extra command options if any.'
                                  type: object
                                readOnly:
                                  description: |-
                                    readOnly is Optional: defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef is Optional: secretRef is reference to the secret object containing
                                    sensitive information to pass to the plugin scripts. This may be
                                    empty if no secret object is specified. If the secret object
                                    contains more than one secret, all secrets are passed to the plugin
                                    scripts.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                              required:
                              - driver
                              type: object
                            flocker:
                              description: |-
                                flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running.
                                Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported.
                              properties:
                                datasetName:
                                  description: |-
                                    datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker
                                    should be considered as deprecated
                                  type: string
                                datasetUUID:
                                  description: datasetUUID is the UUID of the dataset.
                                    This is unique identifier of a Flocker dataset
                                  type: string
                              type: object
                            gcePersistentDisk:
                              description: |-
                                gcePersistentDisk represents a GCE Disk resource that is attached to a
                                kubelet's host machine and then exposed to the pod.
                                Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree
                                gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                              properties:
                                fsType:
                                  description: |-
                                    fsType is filesystem type of the volume that you want to mount.
                                    Tip: Ensure that the filesystem type is supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  type: string
                                partition:
                                  description: |-
                                    partition is the partition in the volume that you want to mount.
                                    If omitted, the default is to mount by volume name.
                                    Examples: For volume /dev/sda1, you specify the partition as "1".
                                    Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  format: int32
                                  type: integer
                                pdName:
                                  description: |-
                                    pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the ReadOnly setting in VolumeMounts.
                                    Defaults to false.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  type: boolean
                              required:
                              - pdName
                              type: object
                            gitRepo:
                              description: |-
                                gitRepo represents a git repository at a particular revision.
                                Deprecated: GitRepo is deprecated. To provision a container with a git repo, mount an
                                EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
                                into the Pod's container.
                              properties:
                                directory:
                                  description: |-
                                    directory is the target directory name.
                                    Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
                                    git repository.  Otherwise, if specified, the volume will contain the git repository in
                                    the subdirectory with the given name.
                                  type: string
                                repository:
                                  description: repository is the URL
                                  type: string
                                revision:
                                  description: revision is the commit hash for the specified
                                    revision.
                                  type: string
                              required:
                              - repository
                              type: object
                            glusterfs:
                              description: |-
                                glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
                                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.
                                  type: string
                                path:
                                  description: |-
                                    path is the Glusterfs volume path.
                                    More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
                                    Defaults to false.
                                    More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                  type: boolean
                              required:
                              - endpoints
                              - path
                              type: object
                            hostPath:
                              description: |-
                                hostPath represents a pre-existing file or directory on the host
                                machine that is directly exposed to the container. This is generally
                                used for system agents or other privileged things that are allowed
                                to see the host machine. Most containers will NOT need this.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                              properties:
                                path:
                                  description: |-
                                    path of the directory on the host.
                                    If the path is a symlink, it will follow the link to the real path.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                  type: string
                                type:
                                  description: |-
                                    type for HostPath Volume
                                    Defaults to ""
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                  type: string
                              required:
                              - path
                              type: object
                            image:
                              description: |-
                                image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine.
                                The volume is resolved at pod startup depending on which PullPolicy value is provided:

                                - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
                                - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
                                - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.

                                The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation.
                                A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message.
                                The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field.
                                The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images.
                                The volume will be mounted read-only (ro) and non-executable files (noexec).
                                Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath) before 1.33.
                                The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type.
                              properties:
                                pullPolicy:
                                  description: |-
                                    Policy for pulling OCI objects. Possible values are:
                                    Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
                                    Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
                                    IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.
                                    Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
                                  type: string
                                reference:
                                  description: |-
                                    Required: Image or artifact reference to be used.
                                    Behaves in the same way as pod.spec.containers[*].image.
                                    Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets.
                                    More info: https://kubernetes.io/docs/concepts/containers/images
                                    This field is optional to allow higher level config management to default or override
                                    container images in workload controllers like Deployments and StatefulSets.
                                  type: string
                              type: object
                            iscsi:
                              description: |-
                                iscsi represents an ISCSI Disk resource that is attached to a
                                kubelet's host machine and then exposed to the pod.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi
                              properties:
                                chapAuthDiscovery:
                                  description: chapAuthDiscovery defines whether support
                                    iSCSI Discovery CHAP authentication
                                  type: boolean
                                chapAuthSession:
                                  description: chapAuthSession defines whether support
                                    iSCSI Session CHAP authentication
                                  type: boolean
                                fsType:
                                  description: |-
                                    fsType is the filesystem type of the volume that you want to mount.
                                    Tip: Ensure that the filesystem type is supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
                                  type: string
                                initiatorName:
                                  description: |-
                                    initiatorName is the custom iSCSI Initiator Name.
                                    If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
                                    <target portal>:<volume name> will be created for the connection.
                                  type: string
                                iqn:
                                  description: iqn is the target iSCSI Qualified Name.
                                  type: string
                                iscsiInterface:
                                  default: default
                                  description: |-
                                    iscsiInterface is the interface Name that uses an iSCSI transport.
                                    Defaults to 'default' (tcp).
                                  type: string
                                lun:
                                  description: lun represents iSCSI Target Lun number.
                                  format: int32
                                  type: integer
                                portals:
                                  description: |-
                                    portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
                                    is other than default (typically TCP ports 860 and 3260).
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                readOnly:
                                  description: |-
                                    readOnly here will force the ReadOnly setting in VolumeMounts.
                                    Defaults to false.
                                  type: boolean
                                secretRef:
                                  description: secretRef is the CHAP Secret for iSCSI
                                    target and initiator authentication
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                targetPortal:
                                  description: |-
                                    targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
                                    is other than default (typically TCP ports 860 and 3260).
                                  type: string
                              required:
                              - iqn
                              - lun
                              - targetPortal
                              type: object
                            name:
                              description: |-
                                name of the volume.
                                Must be a DNS_LABEL and unique within the pod.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                            nfs:
                              description: |-
                                nfs represents an NFS mount on the host that shares a pod's lifetime
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                              properties:
                                path:
                                  description: |-
                                    path that is exported by the NFS server.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the NFS export to be mounted with read-only permissions.
                                    Defaults to false.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                  type: boolean
                                server:
                                  description: |-
                                    server is the hostname or IP address of the NFS server.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                  type: string
                              required:
                              - path
                              - server
                              type: object
                            persistentVolumeClaim:
                              description: |-
                                persistentVolumeClaimVolumeSource represents a reference to a
                                PersistentVolumeClaim in the same namespace.
                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                              properties:
                                claimName:
                                  description: |-
                                    claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly Will force the ReadOnly setting in VolumeMounts.
                                    Default false.
                                  type: boolean
                              required:
                              - claimName
                              type: object
                            photonPersistentDisk:
                              description: |-
                                photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine.
                                Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    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
                                  type: string
                              required:
                              - pdID
                              type: object
                            portworxVolume:
                              description: |-
                                portworxVolume represents a portworx volume attached and mounted on kubelets host machine.
                                Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type
                                are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate
                                is on.
                              properties:
                                fsType:
                                  description: |-
                                    fSType represents the filesystem type to mount
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                volumeID:
                                  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
                              properties:
                                defaultMode:
                                  description: |-
                                    defaultMode are the mode bits used to set permissions on created files by default.
                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                    Directories within the path are not affected by this setting.
                                    This might be in conflict with other options that affect the file
                                    mode, like fsGroup, and the result can be other mode bits set.
                                  format: int32
                                  type: integer
                                sources:
                                  description: |-
                                    sources is the list of volume projections. Each entry in this list
                                    handles one source.
                                  items:
                                    description: |-
                                      Projection that may be projected along with other supported volume types.
                                      Exactly one of these fields must be set.
                                    properties:
                                      clusterTrustBundle:
                                        description: |-
                                          ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
                                          of ClusterTrustBundle objects in an auto-updating file.

                                          Alpha, gated by the ClusterTrustBundleProjection feature gate.

                                          ClusterTrustBundle objects can either be selected by name, or by the
                                          combination of signer name and a label selector.

                                          Kubelet performs aggressive normalization of the PEM contents written
                                          into the pod filesystem.  Esoteric PEM features such as inter-block
                                          comments and block headers are stripped.  Certificates are deduplicated.
                                          The ordering of certificates within the file is arbitrary, and Kubelet
                                          may change the order over time.
                                        properties:
                                          labelSelector:
                                            description: |-
                                              Select all ClusterTrustBundles that match this label selector.  Only has
                                              effect if signerName is set.  Mutually-exclusive with name.  If unset,
                                              interpreted as "match nothing".  If set but empty, interpreted as "match
                                              everything".
                                            properties:
                                              matchExpressions:
                                                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.
                                                      type: string
                                                    operator:
                                                      description: |-
                                                        operator represents a key's relationship to a set of values.
                                                        Valid operators are In, NotIn, Exists and DoesNotExist.
                                                      type: string
                                                    values:
                                                      description: |-
                                                        values is an array of string values. If the operator is In or NotIn,
                                                        the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                        the values array must be empty. This array is replaced during a strategic
                                                        merge patch.
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              matchLabels:
                                                additionalProperties:
                                                  type: string
                                                description: |-
                                                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                  map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                  operator is "In", and the values array contains only "value". The requirements are ANDed.
                                                type: object
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          name:
                                            description: |-
                                              Select a single ClusterTrustBundle by object name.  Mutually-exclusive
                                              with signerName and labelSelector.
                                            type: string
                                          optional:
                                            description: |-
                                              If true, don't block pod startup if the referenced ClusterTrustBundle(s)
                                              aren't available.  If using name, then the named ClusterTrustBundle is
                                              allowed not to exist.  If using signerName, then the combination of
                                              signerName and labelSelector is allowed to match zero
                                              ClusterTrustBundles.
                                            type: boolean
                                          path:
                                            description: Relative path from the volume
                                              root to write the bundle.
                                            type: string
                                          signerName:
                                            description: |-
                                              Select all ClusterTrustBundles that match this signer name.
                                              Mutually-exclusive with name.  The contents of all selected
                                              ClusterTrustBundles will be unified and deduplicated.
                                            type: string
                                        required:
                                        - path
                                        type: object
                                      configMap:
                                        description: configMap information about the
                                          configMap data to project
                                        properties:
                                          items:
                                            description: |-
                                              items if unspecified, each key-value pair in the Data field of the referenced
                                              ConfigMap will be projected into the volume as a file whose name is the
                                              key and content is the value. If specified, the listed keys will be
                                              projected into the specified paths, and unlisted keys will not be
                                              present. If a key is specified which is not present in the ConfigMap,
                                              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.
                                              properties:
                                                key:
                                                  description: key is the key to project.
                                                  type: string
                                                mode:
                                                  description: |-
                                                    mode is Optional: mode bits used to set permissions on this file.
                                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                    If not specified, the volume defaultMode will be used.
                                                    This might be in conflict with other options that affect the file
                                                    mode, like fsGroup, and the result can be other mode bits set.
                                                  format: int32
                                                  type: integer
                                                path:
                                                  description: |-
                                                    path is the relative path of the file to map the key to.
                                                    May not be an absolute path.
                                                    May not contain the path element '..'.
                                                    May not start with the string '..'.
                                                  type: string
                                              required:
                                              - key
                                              - path
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          name:
                                            default: ""
                                            description: |-
                                              Name of the referent.
                                              This field is effectively required, but due to backwards compatibility is
                                              allowed to be empty. Instances of this type with an empty value here are
                                              almost certainly wrong.
                                              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
                                            type: boolean
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      downwardAPI:
                                        description: downwardAPI information about the
                                          downwardAPI data to project
                                        properties:
                                          items:
                                            description: Items is a list of DownwardAPIVolume
                                              file
                                            items:
                                              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.'
                                                  properties:
                                                    apiVersion:
                                                      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.
                                                      type: string
                                                  required:
                                                  - fieldPath
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                mode:
                                                  description: |-
                                                    Optional: mode bits used to set permissions on this file, must be an octal value
                                                    between 0000 and 0777 or a decimal value between 0 and 511.
                                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                    If not specified, the volume defaultMode will be used.
                                                    This might be in conflict with other options that affect the file
                                                    mode, like fsGroup, and the result can be other mode bits set.
                                                  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 ''..'''
                                                  type: string
                                                resourceFieldRef:
                                                  description: |-
                                                    Selects a resource of the container: only resources limits and requests
                                                    (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                                  properties:
                                                    containerName:
                                                      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"
                                                      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'
                                                      type: string
                                                  required:
                                                  - resource
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                              required:
                                              - path
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        type: object
                                      podCertificate:
                                        description: |-
                                          Projects an auto-rotating credential bundle (private key and certificate
                                          chain) that the pod can use either as a TLS client or server.

                                          Kubelet generates a private key and uses it to send a
                                          PodCertificateRequest to the named signer.  Once the signer approves the
                                          request and issues a certificate chain, Kubelet writes the key and
                                          certificate chain to the pod filesystem.  The pod does not start until
                                          certificates have been issued for each podCertificate projected volume
                                          source in its spec.

                                          Kubelet will begin trying to rotate the certificate at the time indicated
                                          by the signer using the PodCertificateRequest.Status.BeginRefreshAt
                                          timestamp.

                                          Kubelet can write a single file, indicated by the credentialBundlePath
                                          field, or separate files, indicated by the keyPath and
                                          certificateChainPath fields.

                                          The credential bundle is a single file in PEM format.  The first PEM
                                          entry is the private key (in PKCS#8 format), and the remaining PEM
                                          entries are the certificate chain issued by the signer (typically,
                                          signers will return their certificate chain in leaf-to-root order).

                                          Prefer using the credential bundle format, since your application code
                                          can read it atomically.  If you use keyPath and certificateChainPath,
                                          your application must make two separate file reads. If these coincide
                                          with a certificate rotation, it is possible that the private key and leaf
                                          certificate you read may not correspond to each other.  Your application
                                          will need to check for this condition, and re-read until they are
                                          consistent.

                                          The named signer controls chooses the format of the certificate it
                                          issues; consult the signer implementation's documentation to learn how to
                                          use the certificates it issues.
                                        properties:
                                          certificateChainPath:
                                            description: |-
                                              Write the certificate chain at this path in the projected volume.

                                              Most applications should use credentialBundlePath.  When using keyPath
                                              and certificateChainPath, your application needs to check that the key
                                              and leaf certificate are consistent, because it is possible to read the
                                              files mid-rotation.
                                            type: string
                                          credentialBundlePath:
                                            description: |-
                                              Write the credential bundle at this path in the projected volume.

                                              The credential bundle is a single file that contains multiple PEM blocks.
                                              The first PEM block is a PRIVATE KEY block, containing a PKCS#8 private
                                              key.

                                              The remaining blocks are CERTIFICATE blocks, containing the issued
                                              certificate chain from the signer (leaf and any intermediates).

                                              Using credentialBundlePath lets your Pod's application code make a single
                                              atomic read that retrieves a consistent key and certificate chain.  If you
                                              project them to separate files, your application code will need to
                                              additionally check that the leaf certificate was issued to the key.
                                            type: string
                                          keyPath:
                                            description: |-
                                              Write the key at this path in the projected volume.

                                              Most applications should use credentialBundlePath.  When using keyPath
                                              and certificateChainPath, your application needs to check that the key
                                              and leaf certificate are consistent, because it is possible to read the
                                              files mid-rotation.
                                            type: string
                                          keyType:
                                            description: |-
                                              The type of keypair Kubelet will generate for the pod.

                                              Valid values are "RSA3072", "RSA4096", "ECDSAP256", "ECDSAP384",
                                              "ECDSAP521", and "ED25519".
                                            type: string
                                          maxExpirationSeconds:
                                            description: |-
                                              maxExpirationSeconds is the maximum lifetime permitted for the
                                              certificate.

                                              Kubelet copies this value verbatim into the PodCertificateRequests it
                                              generates for this projection.

                                              If omitted, kube-apiserver will set it to 86400(24 hours). kube-apiserver
                                              will reject values shorter than 3600 (1 hour).  The maximum allowable
                                              value is 7862400 (91 days).

                                              The signer implementation is then free to issue a certificate with any
                                              lifetime *shorter* than MaxExpirationSeconds, but no shorter than 3600
                                              seconds (1 hour).  This constraint is enforced by kube-apiserver.
                                              `kubernetes.io` signers will never issue certificates with a lifetime
                                              longer than 24 hours.
                                            format: int32
                                            type: integer
                                          signerName:
                                            description: Kubelet's generated CSRs will
                                              be addressed to this signer.
                                            type: string
                                          userAnnotations:
                                            additionalProperties:
                                              type: string
                                            description: |-
                                              userAnnotations allow pod authors to pass additional information to
                                              the signer implementation.  Kubernetes does not restrict or validate this
                                              metadata in any way.

                                              These values are copied verbatim into the `spec.unverifiedUserAnnotations` field of
                                              the PodCertificateRequest objects that Kubelet creates.

                                              Entries are subject to the same validation as object metadata annotations,
                                              with the addition that all keys must be domain-prefixed. No restrictions
                                              are placed on values, except an overall size limitation on the entire field.

                                              Signers should document the keys and values they support. Signers should
                                              deny requests that contain keys they do not recognize.
                                            type: object
                                        required:
                                        - keyType
                                        - signerName
                                        type: object
                                      secret:
                                        description: secret information about the secret
                                          data to project
                                        properties:
                                          items:
                                            description: |-
                                              items if unspecified, each key-value pair in the Data field of the referenced
                                              Secret will be projected into the volume as a file whose name is the
                                              key and content is the value. If specified, the listed keys will be
                                              projected into the specified paths, and unlisted keys will not be
                                              present. If a key is specified which is not present in the Secret,
                                              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.
                                              properties:
                                                key:
                                                  description: key is the key to project.
                                                  type: string
                                                mode:
                                                  description: |-
                                                    mode is Optional: mode bits used to set permissions on this file.
                                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                    If not specified, the volume defaultMode will be used.
                                                    This might be in conflict with other options that affect the file
                                                    mode, like fsGroup, and the result can be other mode bits set.
                                                  format: int32
                                                  type: integer
                                                path:
                                                  description: |-
                                                    path is the relative path of the file to map the key to.
                                                    May not be an absolute path.
                                                    May not contain the path element '..'.
                                                    May not start with the string '..'.
                                                  type: string
                                              required:
                                              - key
                                              - path
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          name:
                                            default: ""
                                            description: |-
                                              Name of the referent.
                                              This field is effectively required, but due to backwards compatibility is
                                              allowed to be empty. Instances of this type with an empty value here are
                                              almost certainly wrong.
                                              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
                                            type: boolean
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      serviceAccountToken:
                                        description: serviceAccountToken is information
                                          about the serviceAccountToken data to project
                                        properties:
                                          audience:
                                            description: |-
                                              audience is the intended audience of the token. A recipient of a token
                                              must identify itself with an identifier specified in the audience of the
                                              token, and otherwise should reject the token. The audience defaults to the
                                              identifier of the apiserver.
                                            type: string
                                          expirationSeconds:
                                            description: |-
                                              expirationSeconds is the requested duration of validity of the service
                                              account token. As the token approaches expiration, the kubelet volume
                                              plugin will proactively rotate the service account token. The kubelet will
                                              start trying to rotate the token if the token is older than 80 percent of
                                              its time to live or if the token is older than 24 hours.Defaults to 1 hour
                                              and must be at least 10 minutes.
                                            format: int64
                                            type: integer
                                          path:
                                            description: |-
                                              path is the path relative to the mount point of the file to project the
                                              token into.
                                            type: string
                                        required:
                                        - path
                                        type: object
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            quobyte:
                              description: |-
                                quobyte represents a Quobyte mount on the host that shares a pod's lifetime.
                                Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.
                              properties:
                                group:
                                  description: |-
                                    group to map volume access to
                                    Default is no group
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the Quobyte volume to be mounted with read-only permissions.
                                    Defaults to false.
                                  type: boolean
                                registry:
                                  description: |-
                                    registry represents a single or multiple Quobyte Registry services
                                    specified as a string as host:port pair (multiple entries are separated with commas)
                                    which acts as the central registry for volumes
                                  type: string
                                tenant:
                                  description: |-
                                    tenant owning the given Quobyte volume in the Backend
                                    Used with dynamically provisioned Quobyte volumes, value is set by the plugin
                                  type: string
                                user:
                                  description: |-
                                    user to map volume access to
                                    Defaults to serivceaccount user
                                  type: string
                                volume:
                                  description: volume is a string that references an
                                    already created Quobyte volume by name.
                                  type: string
                              required:
                              - registry
                              - volume
                              type: object
                            rbd:
                              description: |-
                                rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
                                Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type of the volume that you want to mount.
                                    Tip: Ensure that the filesystem type is supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
                                  type: string
                                image:
                                  description: |-
                                    image is the rados image name.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: string
                                keyring:
                                  default: /etc/ceph/keyring
                                  description: |-
                                    keyring is the path to key ring for RBDUser.
                                    Default is /etc/ceph/keyring.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: string
                                monitors:
                                  description: |-
                                    monitors is a collection of Ceph monitors.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                pool:
                                  default: rbd
                                  description: |-
                                    pool is the rados pool name.
                                    Default is rbd.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the ReadOnly setting in VolumeMounts.
                                    Defaults to false.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef is name of the authentication secret for RBDUser. If provided
                                    overrides keyring.
                                    Default is nil.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                user:
                                  default: admin
                                  description: |-
                                    user is the rados user name.
                                    Default is admin.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: string
                              required:
                              - image
                              - monitors
                              type: object
                            scaleIO:
                              description: |-
                                scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
                                Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.
                              properties:
                                fsType:
                                  default: xfs
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs", "ntfs".
                                    Default is "xfs".
                                  type: string
                                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.
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly Defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef references to the secret for ScaleIO user and other
                                    sensitive information. If this is not provided, Login operation will fail.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                sslEnabled:
                                  description: sslEnabled Flag enable/disable SSL communication
                                    with Gateway, default false
                                  type: boolean
                                storageMode:
                                  default: ThinProvisioned
                                  description: |-
                                    storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
                                    Default is ThinProvisioned.
                                  type: string
                                storagePool:
                                  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.
                                  type: string
                                volumeName:
                                  description: |-
                                    volumeName is the name of a volume already created in the ScaleIO system
                                    that is associated with this volume source.
                                  type: string
                              required:
                              - gateway
                              - secretRef
                              - system
                              type: object
                            secret:
                              description: |-
                                secret represents a secret that should populate this volume.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                              properties:
                                defaultMode:
                                  description: |-
                                    defaultMode is Optional: mode bits used to set permissions on created files by default.
                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                    YAML accepts both octal and decimal values, JSON requires decimal values
                                    for mode bits. Defaults to 0644.
                                    Directories within the path are not affected by this setting.
                                    This might be in conflict with other options that affect the file
                                    mode, like fsGroup, and the result can be other mode bits set.
                                  format: int32
                                  type: integer
                                items:
                                  description: |-
                                    items If unspecified, each key-value pair in the Data field of the referenced
                                    Secret will be projected into the volume as a file whose name is the
                                    key and content is the value. If specified, the listed keys will be
                                    projected into the specified paths, and unlisted keys will not be
                                    present. If a key is specified which is not present in the Secret,
                                    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.
                                    properties:
                                      key:
                                        description: key is the key to project.
                                        type: string
                                      mode:
                                        description: |-
                                          mode is Optional: mode bits used to set permissions on this file.
                                          Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                          YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                          If not specified, the volume defaultMode will be used.
                                          This might be in conflict with other options that affect the file
                                          mode, like fsGroup, and the result can be other mode bits set.
                                        format: int32
                                        type: integer
                                      path:
                                        description: |-
                                          path is the relative path of the file to map the key to.
                                          May not be an absolute path.
                                          May not contain the path element '..'.
                                          May not start with the string '..'.
                                        type: string
                                    required:
                                    - key
                                    - path
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                optional:
                                  description: optional field specify whether the Secret
                                    or its keys must be defined
                                  type: boolean
                                secretName:
                                  description: |-
                                    secretName is the name of the secret in the pod's namespace to use.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                                  type: string
                              type: object
                            storageos:
                              description: |-
                                storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
                                Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef specifies the secret to use for obtaining the StorageOS API
                                    credentials.  If not specified, default values will be attempted.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                volumeName:
                                  description: |-
                                    volumeName is the human-readable name of the StorageOS volume.  Volume
                                    names are only unique within a namespace.
                                  type: string
                                volumeNamespace:
                                  description: |-
                                    volumeNamespace specifies the scope of the volume within StorageOS.  If no
                                    namespace is specified then the Pod's namespace will be used.  This allows the
                                    Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
                                    Set VolumeName to any name to override the default behaviour.
                                    Set to "default" if you are not using namespaces within StorageOS.
                                    Namespaces that do not pre-exist within StorageOS will be created.
                                  type: string
                              type: object
                            vsphereVolume:
                              description: |-
                                vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine.
                                Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type
                                are redirected to the csi.vsphere.vmware.com CSI driver.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    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.
                                  type: string
                                storagePolicyName:
                                  description: storagePolicyName is the storage Policy
                                    Based Management (SPBM) profile name.
                                  type: string
                                volumePath:
                                  description: volumePath is the path that identifies
                                    vSphere volume vmdk
                                  type: string
                              required:
                              - volumePath
                              type: object
                          required:
                          - name
                          type: object
                      required:
                      - mount
                      - volume
                      type: object
                    type: array
                type: object
              deployCsiAddons:
                description: a list of additional sidecars?
                type: boolean
              enableMetadata:
                description: |-
                  Set to true to enable adding volume metadata on the CephFS subvolumes and RBD images.
                  Not all users might be interested in getting volume/snapshot details as metadata on CephFS subvolume and RBD images.
                  Hence enable metadata is false by default.
                type: boolean
              encryption:
                description: Driver's encryption settings
                properties:
                  configMapName:
                    description: |-
                      LocalObjectReference contains enough information to let you locate the
                      referenced object inside the same namespace.
                    properties:
                      name:
                        default: ""
                        description: |-
                          Name of the referent.
                          This field is effectively required, but due to backwards compatibility is
                          allowed to be empty. Instances of this type with an empty value here are
                          almost certainly wrong.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                    x-kubernetes-validations:
                    - message: '''.name'' cannot be empty'
                      rule: self.name != ""
                required:
                - configMapName
                type: object
              fsGroupPolicy:
                description: |-
                  Policy for modifying a volume's ownership or permissions when the PVC is being mounted.
                  supported values are documented at https://kubernetes-csi.github.io/docs/support-fsgroup.html
                type: string
              fuseMountOptions:
                additionalProperties:
                  type: string
                description: Set mount options to use when using the Fuse client
                type: object
              generateOMapInfo:
                description: |-
                  OMAP generator will generate the omap mapping between the PV name and the RBD image.
                  Need to be enabled when we are using rbd mirroring feature.
                  By default OMAP generator sidecar is not deployed with Csi controller plugin pod, to enable
                  it set it to true.
                type: boolean
              grpcTimeout:
                description: Set the gRPC timeout for gRPC call issued by the driver
                  components
                minimum: 0
                type: integer
              imageSet:
                description: |-
                  A reference to a ConfigMap resource holding image overwrite for deployed
                  containers
                properties:
                  name:
                    default: ""
                    description: |-
                      Name of the referent.
                      This field is effectively required, but due to backwards compatibility is
                      allowed to be empty. Instances of this type with an empty value here are
                      almost certainly wrong.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                type: object
                x-kubernetes-map-type: atomic
                x-kubernetes-validations:
                - message: '''.name'' cannot be empty'
                  rule: self.name != ""
              kernelMountOptions:
                additionalProperties:
                  type: string
                description: |-
                  Set mount options to use https://docs.ceph.com/en/latest/man/8/mount.ceph/#options
                  Set to "ms_mode=secure" when connections.encrypted is enabled in Ceph
                type: object
              leaderElection:
                description: Leader election setting
                properties:
                  leaseDuration:
                    description: |-
                      Duration in seconds that non-leader candidates will wait to force acquire leadership.
                      Default to 137 seconds.
                    minimum: 0
                    type: integer
                  renewDeadline:
                    description: |-
                      Deadline in seconds that the acting leader will retry refreshing leadership before giving up.
                      Defaults to 107 seconds.
                    minimum: 0
                    type: integer
                  retryPeriod:
                    description: |-
                      Retry Period in seconds the LeaderElector clients should wait between tries of actions.
                      Defaults to 26 seconds.
                    minimum: 0
                    type: integer
                type: object
              liveness:
                description: |-
                  Liveness metrics configuration.
                  disabled by default.
                properties:
                  metricsPort:
                    description: Port to expose liveness metrics
                    maximum: 65535
                    minimum: 1024
                    type: integer
                required:
                - metricsPort
                type: object
              log:
                description: Logging configuration for driver's pods
                properties:
                  rotation:
                    description: log rotation for csi pods
                    properties:
                      logHostPath:
                        description: |-
                          LogHostPath is the prefix directory path for the csi log files
                          Default to /var/lib/cephcsi
                        type: string
                      maxFiles:
                        description: |-
                          MaxFiles is the number of logrtoate files
                          Default to 7
                        type: integer
                      maxLogSize:
                        anyOf:
                        - type: integer
                        - type: string
                        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.
                        enum:
                        - hourly
                        - daily
                        - weekly
                        - monthly
                        type: string
                    type: object
                    x-kubernetes-validations:
                    - message: Either maxLogSize or periodicity must be set
                      rule: (has(self.maxLogSize)) || (has(self.periodicity))
                  verbosity:
                    description: |-
                      Log verbosity level for driver pods,
                      Supported values from 0 to 5. 0 for general useful logs (the default), 5 for trace level verbosity.
                      Default to 0
                    maximum: 5
                    minimum: 0
                    type: integer
                type: object
              nodePlugin:
                description: Driver's plugin configuration
                properties:
                  affinity:
                    description: Pod's affinity settings
                    properties:
                      nodeAffinity:
                        description: Describes node affinity scheduling rules for the
                          pod.
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              The scheduler will prefer to schedule pods to nodes that satisfy
                              the affinity expressions specified by this field, but it may choose
                              a node that violates one or more of the expressions. The node that is
                              most preferred is the one with the greatest sum of weights, i.e.
                              for each node that meets all of the scheduling requirements (resource
                              request, requiredDuringScheduling affinity expressions, etc.),
                              compute a sum by iterating through the elements of this field and adding
                              "weight" to the sum if the node matches the corresponding matchExpressions; the
                              node(s) with the highest sum are the most preferred.
                            items:
                              description: |-
                                An empty preferred scheduling term matches all objects with implicit weight 0
                                (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.
                                  properties:
                                    matchExpressions:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchFields:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                  x-kubernetes-map-type: atomic
                                weight:
                                  description: Weight associated with matching the corresponding
                                    nodeSelectorTerm, in the range 1-100.
                                  format: int32
                                  type: integer
                              required:
                              - preference
                              - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              If the affinity requirements specified by this field are not met at
                              scheduling time, the pod will not be scheduled onto the node.
                              If the affinity requirements specified by this field cease to be met
                              at some point during pod execution (e.g. due to an update), the system
                              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.
                                items:
                                  description: |-
                                    A null or empty node selector term matches no objects. The requirements of
                                    them are ANDed.
                                    The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
                                  properties:
                                    matchExpressions:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchFields:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              Represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                            type: string
                                          values:
                                            description: |-
                                              An array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. If the operator is Gt or Lt, the values
                                              array must have a single element, which will be interpreted as an integer.
                                              This array is replaced during a strategic merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                  x-kubernetes-map-type: atomic
                                type: array
                                x-kubernetes-list-type: atomic
                            required:
                            - nodeSelectorTerms
                            type: object
                            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)).
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              The scheduler will prefer to schedule pods to nodes that satisfy
                              the affinity expressions specified by this field, but it may choose
                              a node that violates one or more of the expressions. The node that is
                              most preferred is the one with the greatest sum of weights, i.e.
                              for each node that meets all of the scheduling requirements (resource
                              request, requiredDuringScheduling affinity expressions, etc.),
                              compute a sum by iterating through the elements of this field and adding
                              "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)
                              properties:
                                podAffinityTerm:
                                  description: Required. A pod affinity term, associated
                                    with the corresponding weight.
                                  properties:
                                    labelSelector:
                                      description: |-
                                        A label query over a set of resources, in this case pods.
                                        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.
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      description: |-
                                        MatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      description: |-
                                        MismatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      description: |-
                                        A label query over the set of namespaces that the term applies to.
                                        The term is applied to the union of the namespaces selected by this field
                                        and the ones listed in the namespaces field.
                                        null selector and null or empty namespaces list means "this pod's namespace".
                                        An empty selector ({}) matches all namespaces.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      description: |-
                                        namespaces specifies a static list of namespace names that the term applies to.
                                        The term is applied to the union of the namespaces listed in this field
                                        and the ones selected by namespaceSelector.
                                        null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      description: |-
                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                        whose value of the label with key topologyKey matches that of any node on which any of the
                                        selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                weight:
                                  description: |-
                                    weight associated with matching the corresponding podAffinityTerm,
                                    in the range 1-100.
                                  format: int32
                                  type: integer
                              required:
                              - podAffinityTerm
                              - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              If the affinity requirements specified by this field are not met at
                              scheduling time, the pod will not be scheduled onto the node.
                              If the affinity requirements specified by this field cease to be met
                              at some point during pod execution (e.g. due to a pod label update), the
                              system may or may not try to eventually evict the pod from its node.
                              When there are multiple elements, the lists of nodes corresponding to each
                              podAffinityTerm are intersected, i.e. all terms must be satisfied.
                            items:
                              description: |-
                                Defines a set of pods (namely those matching the labelSelector
                                relative to the given namespace(s)) that this pod should be
                                co-located (affinity) or not co-located (anti-affinity) with,
                                where co-located is defined as running on a node whose value of
                                the label with key <topologyKey> matches that of any node on which
                                a pod of the set of pods is running
                              properties:
                                labelSelector:
                                  description: |-
                                    A label query over a set of resources, in this case pods.
                                    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.
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                matchLabelKeys:
                                  description: |-
                                    MatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                mismatchLabelKeys:
                                  description: |-
                                    MismatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                namespaceSelector:
                                  description: |-
                                    A label query over the set of namespaces that the term applies to.
                                    The term is applied to the union of the namespaces selected by this field
                                    and the ones listed in the namespaces field.
                                    null selector and null or empty namespaces list means "this pod's namespace".
                                    An empty selector ({}) matches all namespaces.
                                  properties:
                                    matchExpressions:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                namespaces:
                                  description: |-
                                    namespaces specifies a static list of namespace names that the term applies to.
                                    The term is applied to the union of the namespaces listed in this field
                                    and the ones selected by namespaceSelector.
                                    null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                topologyKey:
                                  description: |-
                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                    whose value of the label with key topologyKey matches that of any node on which any of the
                                    selected pods is running.
                                    Empty topologyKey is not allowed.
                                  type: string
                              required:
                              - topologyKey
                              type: object
                            type: array
                            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)).
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              The scheduler will prefer to schedule pods to nodes that satisfy
                              the anti-affinity expressions specified by this field, but it may choose
                              a node that violates one or more of the expressions. The node that is
                              most preferred is the one with the greatest sum of weights, i.e.
                              for each node that meets all of the scheduling requirements (resource
                              request, requiredDuringScheduling anti-affinity expressions, etc.),
                              compute a sum by iterating through the elements of this field and subtracting
                              "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)
                              properties:
                                podAffinityTerm:
                                  description: Required. A pod affinity term, associated
                                    with the corresponding weight.
                                  properties:
                                    labelSelector:
                                      description: |-
                                        A label query over a set of resources, in this case pods.
                                        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.
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      description: |-
                                        MatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      description: |-
                                        MismatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      description: |-
                                        A label query over the set of namespaces that the term applies to.
                                        The term is applied to the union of the namespaces selected by this field
                                        and the ones listed in the namespaces field.
                                        null selector and null or empty namespaces list means "this pod's namespace".
                                        An empty selector ({}) matches all namespaces.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      description: |-
                                        namespaces specifies a static list of namespace names that the term applies to.
                                        The term is applied to the union of the namespaces listed in this field
                                        and the ones selected by namespaceSelector.
                                        null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      description: |-
                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                        whose value of the label with key topologyKey matches that of any node on which any of the
                                        selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                weight:
                                  description: |-
                                    weight associated with matching the corresponding podAffinityTerm,
                                    in the range 1-100.
                                  format: int32
                                  type: integer
                              required:
                              - podAffinityTerm
                              - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            description: |-
                              If the anti-affinity requirements specified by this field are not met at
                              scheduling time, the pod will not be scheduled onto the node.
                              If the anti-affinity requirements specified by this field cease to be met
                              at some point during pod execution (e.g. due to a pod label update), the
                              system may or may not try to eventually evict the pod from its node.
                              When there are multiple elements, the lists of nodes corresponding to each
                              podAffinityTerm are intersected, i.e. all terms must be satisfied.
                            items:
                              description: |-
                                Defines a set of pods (namely those matching the labelSelector
                                relative to the given namespace(s)) that this pod should be
                                co-located (affinity) or not co-located (anti-affinity) with,
                                where co-located is defined as running on a node whose value of
                                the label with key <topologyKey> matches that of any node on which
                                a pod of the set of pods is running
                              properties:
                                labelSelector:
                                  description: |-
                                    A label query over a set of resources, in this case pods.
                                    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.
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                matchLabelKeys:
                                  description: |-
                                    MatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                mismatchLabelKeys:
                                  description: |-
                                    MismatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                namespaceSelector:
                                  description: |-
                                    A label query over the set of namespaces that the term applies to.
                                    The term is applied to the union of the namespaces selected by this field
                                    and the ones listed in the namespaces field.
                                    null selector and null or empty namespaces list means "this pod's namespace".
                                    An empty selector ({}) matches all namespaces.
                                  properties:
                                    matchExpressions:
                                      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.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                namespaces:
                                  description: |-
                                    namespaces specifies a static list of namespace names that the term applies to.
                                    The term is applied to the union of the namespaces listed in this field
                                    and the ones selected by namespaceSelector.
                                    null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                topologyKey:
                                  description: |-
                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                    whose value of the label with key topologyKey matches that of any node on which any of the
                                    selected pods is running.
                                    Empty topologyKey is not allowed.
                                  type: string
                              required:
                              - topologyKey
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                        type: object
                    type: object
                  annotations:
                    additionalProperties:
                      type: string
                    description: Pod's annotations
                    type: object
                  enableSeLinuxHostMount:
                    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.
                    type: string
                  kubeletDirPath:
                    description: kubelet directory path, if kubelet configured to use
                      other than /var/lib/kubelet path.
                    type: string
                  labels:
                    additionalProperties:
                      type: string
                    description: Pod's labels
                    type: object
                  priorityClassName:
                    description: Pod's user defined priority class name
                    type: string
                  resources:
                    description: Resource requirements for plugin's containers
                    properties:
                      addons:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      liveness:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      logRotator:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      plugin:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                      registrar:
                        description: ResourceRequirements describes the compute resource
                          requirements.
                        properties:
                          claims:
                            description: |-
                              Claims lists the names of resources, defined in spec.resourceClaims,
                              that are used by this container.

                              This field depends on the
                              DynamicResourceAllocation feature gate.

                              This field is immutable. It can only be set for containers.
                            items:
                              description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                              properties:
                                name:
                                  description: |-
                                    Name must match the name of one entry in pod.spec.resourceClaims of
                                    the Pod where this field is used. It makes that resource available
                                    inside a container.
                                  type: string
                                request:
                                  description: |-
                                    Request is the name chosen for a request in the referenced claim.
                                    If empty, everything from the claim is made available, otherwise
                                    only the result of this request.
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Limits describes the maximum amount of compute resources allowed.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            description: |-
                              Requests describes the minimum amount of compute resources required.
                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            type: object
                        type: object
                    type: object
                  serviceAccountName:
                    description: Service account name to be used for driver's pods
                    type: string
                  tolerations:
                    description: Pod's tolerations list
                    items:
                      description: |-
                        The pod this Toleration is attached to tolerates any taint that matches
                        the triple <key,value,effect> using the matching operator <operator>.
                      properties:
                        effect:
                          description: |-
                            Effect indicates the taint effect to match. Empty means match all taint effects.
                            When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
                          type: string
                        key:
                          description: |-
                            Key is the taint key that the toleration applies to. Empty means match all taint keys.
                            If the key is empty, operator must be Exists; this combination means to match all values and all keys.
                          type: string
                        operator:
                          description: |-
                            Operator represents a key's relationship to the value.
                            Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal.
                            Exists is equivalent to wildcard for value, so that a pod can
                            tolerate all taints of a particular category.
                            Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators).
                          type: string
                        tolerationSeconds:
                          description: |-
                            TolerationSeconds represents the period of time the toleration (which must be
                            of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
                            it is not set, which means tolerate the taint forever (do not evict). Zero and
                            negative values will be treated as 0 (evict immediately) by the system.
                          format: int64
                          type: integer
                        value:
                          description: |-
                            Value is the taint value the toleration matches to.
                            If the operator is Exists, the value should be empty, otherwise just a regular string.
                          type: string
                      type: object
                    type: array
                  topology:
                    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
                        items:
                          type: string
                        type: array
                    required:
                    - domainLabels
                    type: object
                  updateStrategy:
                    description: |-
                      Driver's plugin daemonset update strategy, supported values are OnDelete and RollingUpdate.
                      Default value is RollingUpdate with MaxAvailabile set to 1
                    properties:
                      rollingUpdate:
                        description: Rolling update config params. Present only if type
                          = "RollingUpdate".
                        properties:
                          maxSurge:
                            anyOf:
                            - type: integer
                            - type: string
                            description: |-
                              The maximum number of nodes with an existing available DaemonSet pod that
                              can have an updated DaemonSet pod during during an update.
                              Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
                              This can not be 0 if MaxUnavailable is 0.
                              Absolute number is calculated from percentage by rounding up to a minimum of 1.
                              Default value is 0.
                              Example: when this is set to 30%, at most 30% of the total number of nodes
                              that should be running the daemon pod (i.e. status.desiredNumberScheduled)
                              can have their a new pod created before the old pod is marked as deleted.
                              The update starts by launching new pods on 30% of nodes. Once an updated
                              pod is available (Ready for at least minReadySeconds) the old DaemonSet pod
                              on that node is marked deleted. If the old pod becomes unavailable for any
                              reason (Ready transitions to false, is evicted, or is drained) an updated
                              pod is immediately created on that node without considering surge limits.
                              Allowing surge implies the possibility that the resources consumed by the
                              daemonset on any given node can double if the readiness check fails, and
                              so resource intensive daemonsets should take into account that they may
                              cause evictions during disruption.
                            x-kubernetes-int-or-string: true
                          maxUnavailable:
                            anyOf:
                            - type: integer
                            - type: string
                            description: |-
                              The maximum number of DaemonSet pods that can be unavailable during the
                              update. Value can be an absolute number (ex: 5) or a percentage of total
                              number of DaemonSet pods at the start of the update (ex: 10%). Absolute
                              number is calculated from percentage by rounding up.
                              This cannot be 0 if MaxSurge is 0
                              Default value is 1.
                              Example: when this is set to 30%, at most 30% of the total number of nodes
                              that should be running the daemon pod (i.e. status.desiredNumberScheduled)
                              can have their pods stopped for an update at any given time. The update
                              starts by stopping at most 30% of those DaemonSet pods and then brings
                              up new DaemonSet pods in their place. Once the new pods are available,
                              it then proceeds onto other DaemonSet pods, thus ensuring that at least
                              70% of original number of DaemonSet pods are available at all times during
                              the update.
                            x-kubernetes-int-or-string: true
                        type: object
                      type:
                        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
                    items:
                      properties:
                        mount:
                          description: VolumeMount describes a mounting of a Volume
                            within a container.
                          properties:
                            mountPath:
                              description: |-
                                Path within the container at which the volume should be mounted.  Must
                                not contain ':'.
                              type: string
                            mountPropagation:
                              description: |-
                                mountPropagation determines how mounts are propagated from the host
                                to container and the other way around.
                                When not set, MountPropagationNone is used.
                                This field is beta in 1.10.
                                When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
                                (which defaults to None).
                              type: string
                            name:
                              description: This must match the Name of a Volume.
                              type: string
                            readOnly:
                              description: |-
                                Mounted read-only if true, read-write otherwise (false or unspecified).
                                Defaults to false.
                              type: boolean
                            recursiveReadOnly:
                              description: |-
                                RecursiveReadOnly specifies whether read-only mounts should be handled
                                recursively.

                                If ReadOnly is false, this field has no meaning and must be unspecified.

                                If ReadOnly is true, and this field is set to Disabled, the mount is not made
                                recursively read-only.  If this field is set to IfPossible, the mount is made
                                recursively read-only, if it is supported by the container runtime.  If this
                                field is set to Enabled, the mount is made recursively read-only if it is
                                supported by the container runtime, otherwise the pod will not be started and
                                an error will be generated to indicate the reason.

                                If this field is set to IfPossible or Enabled, MountPropagation must be set to
                                None (or be unspecified, which defaults to None).

                                If this field is not specified, it is treated as an equivalent of Disabled.
                              type: string
                            subPath:
                              description: |-
                                Path within the volume from which the container's volume should be mounted.
                                Defaults to "" (volume's root).
                              type: string
                            subPathExpr:
                              description: |-
                                Expanded path within the volume from which the container's volume should be mounted.
                                Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
                                Defaults to "" (volume's root).
                                SubPathExpr and SubPath are mutually exclusive.
                              type: string
                          required:
                          - mountPath
                          - name
                          type: object
                        volume:
                          description: Volume represents a named volume in a pod that
                            may be accessed by any container in the pod.
                          properties:
                            awsElasticBlockStore:
                              description: |-
                                awsElasticBlockStore represents an AWS Disk resource that is attached to a
                                kubelet's host machine and then exposed to the pod.
                                Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree
                                awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type of the volume that you want to mount.
                                    Tip: Ensure that the filesystem type is supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                  type: string
                                partition:
                                  description: |-
                                    partition is the partition in the volume that you want to mount.
                                    If omitted, the default is to mount by volume name.
                                    Examples: For volume /dev/sda1, you specify the partition as "1".
                                    Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
                                  format: int32
                                  type: integer
                                readOnly:
                                  description: |-
                                    readOnly value true will force the readOnly setting in VolumeMounts.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                  type: boolean
                                volumeID:
                                  description: |-
                                    volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                  type: string
                              required:
                              - volumeID
                              type: object
                            azureDisk:
                              description: |-
                                azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
                                Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type
                                are redirected to the disk.csi.azure.com CSI driver.
                              properties:
                                cachingMode:
                                  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
                                  type: string
                                diskURI:
                                  description: diskURI is the URI of data disk in the
                                    blob storage
                                  type: string
                                fsType:
                                  default: ext4
                                  description: |-
                                    fsType is Filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    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'
                                  type: string
                                readOnly:
                                  default: false
                                  description: |-
                                    readOnly Defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                              required:
                              - diskName
                              - diskURI
                              type: object
                            azureFile:
                              description: |-
                                azureFile represents an Azure File Service mount on the host and bind mount to the pod.
                                Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type
                                are redirected to the file.csi.azure.com CSI driver.
                              properties:
                                readOnly:
                                  description: |-
                                    readOnly defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                secretName:
                                  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
                                  type: string
                              required:
                              - secretName
                              - shareName
                              type: object
                            cephfs:
                              description: |-
                                cephFS represents a Ceph FS mount on the host that shares a pod's lifetime.
                                Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.
                              properties:
                                monitors:
                                  description: |-
                                    monitors is Required: Monitors is a collection of Ceph monitors
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  items:
                                    type: string
                                  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
                                    /'
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  type: boolean
                                secretFile:
                                  description: |-
                                    secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  type: string
                                secretRef:
                                  description: |-
                                    secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                user:
                                  description: |-
                                    user is optional: User is the rados user name, default is admin
                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                  type: string
                              required:
                              - monitors
                              type: object
                            cinder:
                              description: |-
                                cinder represents a cinder volume attached and mounted on kubelets host machine.
                                Deprecated: Cinder is deprecated. All operations for the in-tree cinder type
                                are redirected to the cinder.csi.openstack.org CSI driver.
                                More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                    More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef is optional: points to a secret object containing parameters used to connect
                                    to OpenStack.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                volumeID:
                                  description: |-
                                    volumeID used to identify the volume in cinder.
                                    More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                  type: string
                              required:
                              - volumeID
                              type: object
                            configMap:
                              description: configMap represents a configMap that should
                                populate this volume
                              properties:
                                defaultMode:
                                  description: |-
                                    defaultMode is optional: mode bits used to set permissions on created files by default.
                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                    Defaults to 0644.
                                    Directories within the path are not affected by this setting.
                                    This might be in conflict with other options that affect the file
                                    mode, like fsGroup, and the result can be other mode bits set.
                                  format: int32
                                  type: integer
                                items:
                                  description: |-
                                    items if unspecified, each key-value pair in the Data field of the referenced
                                    ConfigMap will be projected into the volume as a file whose name is the
                                    key and content is the value. If specified, the listed keys will be
                                    projected into the specified paths, and unlisted keys will not be
                                    present. If a key is specified which is not present in the ConfigMap,
                                    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.
                                    properties:
                                      key:
                                        description: key is the key to project.
                                        type: string
                                      mode:
                                        description: |-
                                          mode is Optional: mode bits used to set permissions on this file.
                                          Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                          YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                          If not specified, the volume defaultMode will be used.
                                          This might be in conflict with other options that affect the file
                                          mode, like fsGroup, and the result can be other mode bits set.
                                        format: int32
                                        type: integer
                                      path:
                                        description: |-
                                          path is the relative path of the file to map the key to.
                                          May not be an absolute path.
                                          May not contain the path element '..'.
                                          May not start with the string '..'.
                                        type: string
                                    required:
                                    - key
                                    - path
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    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
                                  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.
                              properties:
                                driver:
                                  description: |-
                                    driver is the name of the CSI driver that handles this volume.
                                    Consult with your admin for the correct name as registered in the cluster.
                                  type: string
                                fsType:
                                  description: |-
                                    fsType to mount. Ex. "ext4", "xfs", "ntfs".
                                    If not provided, the empty value is passed to the associated CSI driver
                                    which will determine the default filesystem to apply.
                                  type: string
                                nodePublishSecretRef:
                                  description: |-
                                    nodePublishSecretRef is a reference to the secret object containing
                                    sensitive information to pass to the CSI driver to complete the CSI
                                    NodePublishVolume and NodeUnpublishVolume calls.
                                    This field is optional, and  may be empty if no secret is required. If the
                                    secret object contains more than one secret, all secret references are passed.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                readOnly:
                                  description: |-
                                    readOnly specifies a read-only configuration for the volume.
                                    Defaults to false (read/write).
                                  type: boolean
                                volumeAttributes:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    volumeAttributes stores driver-specific properties that are passed to the CSI
                                    driver. Consult your driver's documentation for supported values.
                                  type: object
                              required:
                              - driver
                              type: object
                            downwardAPI:
                              description: downwardAPI represents downward API about
                                the pod that should populate this volume
                              properties:
                                defaultMode:
                                  description: |-
                                    Optional: mode bits to use on created files by default. Must be a
                                    Optional: mode bits used to set permissions on created files by default.
                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                    Defaults to 0644.
                                    Directories within the path are not affected by this setting.
                                    This might be in conflict with other options that affect the file
                                    mode, like fsGroup, and the result can be other mode bits set.
                                  format: int32
                                  type: integer
                                items:
                                  description: Items is a list of downward API volume
                                    file
                                  items:
                                    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.'
                                        properties:
                                          apiVersion:
                                            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.
                                            type: string
                                        required:
                                        - fieldPath
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      mode:
                                        description: |-
                                          Optional: mode bits used to set permissions on this file, must be an octal value
                                          between 0000 and 0777 or a decimal value between 0 and 511.
                                          YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                          If not specified, the volume defaultMode will be used.
                                          This might be in conflict with other options that affect the file
                                          mode, like fsGroup, and the result can be other mode bits set.
                                        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 ''..'''
                                        type: string
                                      resourceFieldRef:
                                        description: |-
                                          Selects a resource of the container: only resources limits and requests
                                          (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                        properties:
                                          containerName:
                                            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"
                                            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'
                                            type: string
                                        required:
                                        - resource
                                        type: object
                                        x-kubernetes-map-type: atomic
                                    required:
                                    - path
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            emptyDir:
                              description: |-
                                emptyDir represents a temporary directory that shares a pod's lifetime.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                              properties:
                                medium:
                                  description: |-
                                    medium represents what type of storage medium should back this directory.
                                    The default is "" which means to use the node's default medium.
                                    Must be an empty string (default) or Memory.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                  type: string
                                sizeLimit:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    sizeLimit is the total amount of local storage required for this EmptyDir volume.
                                    The size limit is also applicable for memory medium.
                                    The maximum usage on memory medium EmptyDir would be the minimum value between
                                    the SizeLimit specified here and the sum of memory limits of all containers in a pod.
                                    The default is nil which means that the limit is undefined.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                              type: object
                            ephemeral:
                              description: |-
                                ephemeral represents a volume that is handled by a cluster storage driver.
                                The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
                                and deleted when the pod is removed.

                                Use this if:
                                a) the volume is only needed while the pod runs,
                                b) features of normal volumes like restoring from snapshot or capacity
                                   tracking are needed,
                                c) the storage driver is specified through a storage class, and
                                d) the storage driver supports dynamic volume provisioning through
                                   a PersistentVolumeClaim (see EphemeralVolumeSource for more
                                   information on the connection between this volume type
                                   and PersistentVolumeClaim).

                                Use PersistentVolumeClaim or one of the vendor-specific
                                APIs for volumes that persist for longer than the lifecycle
                                of an individual pod.

                                Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
                                be used that way - see the documentation of the driver for
                                more information.

                                A pod can use both types of ephemeral volumes and
                                persistent volumes at the same time.
                              properties:
                                volumeClaimTemplate:
                                  description: |-
                                    Will be used to create a stand-alone PVC to provision the volume.
                                    The pod in which this EphemeralVolumeSource is embedded will be the
                                    owner of the PVC, i.e. the PVC will be deleted together with the
                                    pod.  The name of the PVC will be `<pod name>-<volume name>` where
                                    `<volume name>` is the name from the `PodSpec.Volumes` array
                                    entry. Pod validation will reject the pod if the concatenated name
                                    is not valid for a PVC (for example, too long).

                                    An existing PVC with that name that is not owned by the pod
                                    will *not* be used for the pod to avoid using an unrelated
                                    volume by mistake. Starting the pod is then blocked until
                                    the unrelated PVC is removed. If such a pre-created PVC is
                                    meant to be used by the pod, the PVC has to updated with an
                                    owner reference to the pod once the pod exists. Normally
                                    this should not be necessary, but it may be useful when
                                    manually reconstructing a broken cluster.

                                    This field is read-only and no changes will be made by Kubernetes
                                    to the PVC after it has been created.

                                    Required, must not be nil.
                                  properties:
                                    metadata:
                                      description: |-
                                        May contain labels and annotations that will be copied into the PVC
                                        when creating it. No other fields are allowed and will be rejected during
                                        validation.
                                      type: object
                                    spec:
                                      description: |-
                                        The specification for the PersistentVolumeClaim. The entire content is
                                        copied unchanged into the PVC that gets created from this
                                        template. The same fields as in a PersistentVolumeClaim
                                        are also valid here.
                                      properties:
                                        accessModes:
                                          description: |-
                                            accessModes contains the desired access modes the volume should have.
                                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        dataSource:
                                          description: |-
                                            dataSource field can be used to specify either:
                                            * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
                                            * An existing PVC (PersistentVolumeClaim)
                                            If the provisioner or an external controller can support the specified data source,
                                            it will create a new volume based on the contents of the specified data source.
                                            When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
                                            and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
                                            If the namespace is specified, then dataSourceRef will not be copied to dataSource.
                                          properties:
                                            apiGroup:
                                              description: |-
                                                APIGroup is the group for the resource being referenced.
                                                If APIGroup is not specified, the specified Kind must be in the core API group.
                                                For any other third-party types, APIGroup is required.
                                              type: string
                                            kind:
                                              description: Kind is the type of resource
                                                being referenced
                                              type: string
                                            name:
                                              description: Name is the name of resource
                                                being referenced
                                              type: string
                                          required:
                                          - kind
                                          - name
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        dataSourceRef:
                                          description: |-
                                            dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
                                            volume is desired. This may be any object from a non-empty API group (non
                                            core object) or a PersistentVolumeClaim object.
                                            When this field is specified, volume binding will only succeed if the type of
                                            the specified object matches some installed volume populator or dynamic
                                            provisioner.
                                            This field will replace the functionality of the dataSource field and as such
                                            if both fields are non-empty, they must have the same value. For backwards
                                            compatibility, when namespace isn't specified in dataSourceRef,
                                            both fields (dataSource and dataSourceRef) will be set to the same
                                            value automatically if one of them is empty and the other is non-empty.
                                            When namespace is specified in dataSourceRef,
                                            dataSource isn't set to the same value and must be empty.
                                            There are three important differences between dataSource and dataSourceRef:
                                            * While dataSource only allows two specific types of objects, dataSourceRef
                                              allows any non-core object, as well as PersistentVolumeClaim objects.
                                            * While dataSource ignores disallowed values (dropping them), dataSourceRef
                                              preserves all values, and generates an error if a disallowed value is
                                              specified.
                                            * While dataSource only allows local objects, dataSourceRef allows objects
                                              in any namespaces.
                                            (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
                                            (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                          properties:
                                            apiGroup:
                                              description: |-
                                                APIGroup is the group for the resource being referenced.
                                                If APIGroup is not specified, the specified Kind must be in the core API group.
                                                For any other third-party types, APIGroup is required.
                                              type: string
                                            kind:
                                              description: Kind is the type of resource
                                                being referenced
                                              type: string
                                            name:
                                              description: Name is the name of resource
                                                being referenced
                                              type: string
                                            namespace:
                                              description: |-
                                                Namespace is the namespace of resource being referenced
                                                Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
                                                (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                              type: string
                                          required:
                                          - kind
                                          - name
                                          type: object
                                        resources:
                                          description: |-
                                            resources represents the minimum resources the volume should have.
                                            Users are allowed to specify resource requirements
                                            that are lower than previous value but must still be higher than capacity recorded in the
                                            status field of the claim.
                                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
                                          properties:
                                            limits:
                                              additionalProperties:
                                                anyOf:
                                                - type: integer
                                                - type: string
                                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                x-kubernetes-int-or-string: true
                                              description: |-
                                                Limits describes the maximum amount of compute resources allowed.
                                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                              type: object
                                            requests:
                                              additionalProperties:
                                                anyOf:
                                                - type: integer
                                                - type: string
                                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                x-kubernetes-int-or-string: true
                                              description: |-
                                                Requests describes the minimum amount of compute resources required.
                                                If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                                otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                              type: object
                                          type: object
                                        selector:
                                          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.
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        storageClassName:
                                          description: |-
                                            storageClassName is the name of the StorageClass required by the claim.
                                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
                                          type: string
                                        volumeAttributesClassName:
                                          description: |-
                                            volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
                                            If specified, the CSI driver will create or update the volume with the attributes defined
                                            in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
                                            it can be changed after the claim is created. An empty string or nil value indicates that no
                                            VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
                                            this field can be reset to its previous value (including nil) to cancel the modification.
                                            If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
                                            set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
                                            exists.
                                            More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
                                          type: string
                                        volumeMode:
                                          description: |-
                                            volumeMode defines what type of volume is required by the claim.
                                            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.
                                          type: string
                                      type: object
                                  required:
                                  - 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.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                  type: string
                                lun:
                                  description: 'lun is Optional: FC target lun number'
                                  format: int32
                                  type: integer
                                readOnly:
                                  description: |-
                                    readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                targetWWNs:
                                  description: 'targetWWNs is Optional: FC target worldwide
                                    names (WWNs)'
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                wwids:
                                  description: |-
                                    wwids Optional: FC volume world wide identifiers (wwids)
                                    Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            flexVolume:
                              description: |-
                                flexVolume represents a generic volume resource that is
                                provisioned/attached using an exec based plugin.
                                Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead.
                              properties:
                                driver:
                                  description: driver is the name of the driver to use
                                    for this volume.
                                  type: string
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
                                  type: string
                                options:
                                  additionalProperties:
                                    type: string
                                  description: 'options is Optional: this field holds
                                    extra command options if any.'
                                  type: object
                                readOnly:
                                  description: |-
                                    readOnly is Optional: defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef is Optional: secretRef is reference to the secret object containing
                                    sensitive information to pass to the plugin scripts. This may be
                                    empty if no secret object is specified. If the secret object
                                    contains more than one secret, all secrets are passed to the plugin
                                    scripts.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                              required:
                              - driver
                              type: object
                            flocker:
                              description: |-
                                flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running.
                                Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported.
                              properties:
                                datasetName:
                                  description: |-
                                    datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker
                                    should be considered as deprecated
                                  type: string
                                datasetUUID:
                                  description: datasetUUID is the UUID of the dataset.
                                    This is unique identifier of a Flocker dataset
                                  type: string
                              type: object
                            gcePersistentDisk:
                              description: |-
                                gcePersistentDisk represents a GCE Disk resource that is attached to a
                                kubelet's host machine and then exposed to the pod.
                                Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree
                                gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                              properties:
                                fsType:
                                  description: |-
                                    fsType is filesystem type of the volume that you want to mount.
                                    Tip: Ensure that the filesystem type is supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  type: string
                                partition:
                                  description: |-
                                    partition is the partition in the volume that you want to mount.
                                    If omitted, the default is to mount by volume name.
                                    Examples: For volume /dev/sda1, you specify the partition as "1".
                                    Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  format: int32
                                  type: integer
                                pdName:
                                  description: |-
                                    pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the ReadOnly setting in VolumeMounts.
                                    Defaults to false.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  type: boolean
                              required:
                              - pdName
                              type: object
                            gitRepo:
                              description: |-
                                gitRepo represents a git repository at a particular revision.
                                Deprecated: GitRepo is deprecated. To provision a container with a git repo, mount an
                                EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
                                into the Pod's container.
                              properties:
                                directory:
                                  description: |-
                                    directory is the target directory name.
                                    Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
                                    git repository.  Otherwise, if specified, the volume will contain the git repository in
                                    the subdirectory with the given name.
                                  type: string
                                repository:
                                  description: repository is the URL
                                  type: string
                                revision:
                                  description: revision is the commit hash for the specified
                                    revision.
                                  type: string
                              required:
                              - repository
                              type: object
                            glusterfs:
                              description: |-
                                glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
                                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.
                                  type: string
                                path:
                                  description: |-
                                    path is the Glusterfs volume path.
                                    More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
                                    Defaults to false.
                                    More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                  type: boolean
                              required:
                              - endpoints
                              - path
                              type: object
                            hostPath:
                              description: |-
                                hostPath represents a pre-existing file or directory on the host
                                machine that is directly exposed to the container. This is generally
                                used for system agents or other privileged things that are allowed
                                to see the host machine. Most containers will NOT need this.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                              properties:
                                path:
                                  description: |-
                                    path of the directory on the host.
                                    If the path is a symlink, it will follow the link to the real path.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                  type: string
                                type:
                                  description: |-
                                    type for HostPath Volume
                                    Defaults to ""
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                  type: string
                              required:
                              - path
                              type: object
                            image:
                              description: |-
                                image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine.
                                The volume is resolved at pod startup depending on which PullPolicy value is provided:

                                - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
                                - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
                                - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.

                                The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation.
                                A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message.
                                The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field.
                                The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images.
                                The volume will be mounted read-only (ro) and non-executable files (noexec).
                                Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath) before 1.33.
                                The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type.
                              properties:
                                pullPolicy:
                                  description: |-
                                    Policy for pulling OCI objects. Possible values are:
                                    Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
                                    Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
                                    IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.
                                    Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
                                  type: string
                                reference:
                                  description: |-
                                    Required: Image or artifact reference to be used.
                                    Behaves in the same way as pod.spec.containers[*].image.
                                    Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets.
                                    More info: https://kubernetes.io/docs/concepts/containers/images
                                    This field is optional to allow higher level config management to default or override
                                    container images in workload controllers like Deployments and StatefulSets.
                                  type: string
                              type: object
                            iscsi:
                              description: |-
                                iscsi represents an ISCSI Disk resource that is attached to a
                                kubelet's host machine and then exposed to the pod.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi
                              properties:
                                chapAuthDiscovery:
                                  description: chapAuthDiscovery defines whether support
                                    iSCSI Discovery CHAP authentication
                                  type: boolean
                                chapAuthSession:
                                  description: chapAuthSession defines whether support
                                    iSCSI Session CHAP authentication
                                  type: boolean
                                fsType:
                                  description: |-
                                    fsType is the filesystem type of the volume that you want to mount.
                                    Tip: Ensure that the filesystem type is supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
                                  type: string
                                initiatorName:
                                  description: |-
                                    initiatorName is the custom iSCSI Initiator Name.
                                    If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
                                    <target portal>:<volume name> will be created for the connection.
                                  type: string
                                iqn:
                                  description: iqn is the target iSCSI Qualified Name.
                                  type: string
                                iscsiInterface:
                                  default: default
                                  description: |-
                                    iscsiInterface is the interface Name that uses an iSCSI transport.
                                    Defaults to 'default' (tcp).
                                  type: string
                                lun:
                                  description: lun represents iSCSI Target Lun number.
                                  format: int32
                                  type: integer
                                portals:
                                  description: |-
                                    portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
                                    is other than default (typically TCP ports 860 and 3260).
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                readOnly:
                                  description: |-
                                    readOnly here will force the ReadOnly setting in VolumeMounts.
                                    Defaults to false.
                                  type: boolean
                                secretRef:
                                  description: secretRef is the CHAP Secret for iSCSI
                                    target and initiator authentication
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                targetPortal:
                                  description: |-
                                    targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
                                    is other than default (typically TCP ports 860 and 3260).
                                  type: string
                              required:
                              - iqn
                              - lun
                              - targetPortal
                              type: object
                            name:
                              description: |-
                                name of the volume.
                                Must be a DNS_LABEL and unique within the pod.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                            nfs:
                              description: |-
                                nfs represents an NFS mount on the host that shares a pod's lifetime
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                              properties:
                                path:
                                  description: |-
                                    path that is exported by the NFS server.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the NFS export to be mounted with read-only permissions.
                                    Defaults to false.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                  type: boolean
                                server:
                                  description: |-
                                    server is the hostname or IP address of the NFS server.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                  type: string
                              required:
                              - path
                              - server
                              type: object
                            persistentVolumeClaim:
                              description: |-
                                persistentVolumeClaimVolumeSource represents a reference to a
                                PersistentVolumeClaim in the same namespace.
                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                              properties:
                                claimName:
                                  description: |-
                                    claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly Will force the ReadOnly setting in VolumeMounts.
                                    Default false.
                                  type: boolean
                              required:
                              - claimName
                              type: object
                            photonPersistentDisk:
                              description: |-
                                photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine.
                                Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    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
                                  type: string
                              required:
                              - pdID
                              type: object
                            portworxVolume:
                              description: |-
                                portworxVolume represents a portworx volume attached and mounted on kubelets host machine.
                                Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type
                                are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate
                                is on.
                              properties:
                                fsType:
                                  description: |-
                                    fSType represents the filesystem type to mount
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                volumeID:
                                  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
                              properties:
                                defaultMode:
                                  description: |-
                                    defaultMode are the mode bits used to set permissions on created files by default.
                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                    Directories within the path are not affected by this setting.
                                    This might be in conflict with other options that affect the file
                                    mode, like fsGroup, and the result can be other mode bits set.
                                  format: int32
                                  type: integer
                                sources:
                                  description: |-
                                    sources is the list of volume projections. Each entry in this list
                                    handles one source.
                                  items:
                                    description: |-
                                      Projection that may be projected along with other supported volume types.
                                      Exactly one of these fields must be set.
                                    properties:
                                      clusterTrustBundle:
                                        description: |-
                                          ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
                                          of ClusterTrustBundle objects in an auto-updating file.

                                          Alpha, gated by the ClusterTrustBundleProjection feature gate.

                                          ClusterTrustBundle objects can either be selected by name, or by the
                                          combination of signer name and a label selector.

                                          Kubelet performs aggressive normalization of the PEM contents written
                                          into the pod filesystem.  Esoteric PEM features such as inter-block
                                          comments and block headers are stripped.  Certificates are deduplicated.
                                          The ordering of certificates within the file is arbitrary, and Kubelet
                                          may change the order over time.
                                        properties:
                                          labelSelector:
                                            description: |-
                                              Select all ClusterTrustBundles that match this label selector.  Only has
                                              effect if signerName is set.  Mutually-exclusive with name.  If unset,
                                              interpreted as "match nothing".  If set but empty, interpreted as "match
                                              everything".
                                            properties:
                                              matchExpressions:
                                                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.
                                                      type: string
                                                    operator:
                                                      description: |-
                                                        operator represents a key's relationship to a set of values.
                                                        Valid operators are In, NotIn, Exists and DoesNotExist.
                                                      type: string
                                                    values:
                                                      description: |-
                                                        values is an array of string values. If the operator is In or NotIn,
                                                        the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                        the values array must be empty. This array is replaced during a strategic
                                                        merge patch.
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              matchLabels:
                                                additionalProperties:
                                                  type: string
                                                description: |-
                                                  matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                  map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                  operator is "In", and the values array contains only "value". The requirements are ANDed.
                                                type: object
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          name:
                                            description: |-
                                              Select a single ClusterTrustBundle by object name.  Mutually-exclusive
                                              with signerName and labelSelector.
                                            type: string
                                          optional:
                                            description: |-
                                              If true, don't block pod startup if the referenced ClusterTrustBundle(s)
                                              aren't available.  If using name, then the named ClusterTrustBundle is
                                              allowed not to exist.  If using signerName, then the combination of
                                              signerName and labelSelector is allowed to match zero
                                              ClusterTrustBundles.
                                            type: boolean
                                          path:
                                            description: Relative path from the volume
                                              root to write the bundle.
                                            type: string
                                          signerName:
                                            description: |-
                                              Select all ClusterTrustBundles that match this signer name.
                                              Mutually-exclusive with name.  The contents of all selected
                                              ClusterTrustBundles will be unified and deduplicated.
                                            type: string
                                        required:
                                        - path
                                        type: object
                                      configMap:
                                        description: configMap information about the
                                          configMap data to project
                                        properties:
                                          items:
                                            description: |-
                                              items if unspecified, each key-value pair in the Data field of the referenced
                                              ConfigMap will be projected into the volume as a file whose name is the
                                              key and content is the value. If specified, the listed keys will be
                                              projected into the specified paths, and unlisted keys will not be
                                              present. If a key is specified which is not present in the ConfigMap,
                                              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.
                                              properties:
                                                key:
                                                  description: key is the key to project.
                                                  type: string
                                                mode:
                                                  description: |-
                                                    mode is Optional: mode bits used to set permissions on this file.
                                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                    If not specified, the volume defaultMode will be used.
                                                    This might be in conflict with other options that affect the file
                                                    mode, like fsGroup, and the result can be other mode bits set.
                                                  format: int32
                                                  type: integer
                                                path:
                                                  description: |-
                                                    path is the relative path of the file to map the key to.
                                                    May not be an absolute path.
                                                    May not contain the path element '..'.
                                                    May not start with the string '..'.
                                                  type: string
                                              required:
                                              - key
                                              - path
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          name:
                                            default: ""
                                            description: |-
                                              Name of the referent.
                                              This field is effectively required, but due to backwards compatibility is
                                              allowed to be empty. Instances of this type with an empty value here are
                                              almost certainly wrong.
                                              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
                                            type: boolean
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      downwardAPI:
                                        description: downwardAPI information about the
                                          downwardAPI data to project
                                        properties:
                                          items:
                                            description: Items is a list of DownwardAPIVolume
                                              file
                                            items:
                                              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.'
                                                  properties:
                                                    apiVersion:
                                                      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.
                                                      type: string
                                                  required:
                                                  - fieldPath
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                mode:
                                                  description: |-
                                                    Optional: mode bits used to set permissions on this file, must be an octal value
                                                    between 0000 and 0777 or a decimal value between 0 and 511.
                                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                    If not specified, the volume defaultMode will be used.
                                                    This might be in conflict with other options that affect the file
                                                    mode, like fsGroup, and the result can be other mode bits set.
                                                  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 ''..'''
                                                  type: string
                                                resourceFieldRef:
                                                  description: |-
                                                    Selects a resource of the container: only resources limits and requests
                                                    (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                                  properties:
                                                    containerName:
                                                      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"
                                                      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'
                                                      type: string
                                                  required:
                                                  - resource
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                              required:
                                              - path
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        type: object
                                      podCertificate:
                                        description: |-
                                          Projects an auto-rotating credential bundle (private key and certificate
                                          chain) that the pod can use either as a TLS client or server.

                                          Kubelet generates a private key and uses it to send a
                                          PodCertificateRequest to the named signer.  Once the signer approves the
                                          request and issues a certificate chain, Kubelet writes the key and
                                          certificate chain to the pod filesystem.  The pod does not start until
                                          certificates have been issued for each podCertificate projected volume
                                          source in its spec.

                                          Kubelet will begin trying to rotate the certificate at the time indicated
                                          by the signer using the PodCertificateRequest.Status.BeginRefreshAt
                                          timestamp.

                                          Kubelet can write a single file, indicated by the credentialBundlePath
                                          field, or separate files, indicated by the keyPath and
                                          certificateChainPath fields.

                                          The credential bundle is a single file in PEM format.  The first PEM
                                          entry is the private key (in PKCS#8 format), and the remaining PEM
                                          entries are the certificate chain issued by the signer (typically,
                                          signers will return their certificate chain in leaf-to-root order).

                                          Prefer using the credential bundle format, since your application code
                                          can read it atomically.  If you use keyPath and certificateChainPath,
                                          your application must make two separate file reads. If these coincide
                                          with a certificate rotation, it is possible that the private key and leaf
                                          certificate you read may not correspond to each other.  Your application
                                          will need to check for this condition, and re-read until they are
                                          consistent.

                                          The named signer controls chooses the format of the certificate it
                                          issues; consult the signer implementation's documentation to learn how to
                                          use the certificates it issues.
                                        properties:
                                          certificateChainPath:
                                            description: |-
                                              Write the certificate chain at this path in the projected volume.

                                              Most applications should use credentialBundlePath.  When using keyPath
                                              and certificateChainPath, your application needs to check that the key
                                              and leaf certificate are consistent, because it is possible to read the
                                              files mid-rotation.
                                            type: string
                                          credentialBundlePath:
                                            description: |-
                                              Write the credential bundle at this path in the projected volume.

                                              The credential bundle is a single file that contains multiple PEM blocks.
                                              The first PEM block is a PRIVATE KEY block, containing a PKCS#8 private
                                              key.

                                              The remaining blocks are CERTIFICATE blocks, containing the issued
                                              certificate chain from the signer (leaf and any intermediates).

                                              Using credentialBundlePath lets your Pod's application code make a single
                                              atomic read that retrieves a consistent key and certificate chain.  If you
                                              project them to separate files, your application code will need to
                                              additionally check that the leaf certificate was issued to the key.
                                            type: string
                                          keyPath:
                                            description: |-
                                              Write the key at this path in the projected volume.

                                              Most applications should use credentialBundlePath.  When using keyPath
                                              and certificateChainPath, your application needs to check that the key
                                              and leaf certificate are consistent, because it is possible to read the
                                              files mid-rotation.
                                            type: string
                                          keyType:
                                            description: |-
                                              The type of keypair Kubelet will generate for the pod.

                                              Valid values are "RSA3072", "RSA4096", "ECDSAP256", "ECDSAP384",
                                              "ECDSAP521", and "ED25519".
                                            type: string
                                          maxExpirationSeconds:
                                            description: |-
                                              maxExpirationSeconds is the maximum lifetime permitted for the
                                              certificate.

                                              Kubelet copies this value verbatim into the PodCertificateRequests it
                                              generates for this projection.

                                              If omitted, kube-apiserver will set it to 86400(24 hours). kube-apiserver
                                              will reject values shorter than 3600 (1 hour).  The maximum allowable
                                              value is 7862400 (91 days).

                                              The signer implementation is then free to issue a certificate with any
                                              lifetime *shorter* than MaxExpirationSeconds, but no shorter than 3600
                                              seconds (1 hour).  This constraint is enforced by kube-apiserver.
                                              `kubernetes.io` signers will never issue certificates with a lifetime
                                              longer than 24 hours.
                                            format: int32
                                            type: integer
                                          signerName:
                                            description: Kubelet's generated CSRs will
                                              be addressed to this signer.
                                            type: string
                                          userAnnotations:
                                            additionalProperties:
                                              type: string
                                            description: |-
                                              userAnnotations allow pod authors to pass additional information to
                                              the signer implementation.  Kubernetes does not restrict or validate this
                                              metadata in any way.

                                              These values are copied verbatim into the `spec.unverifiedUserAnnotations` field of
                                              the PodCertificateRequest objects that Kubelet creates.

                                              Entries are subject to the same validation as object metadata annotations,
                                              with the addition that all keys must be domain-prefixed. No restrictions
                                              are placed on values, except an overall size limitation on the entire field.

                                              Signers should document the keys and values they support. Signers should
                                              deny requests that contain keys they do not recognize.
                                            type: object
                                        required:
                                        - keyType
                                        - signerName
                                        type: object
                                      secret:
                                        description: secret information about the secret
                                          data to project
                                        properties:
                                          items:
                                            description: |-
                                              items if unspecified, each key-value pair in the Data field of the referenced
                                              Secret will be projected into the volume as a file whose name is the
                                              key and content is the value. If specified, the listed keys will be
                                              projected into the specified paths, and unlisted keys will not be
                                              present. If a key is specified which is not present in the Secret,
                                              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.
                                              properties:
                                                key:
                                                  description: key is the key to project.
                                                  type: string
                                                mode:
                                                  description: |-
                                                    mode is Optional: mode bits used to set permissions on this file.
                                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                    YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                    If not specified, the volume defaultMode will be used.
                                                    This might be in conflict with other options that affect the file
                                                    mode, like fsGroup, and the result can be other mode bits set.
                                                  format: int32
                                                  type: integer
                                                path:
                                                  description: |-
                                                    path is the relative path of the file to map the key to.
                                                    May not be an absolute path.
                                                    May not contain the path element '..'.
                                                    May not start with the string '..'.
                                                  type: string
                                              required:
                                              - key
                                              - path
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          name:
                                            default: ""
                                            description: |-
                                              Name of the referent.
                                              This field is effectively required, but due to backwards compatibility is
                                              allowed to be empty. Instances of this type with an empty value here are
                                              almost certainly wrong.
                                              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
                                            type: boolean
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      serviceAccountToken:
                                        description: serviceAccountToken is information
                                          about the serviceAccountToken data to project
                                        properties:
                                          audience:
                                            description: |-
                                              audience is the intended audience of the token. A recipient of a token
                                              must identify itself with an identifier specified in the audience of the
                                              token, and otherwise should reject the token. The audience defaults to the
                                              identifier of the apiserver.
                                            type: string
                                          expirationSeconds:
                                            description: |-
                                              expirationSeconds is the requested duration of validity of the service
                                              account token. As the token approaches expiration, the kubelet volume
                                              plugin will proactively rotate the service account token. The kubelet will
                                              start trying to rotate the token if the token is older than 80 percent of
                                              its time to live or if the token is older than 24 hours.Defaults to 1 hour
                                              and must be at least 10 minutes.
                                            format: int64
                                            type: integer
                                          path:
                                            description: |-
                                              path is the path relative to the mount point of the file to project the
                                              token into.
                                            type: string
                                        required:
                                        - path
                                        type: object
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            quobyte:
                              description: |-
                                quobyte represents a Quobyte mount on the host that shares a pod's lifetime.
                                Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.
                              properties:
                                group:
                                  description: |-
                                    group to map volume access to
                                    Default is no group
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the Quobyte volume to be mounted with read-only permissions.
                                    Defaults to false.
                                  type: boolean
                                registry:
                                  description: |-
                                    registry represents a single or multiple Quobyte Registry services
                                    specified as a string as host:port pair (multiple entries are separated with commas)
                                    which acts as the central registry for volumes
                                  type: string
                                tenant:
                                  description: |-
                                    tenant owning the given Quobyte volume in the Backend
                                    Used with dynamically provisioned Quobyte volumes, value is set by the plugin
                                  type: string
                                user:
                                  description: |-
                                    user to map volume access to
                                    Defaults to serivceaccount user
                                  type: string
                                volume:
                                  description: volume is a string that references an
                                    already created Quobyte volume by name.
                                  type: string
                              required:
                              - registry
                              - volume
                              type: object
                            rbd:
                              description: |-
                                rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
                                Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type of the volume that you want to mount.
                                    Tip: Ensure that the filesystem type is supported by the host operating system.
                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
                                  type: string
                                image:
                                  description: |-
                                    image is the rados image name.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: string
                                keyring:
                                  default: /etc/ceph/keyring
                                  description: |-
                                    keyring is the path to key ring for RBDUser.
                                    Default is /etc/ceph/keyring.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: string
                                monitors:
                                  description: |-
                                    monitors is a collection of Ceph monitors.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                pool:
                                  default: rbd
                                  description: |-
                                    pool is the rados pool name.
                                    Default is rbd.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly here will force the ReadOnly setting in VolumeMounts.
                                    Defaults to false.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef is name of the authentication secret for RBDUser. If provided
                                    overrides keyring.
                                    Default is nil.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                user:
                                  default: admin
                                  description: |-
                                    user is the rados user name.
                                    Default is admin.
                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                  type: string
                              required:
                              - image
                              - monitors
                              type: object
                            scaleIO:
                              description: |-
                                scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
                                Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.
                              properties:
                                fsType:
                                  default: xfs
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs", "ntfs".
                                    Default is "xfs".
                                  type: string
                                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.
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly Defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef references to the secret for ScaleIO user and other
                                    sensitive information. If this is not provided, Login operation will fail.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                sslEnabled:
                                  description: sslEnabled Flag enable/disable SSL communication
                                    with Gateway, default false
                                  type: boolean
                                storageMode:
                                  default: ThinProvisioned
                                  description: |-
                                    storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
                                    Default is ThinProvisioned.
                                  type: string
                                storagePool:
                                  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.
                                  type: string
                                volumeName:
                                  description: |-
                                    volumeName is the name of a volume already created in the ScaleIO system
                                    that is associated with this volume source.
                                  type: string
                              required:
                              - gateway
                              - secretRef
                              - system
                              type: object
                            secret:
                              description: |-
                                secret represents a secret that should populate this volume.
                                More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                              properties:
                                defaultMode:
                                  description: |-
                                    defaultMode is Optional: mode bits used to set permissions on created files by default.
                                    Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                    YAML accepts both octal and decimal values, JSON requires decimal values
                                    for mode bits. Defaults to 0644.
                                    Directories within the path are not affected by this setting.
                                    This might be in conflict with other options that affect the file
                                    mode, like fsGroup, and the result can be other mode bits set.
                                  format: int32
                                  type: integer
                                items:
                                  description: |-
                                    items If unspecified, each key-value pair in the Data field of the referenced
                                    Secret will be projected into the volume as a file whose name is the
                                    key and content is the value. If specified, the listed keys will be
                                    projected into the specified paths, and unlisted keys will not be
                                    present. If a key is specified which is not present in the Secret,
                                    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.
                                    properties:
                                      key:
                                        description: key is the key to project.
                                        type: string
                                      mode:
                                        description: |-
                                          mode is Optional: mode bits used to set permissions on this file.
                                          Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                          YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                          If not specified, the volume defaultMode will be used.
                                          This might be in conflict with other options that affect the file
                                          mode, like fsGroup, and the result can be other mode bits set.
                                        format: int32
                                        type: integer
                                      path:
                                        description: |-
                                          path is the relative path of the file to map the key to.
                                          May not be an absolute path.
                                          May not contain the path element '..'.
                                          May not start with the string '..'.
                                        type: string
                                    required:
                                    - key
                                    - path
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                optional:
                                  description: optional field specify whether the Secret
                                    or its keys must be defined
                                  type: boolean
                                secretName:
                                  description: |-
                                    secretName is the name of the secret in the pod's namespace to use.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                                  type: string
                              type: object
                            storageos:
                              description: |-
                                storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
                                Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is the filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                  type: string
                                readOnly:
                                  description: |-
                                    readOnly defaults to false (read/write). ReadOnly here will force
                                    the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                secretRef:
                                  description: |-
                                    secretRef specifies the secret to use for obtaining the StorageOS API
                                    credentials.  If not specified, default values will be attempted.
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                  type: object
                                  x-kubernetes-map-type: atomic
                                volumeName:
                                  description: |-
                                    volumeName is the human-readable name of the StorageOS volume.  Volume
                                    names are only unique within a namespace.
                                  type: string
                                volumeNamespace:
                                  description: |-
                                    volumeNamespace specifies the scope of the volume within StorageOS.  If no
                                    namespace is specified then the Pod's namespace will be used.  This allows the
                                    Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
                                    Set VolumeName to any name to override the default behaviour.
                                    Set to "default" if you are not using namespaces within StorageOS.
                                    Namespaces that do not pre-exist within StorageOS will be created.
                                  type: string
                              type: object
                            vsphereVolume:
                              description: |-
                                vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine.
                                Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type
                                are redirected to the csi.vsphere.vmware.com CSI driver.
                              properties:
                                fsType:
                                  description: |-
                                    fsType is filesystem type to mount.
                                    Must be a filesystem type supported by the host operating system.
                                    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.
                                  type: string
                                storagePolicyName:
                                  description: storagePolicyName is the storage Policy
                                    Based Management (SPBM) profile name.
                                  type: string
                                volumePath:
                                  description: volumePath is the path that identifies
                                    vSphere volume vmdk
                                  type: string
                              required:
                              - volumePath
                              type: object
                          required:
                          - name
                          type: object
                      required:
                      - mount
                      - volume
                      type: object
                    type: array
                type: object
              snapshotPolicy:
                description: 'Select a policy for snapshot behavior: none, autodetect,
                  snapshot, sanpshotGroup'
                enum:
                - none
                - volumeGroupSnapshot
                - volumeSnapshot
                type: string
            type: object
          status:
            description: DriverStatus defines the observed state of Driver
            type: object
        type: object
        x-kubernetes-validations:
        - message: '.metadata.name must match: ''[<prefix>.](rbd|cephfs|nfs).csi.ceph.com'''
          rule: self.metadata.name.matches('^(.+\\.)?(rbd|cephfs|nfs)?\\.csi\\.ceph\\.com$')
    served: true
    storage: false
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/operatorconfig-crd.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: operatorconfigs.csi.ceph.io
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
spec:
  group: csi.ceph.io
  names:
    kind: OperatorConfig
    listKind: OperatorConfigList
    plural: operatorconfigs
    singular: operatorconfig
  scope: Namespaced
  versions:
  - name: v1
    schema:
      openAPIV3Schema:
        description: OperatorConfig is the Schema for the operatorconfigs API
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: OperatorConfigSpec defines the desired state of OperatorConfig
            properties:
              driverSpecDefaults:
                description: Allow overwrite of hardcoded defaults for any driver managed
                  by this operator
                properties:
                  attachRequired:
                    description: |-
                      Whether to skip any attach operation altogether for CephCsi PVCs.
                      See more details [here](https://kubernetes-csi.github.io/docs/skip-attach.html#skip-attach-with-csi-driver-object).
                      If set to false it skips the volume attachments and makes the creation of pods using the CephCsi PVC fast.
                      **WARNING** It's highly discouraged to use this for RWO volumes. for RBD PVC it can cause data corruption,
                      csi-addons operations like Reclaimspace and PVC Keyrotation will also not be supported if set to false
                      since we'll have no VolumeAttachments to determine which node the PVC is mounted on.
                      Refer to this [issue](https://github.com/kubernetes/kubernetes/issues/103305) for more details.
                    type: boolean
                  cephFsClientType:
                    description: |-
                      Select between between cephfs kernel driver and ceph-fuse
                      If you select a non-kernel client, your application may be disrupted during upgrade.
                      See the upgrade guide: https://rook.io/docs/rook/latest/ceph-upgrade.html
                      NOTE! cephfs quota is not supported in kernel version < 4.17
                    enum:
                    - autodetect
                    - kernel
                    type: string
                  clusterName:
                    description: |-
                      Cluster name identifier to set as metadata on the CephFS subvolume and RBD images. This will be useful in cases
                      when two container orchestrator clusters (Kubernetes/OCP) are using a single ceph cluster.
                    type: string
                  controllerPlugin:
                    description: Driver's controller plugin configuration
                    properties:
                      affinity:
                        description: Pod's affinity settings
                        properties:
                          nodeAffinity:
                            description: Describes node affinity scheduling rules for
                              the pod.
                            properties:
                              preferredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  The scheduler will prefer to schedule pods to nodes that satisfy
                                  the affinity expressions specified by this field, but it may choose
                                  a node that violates one or more of the expressions. The node that is
                                  most preferred is the one with the greatest sum of weights, i.e.
                                  for each node that meets all of the scheduling requirements (resource
                                  request, requiredDuringScheduling affinity expressions, etc.),
                                  compute a sum by iterating through the elements of this field and adding
                                  "weight" to the sum if the node matches the corresponding matchExpressions; the
                                  node(s) with the highest sum are the most preferred.
                                items:
                                  description: |-
                                    An empty preferred scheduling term matches all objects with implicit weight 0
                                    (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.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  Represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: |-
                                                  An array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will be interpreted as an integer.
                                                  This array is replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchFields:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  Represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: |-
                                                  An array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will be interpreted as an integer.
                                                  This array is replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    weight:
                                      description: Weight associated with matching the
                                        corresponding nodeSelectorTerm, in the range
                                        1-100.
                                      format: int32
                                      type: integer
                                  required:
                                  - preference
                                  - weight
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              requiredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  If the affinity requirements specified by this field are not met at
                                  scheduling time, the pod will not be scheduled onto the node.
                                  If the affinity requirements specified by this field cease to be met
                                  at some point during pod execution (e.g. due to an update), the system
                                  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.
                                    items:
                                      description: |-
                                        A null or empty node selector term matches no objects. The requirements of
                                        them are ANDed.
                                        The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  Represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: |-
                                                  An array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will be interpreted as an integer.
                                                  This array is replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchFields:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  Represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: |-
                                                  An array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will be interpreted as an integer.
                                                  This array is replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    type: array
                                    x-kubernetes-list-type: atomic
                                required:
                                - nodeSelectorTerms
                                type: object
                                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)).
                            properties:
                              preferredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  The scheduler will prefer to schedule pods to nodes that satisfy
                                  the affinity expressions specified by this field, but it may choose
                                  a node that violates one or more of the expressions. The node that is
                                  most preferred is the one with the greatest sum of weights, i.e.
                                  for each node that meets all of the scheduling requirements (resource
                                  request, requiredDuringScheduling affinity expressions, etc.),
                                  compute a sum by iterating through the elements of this field and adding
                                  "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)
                                  properties:
                                    podAffinityTerm:
                                      description: Required. A pod affinity term, associated
                                        with the corresponding weight.
                                      properties:
                                        labelSelector:
                                          description: |-
                                            A label query over a set of resources, in this case pods.
                                            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.
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        matchLabelKeys:
                                          description: |-
                                            MatchLabelKeys is a set of pod label keys to select which pods will
                                            be taken into consideration. The keys are used to lookup values from the
                                            incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                            to select the group of existing pods which pods will be taken into consideration
                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                            pod labels will be ignored. The default value is empty.
                                            The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                            Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        mismatchLabelKeys:
                                          description: |-
                                            MismatchLabelKeys is a set of pod label keys to select which pods will
                                            be taken into consideration. The keys are used to lookup values from the
                                            incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                            to select the group of existing pods which pods will be taken into consideration
                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                            pod labels will be ignored. The default value is empty.
                                            The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                            Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        namespaceSelector:
                                          description: |-
                                            A label query over the set of namespaces that the term applies to.
                                            The term is applied to the union of the namespaces selected by this field
                                            and the ones listed in the namespaces field.
                                            null selector and null or empty namespaces list means "this pod's namespace".
                                            An empty selector ({}) matches all namespaces.
                                          properties:
                                            matchExpressions:
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        namespaces:
                                          description: |-
                                            namespaces specifies a static list of namespace names that the term applies to.
                                            The term is applied to the union of the namespaces listed in this field
                                            and the ones selected by namespaceSelector.
                                            null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        topologyKey:
                                          description: |-
                                            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                            the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                            whose value of the label with key topologyKey matches that of any node on which any of the
                                            selected pods is running.
                                            Empty topologyKey is not allowed.
                                          type: string
                                      required:
                                      - topologyKey
                                      type: object
                                    weight:
                                      description: |-
                                        weight associated with matching the corresponding podAffinityTerm,
                                        in the range 1-100.
                                      format: int32
                                      type: integer
                                  required:
                                  - podAffinityTerm
                                  - weight
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              requiredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  If the affinity requirements specified by this field are not met at
                                  scheduling time, the pod will not be scheduled onto the node.
                                  If the affinity requirements specified by this field cease to be met
                                  at some point during pod execution (e.g. due to a pod label update), the
                                  system may or may not try to eventually evict the pod from its node.
                                  When there are multiple elements, the lists of nodes corresponding to each
                                  podAffinityTerm are intersected, i.e. all terms must be satisfied.
                                items:
                                  description: |-
                                    Defines a set of pods (namely those matching the labelSelector
                                    relative to the given namespace(s)) that this pod should be
                                    co-located (affinity) or not co-located (anti-affinity) with,
                                    where co-located is defined as running on a node whose value of
                                    the label with key <topologyKey> matches that of any node on which
                                    a pod of the set of pods is running
                                  properties:
                                    labelSelector:
                                      description: |-
                                        A label query over a set of resources, in this case pods.
                                        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.
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      description: |-
                                        MatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      description: |-
                                        MismatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      description: |-
                                        A label query over the set of namespaces that the term applies to.
                                        The term is applied to the union of the namespaces selected by this field
                                        and the ones listed in the namespaces field.
                                        null selector and null or empty namespaces list means "this pod's namespace".
                                        An empty selector ({}) matches all namespaces.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      description: |-
                                        namespaces specifies a static list of namespace names that the term applies to.
                                        The term is applied to the union of the namespaces listed in this field
                                        and the ones selected by namespaceSelector.
                                        null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      description: |-
                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                        whose value of the label with key topologyKey matches that of any node on which any of the
                                        selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                type: array
                                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)).
                            properties:
                              preferredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  The scheduler will prefer to schedule pods to nodes that satisfy
                                  the anti-affinity expressions specified by this field, but it may choose
                                  a node that violates one or more of the expressions. The node that is
                                  most preferred is the one with the greatest sum of weights, i.e.
                                  for each node that meets all of the scheduling requirements (resource
                                  request, requiredDuringScheduling anti-affinity expressions, etc.),
                                  compute a sum by iterating through the elements of this field and subtracting
                                  "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)
                                  properties:
                                    podAffinityTerm:
                                      description: Required. A pod affinity term, associated
                                        with the corresponding weight.
                                      properties:
                                        labelSelector:
                                          description: |-
                                            A label query over a set of resources, in this case pods.
                                            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.
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        matchLabelKeys:
                                          description: |-
                                            MatchLabelKeys is a set of pod label keys to select which pods will
                                            be taken into consideration. The keys are used to lookup values from the
                                            incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                            to select the group of existing pods which pods will be taken into consideration
                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                            pod labels will be ignored. The default value is empty.
                                            The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                            Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        mismatchLabelKeys:
                                          description: |-
                                            MismatchLabelKeys is a set of pod label keys to select which pods will
                                            be taken into consideration. The keys are used to lookup values from the
                                            incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                            to select the group of existing pods which pods will be taken into consideration
                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                            pod labels will be ignored. The default value is empty.
                                            The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                            Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        namespaceSelector:
                                          description: |-
                                            A label query over the set of namespaces that the term applies to.
                                            The term is applied to the union of the namespaces selected by this field
                                            and the ones listed in the namespaces field.
                                            null selector and null or empty namespaces list means "this pod's namespace".
                                            An empty selector ({}) matches all namespaces.
                                          properties:
                                            matchExpressions:
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        namespaces:
                                          description: |-
                                            namespaces specifies a static list of namespace names that the term applies to.
                                            The term is applied to the union of the namespaces listed in this field
                                            and the ones selected by namespaceSelector.
                                            null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        topologyKey:
                                          description: |-
                                            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                            the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                            whose value of the label with key topologyKey matches that of any node on which any of the
                                            selected pods is running.
                                            Empty topologyKey is not allowed.
                                          type: string
                                      required:
                                      - topologyKey
                                      type: object
                                    weight:
                                      description: |-
                                        weight associated with matching the corresponding podAffinityTerm,
                                        in the range 1-100.
                                      format: int32
                                      type: integer
                                  required:
                                  - podAffinityTerm
                                  - weight
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              requiredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  If the anti-affinity requirements specified by this field are not met at
                                  scheduling time, the pod will not be scheduled onto the node.
                                  If the anti-affinity requirements specified by this field cease to be met
                                  at some point during pod execution (e.g. due to a pod label update), the
                                  system may or may not try to eventually evict the pod from its node.
                                  When there are multiple elements, the lists of nodes corresponding to each
                                  podAffinityTerm are intersected, i.e. all terms must be satisfied.
                                items:
                                  description: |-
                                    Defines a set of pods (namely those matching the labelSelector
                                    relative to the given namespace(s)) that this pod should be
                                    co-located (affinity) or not co-located (anti-affinity) with,
                                    where co-located is defined as running on a node whose value of
                                    the label with key <topologyKey> matches that of any node on which
                                    a pod of the set of pods is running
                                  properties:
                                    labelSelector:
                                      description: |-
                                        A label query over a set of resources, in this case pods.
                                        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.
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      description: |-
                                        MatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      description: |-
                                        MismatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      description: |-
                                        A label query over the set of namespaces that the term applies to.
                                        The term is applied to the union of the namespaces selected by this field
                                        and the ones listed in the namespaces field.
                                        null selector and null or empty namespaces list means "this pod's namespace".
                                        An empty selector ({}) matches all namespaces.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      description: |-
                                        namespaces specifies a static list of namespace names that the term applies to.
                                        The term is applied to the union of the namespaces listed in this field
                                        and the ones selected by namespaceSelector.
                                        null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      description: |-
                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                        whose value of the label with key topologyKey matches that of any node on which any of the
                                        selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                            type: object
                        type: object
                      annotations:
                        additionalProperties:
                          type: string
                        description: Pod's annotations
                        type: object
                      deploymentStrategy:
                        description: |-
                          DeploymentStrategy describes how to replace existing pods with new ones
                          Default value is Recreate
                        properties:
                          rollingUpdate:
                            description: |-
                              Rolling update config params. Present only if DeploymentStrategyType =
                              RollingUpdate.
                            properties:
                              maxSurge:
                                anyOf:
                                - type: integer
                                - type: string
                                description: |-
                                  The maximum number of pods that can be scheduled above the desired number of
                                  pods.
                                  Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
                                  This can not be 0 if MaxUnavailable is 0.
                                  Absolute number is calculated from percentage by rounding up.
                                  Defaults to 25%.
                                  Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when
                                  the rolling update starts, such that the total number of old and new pods do not exceed
                                  130% of desired pods. Once old pods have been killed,
                                  new ReplicaSet can be scaled up further, ensuring that total number of pods running
                                  at any time during the update is at most 130% of desired pods.
                                x-kubernetes-int-or-string: true
                              maxUnavailable:
                                anyOf:
                                - type: integer
                                - type: string
                                description: |-
                                  The maximum number of pods that can be unavailable during the update.
                                  Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
                                  Absolute number is calculated from percentage by rounding down.
                                  This can not be 0 if MaxSurge is 0.
                                  Defaults to 25%.
                                  Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods
                                  immediately when the rolling update starts. Once new pods are ready, old ReplicaSet
                                  can be scaled down further, followed by scaling up the new ReplicaSet, ensuring
                                  that the total number of pods available at all times during the update is at
                                  least 70% of desired pods.
                                x-kubernetes-int-or-string: true
                            type: object
                          type:
                            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
                        type: boolean
                      imagePullPolicy:
                        description: To indicate the image pull policy to be applied
                          to all the containers in the csi driver pods.
                        type: string
                      labels:
                        additionalProperties:
                          type: string
                        description: Pod's labels
                        type: object
                      priorityClassName:
                        description: Pod's user defined priority class name
                        type: string
                      privileged:
                        description: |-
                          To enable logrotation for csi pods,
                          Some platforms require controller plugin to run privileged,
                          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
                        format: int32
                        minimum: 1
                        type: integer
                      resources:
                        description: Resource requirements for controller plugin's containers
                        properties:
                          addons:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          attacher:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          liveness:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          logRotator:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          omapGenerator:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          plugin:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          provisioner:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          resizer:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          snapshotter:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                        type: object
                      serviceAccountName:
                        description: Service account name to be used for driver's pods
                        type: string
                      tolerations:
                        description: Pod's tolerations list
                        items:
                          description: |-
                            The pod this Toleration is attached to tolerates any taint that matches
                            the triple <key,value,effect> using the matching operator <operator>.
                          properties:
                            effect:
                              description: |-
                                Effect indicates the taint effect to match. Empty means match all taint effects.
                                When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
                              type: string
                            key:
                              description: |-
                                Key is the taint key that the toleration applies to. Empty means match all taint keys.
                                If the key is empty, operator must be Exists; this combination means to match all values and all keys.
                              type: string
                            operator:
                              description: |-
                                Operator represents a key's relationship to the value.
                                Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal.
                                Exists is equivalent to wildcard for value, so that a pod can
                                tolerate all taints of a particular category.
                                Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators).
                              type: string
                            tolerationSeconds:
                              description: |-
                                TolerationSeconds represents the period of time the toleration (which must be
                                of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
                                it is not set, which means tolerate the taint forever (do not evict). Zero and
                                negative values will be treated as 0 (evict immediately) by the system.
                              format: int64
                              type: integer
                            value:
                              description: |-
                                Value is the taint value the toleration matches to.
                                If the operator is Exists, the value should be empty, otherwise just a regular string.
                              type: string
                          type: object
                        type: array
                      volumes:
                        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.
                              properties:
                                mountPath:
                                  description: |-
                                    Path within the container at which the volume should be mounted.  Must
                                    not contain ':'.
                                  type: string
                                mountPropagation:
                                  description: |-
                                    mountPropagation determines how mounts are propagated from the host
                                    to container and the other way around.
                                    When not set, MountPropagationNone is used.
                                    This field is beta in 1.10.
                                    When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
                                    (which defaults to None).
                                  type: string
                                name:
                                  description: This must match the Name of a Volume.
                                  type: string
                                readOnly:
                                  description: |-
                                    Mounted read-only if true, read-write otherwise (false or unspecified).
                                    Defaults to false.
                                  type: boolean
                                recursiveReadOnly:
                                  description: |-
                                    RecursiveReadOnly specifies whether read-only mounts should be handled
                                    recursively.

                                    If ReadOnly is false, this field has no meaning and must be unspecified.

                                    If ReadOnly is true, and this field is set to Disabled, the mount is not made
                                    recursively read-only.  If this field is set to IfPossible, the mount is made
                                    recursively read-only, if it is supported by the container runtime.  If this
                                    field is set to Enabled, the mount is made recursively read-only if it is
                                    supported by the container runtime, otherwise the pod will not be started and
                                    an error will be generated to indicate the reason.

                                    If this field is set to IfPossible or Enabled, MountPropagation must be set to
                                    None (or be unspecified, which defaults to None).

                                    If this field is not specified, it is treated as an equivalent of Disabled.
                                  type: string
                                subPath:
                                  description: |-
                                    Path within the volume from which the container's volume should be mounted.
                                    Defaults to "" (volume's root).
                                  type: string
                                subPathExpr:
                                  description: |-
                                    Expanded path within the volume from which the container's volume should be mounted.
                                    Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
                                    Defaults to "" (volume's root).
                                    SubPathExpr and SubPath are mutually exclusive.
                                  type: string
                              required:
                              - mountPath
                              - name
                              type: object
                            volume:
                              description: Volume represents a named volume in a pod
                                that may be accessed by any container in the pod.
                              properties:
                                awsElasticBlockStore:
                                  description: |-
                                    awsElasticBlockStore represents an AWS Disk resource that is attached to a
                                    kubelet's host machine and then exposed to the pod.
                                    Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree
                                    awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type of the volume that you want to mount.
                                        Tip: Ensure that the filesystem type is supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                      type: string
                                    partition:
                                      description: |-
                                        partition is the partition in the volume that you want to mount.
                                        If omitted, the default is to mount by volume name.
                                        Examples: For volume /dev/sda1, you specify the partition as "1".
                                        Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
                                      format: int32
                                      type: integer
                                    readOnly:
                                      description: |-
                                        readOnly value true will force the readOnly setting in VolumeMounts.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                      type: boolean
                                    volumeID:
                                      description: |-
                                        volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                      type: string
                                  required:
                                  - volumeID
                                  type: object
                                azureDisk:
                                  description: |-
                                    azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
                                    Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type
                                    are redirected to the disk.csi.azure.com CSI driver.
                                  properties:
                                    cachingMode:
                                      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
                                      type: string
                                    diskURI:
                                      description: diskURI is the URI of data disk in
                                        the blob storage
                                      type: string
                                    fsType:
                                      default: ext4
                                      description: |-
                                        fsType is Filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        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'
                                      type: string
                                    readOnly:
                                      default: false
                                      description: |-
                                        readOnly Defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                  required:
                                  - diskName
                                  - diskURI
                                  type: object
                                azureFile:
                                  description: |-
                                    azureFile represents an Azure File Service mount on the host and bind mount to the pod.
                                    Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type
                                    are redirected to the file.csi.azure.com CSI driver.
                                  properties:
                                    readOnly:
                                      description: |-
                                        readOnly defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    secretName:
                                      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
                                      type: string
                                  required:
                                  - secretName
                                  - shareName
                                  type: object
                                cephfs:
                                  description: |-
                                    cephFS represents a Ceph FS mount on the host that shares a pod's lifetime.
                                    Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.
                                  properties:
                                    monitors:
                                      description: |-
                                        monitors is Required: Monitors is a collection of Ceph monitors
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      items:
                                        type: string
                                      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 /'
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      type: boolean
                                    secretFile:
                                      description: |-
                                        secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      type: string
                                    secretRef:
                                      description: |-
                                        secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    user:
                                      description: |-
                                        user is optional: User is the rados user name, default is admin
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      type: string
                                  required:
                                  - monitors
                                  type: object
                                cinder:
                                  description: |-
                                    cinder represents a cinder volume attached and mounted on kubelets host machine.
                                    Deprecated: Cinder is deprecated. All operations for the in-tree cinder type
                                    are redirected to the cinder.csi.openstack.org CSI driver.
                                    More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                        More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef is optional: points to a secret object containing parameters used to connect
                                        to OpenStack.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    volumeID:
                                      description: |-
                                        volumeID used to identify the volume in cinder.
                                        More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                      type: string
                                  required:
                                  - volumeID
                                  type: object
                                configMap:
                                  description: configMap represents a configMap that
                                    should populate this volume
                                  properties:
                                    defaultMode:
                                      description: |-
                                        defaultMode is optional: mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                        Defaults to 0644.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    items:
                                      description: |-
                                        items if unspecified, each key-value pair in the Data field of the referenced
                                        ConfigMap will be projected into the volume as a file whose name is the
                                        key and content is the value. If specified, the listed keys will be
                                        projected into the specified paths, and unlisted keys will not be
                                        present. If a key is specified which is not present in the ConfigMap,
                                        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.
                                        properties:
                                          key:
                                            description: key is the key to project.
                                            type: string
                                          mode:
                                            description: |-
                                              mode is Optional: mode bits used to set permissions on this file.
                                              Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                              YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                              If not specified, the volume defaultMode will be used.
                                              This might be in conflict with other options that affect the file
                                              mode, like fsGroup, and the result can be other mode bits set.
                                            format: int32
                                            type: integer
                                          path:
                                            description: |-
                                              path is the relative path of the file to map the key to.
                                              May not be an absolute path.
                                              May not contain the path element '..'.
                                              May not start with the string '..'.
                                            type: string
                                        required:
                                        - key
                                        - path
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        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
                                      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.
                                  properties:
                                    driver:
                                      description: |-
                                        driver is the name of the CSI driver that handles this volume.
                                        Consult with your admin for the correct name as registered in the cluster.
                                      type: string
                                    fsType:
                                      description: |-
                                        fsType to mount. Ex. "ext4", "xfs", "ntfs".
                                        If not provided, the empty value is passed to the associated CSI driver
                                        which will determine the default filesystem to apply.
                                      type: string
                                    nodePublishSecretRef:
                                      description: |-
                                        nodePublishSecretRef is a reference to the secret object containing
                                        sensitive information to pass to the CSI driver to complete the CSI
                                        NodePublishVolume and NodeUnpublishVolume calls.
                                        This field is optional, and  may be empty if no secret is required. If the
                                        secret object contains more than one secret, all secret references are passed.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    readOnly:
                                      description: |-
                                        readOnly specifies a read-only configuration for the volume.
                                        Defaults to false (read/write).
                                      type: boolean
                                    volumeAttributes:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        volumeAttributes stores driver-specific properties that are passed to the CSI
                                        driver. Consult your driver's documentation for supported values.
                                      type: object
                                  required:
                                  - driver
                                  type: object
                                downwardAPI:
                                  description: downwardAPI represents downward API about
                                    the pod that should populate this volume
                                  properties:
                                    defaultMode:
                                      description: |-
                                        Optional: mode bits to use on created files by default. Must be a
                                        Optional: mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                        Defaults to 0644.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    items:
                                      description: Items is a list of downward API volume
                                        file
                                      items:
                                        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.'
                                            properties:
                                              apiVersion:
                                                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.
                                                type: string
                                            required:
                                            - fieldPath
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          mode:
                                            description: |-
                                              Optional: mode bits used to set permissions on this file, must be an octal value
                                              between 0000 and 0777 or a decimal value between 0 and 511.
                                              YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                              If not specified, the volume defaultMode will be used.
                                              This might be in conflict with other options that affect the file
                                              mode, like fsGroup, and the result can be other mode bits set.
                                            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 ''..'''
                                            type: string
                                          resourceFieldRef:
                                            description: |-
                                              Selects a resource of the container: only resources limits and requests
                                              (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                            properties:
                                              containerName:
                                                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"
                                                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'
                                                type: string
                                            required:
                                            - resource
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        required:
                                        - path
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                emptyDir:
                                  description: |-
                                    emptyDir represents a temporary directory that shares a pod's lifetime.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                  properties:
                                    medium:
                                      description: |-
                                        medium represents what type of storage medium should back this directory.
                                        The default is "" which means to use the node's default medium.
                                        Must be an empty string (default) or Memory.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                      type: string
                                    sizeLimit:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      description: |-
                                        sizeLimit is the total amount of local storage required for this EmptyDir volume.
                                        The size limit is also applicable for memory medium.
                                        The maximum usage on memory medium EmptyDir would be the minimum value between
                                        the SizeLimit specified here and the sum of memory limits of all containers in a pod.
                                        The default is nil which means that the limit is undefined.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                  type: object
                                ephemeral:
                                  description: |-
                                    ephemeral represents a volume that is handled by a cluster storage driver.
                                    The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
                                    and deleted when the pod is removed.

                                    Use this if:
                                    a) the volume is only needed while the pod runs,
                                    b) features of normal volumes like restoring from snapshot or capacity
                                       tracking are needed,
                                    c) the storage driver is specified through a storage class, and
                                    d) the storage driver supports dynamic volume provisioning through
                                       a PersistentVolumeClaim (see EphemeralVolumeSource for more
                                       information on the connection between this volume type
                                       and PersistentVolumeClaim).

                                    Use PersistentVolumeClaim or one of the vendor-specific
                                    APIs for volumes that persist for longer than the lifecycle
                                    of an individual pod.

                                    Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
                                    be used that way - see the documentation of the driver for
                                    more information.

                                    A pod can use both types of ephemeral volumes and
                                    persistent volumes at the same time.
                                  properties:
                                    volumeClaimTemplate:
                                      description: |-
                                        Will be used to create a stand-alone PVC to provision the volume.
                                        The pod in which this EphemeralVolumeSource is embedded will be the
                                        owner of the PVC, i.e. the PVC will be deleted together with the
                                        pod.  The name of the PVC will be `<pod name>-<volume name>` where
                                        `<volume name>` is the name from the `PodSpec.Volumes` array
                                        entry. Pod validation will reject the pod if the concatenated name
                                        is not valid for a PVC (for example, too long).

                                        An existing PVC with that name that is not owned by the pod
                                        will *not* be used for the pod to avoid using an unrelated
                                        volume by mistake. Starting the pod is then blocked until
                                        the unrelated PVC is removed. If such a pre-created PVC is
                                        meant to be used by the pod, the PVC has to updated with an
                                        owner reference to the pod once the pod exists. Normally
                                        this should not be necessary, but it may be useful when
                                        manually reconstructing a broken cluster.

                                        This field is read-only and no changes will be made by Kubernetes
                                        to the PVC after it has been created.

                                        Required, must not be nil.
                                      properties:
                                        metadata:
                                          description: |-
                                            May contain labels and annotations that will be copied into the PVC
                                            when creating it. No other fields are allowed and will be rejected during
                                            validation.
                                          type: object
                                        spec:
                                          description: |-
                                            The specification for the PersistentVolumeClaim. The entire content is
                                            copied unchanged into the PVC that gets created from this
                                            template. The same fields as in a PersistentVolumeClaim
                                            are also valid here.
                                          properties:
                                            accessModes:
                                              description: |-
                                                accessModes contains the desired access modes the volume should have.
                                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            dataSource:
                                              description: |-
                                                dataSource field can be used to specify either:
                                                * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
                                                * An existing PVC (PersistentVolumeClaim)
                                                If the provisioner or an external controller can support the specified data source,
                                                it will create a new volume based on the contents of the specified data source.
                                                When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
                                                and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
                                                If the namespace is specified, then dataSourceRef will not be copied to dataSource.
                                              properties:
                                                apiGroup:
                                                  description: |-
                                                    APIGroup is the group for the resource being referenced.
                                                    If APIGroup is not specified, the specified Kind must be in the core API group.
                                                    For any other third-party types, APIGroup is required.
                                                  type: string
                                                kind:
                                                  description: Kind is the type of resource
                                                    being referenced
                                                  type: string
                                                name:
                                                  description: Name is the name of resource
                                                    being referenced
                                                  type: string
                                              required:
                                              - kind
                                              - name
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            dataSourceRef:
                                              description: |-
                                                dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
                                                volume is desired. This may be any object from a non-empty API group (non
                                                core object) or a PersistentVolumeClaim object.
                                                When this field is specified, volume binding will only succeed if the type of
                                                the specified object matches some installed volume populator or dynamic
                                                provisioner.
                                                This field will replace the functionality of the dataSource field and as such
                                                if both fields are non-empty, they must have the same value. For backwards
                                                compatibility, when namespace isn't specified in dataSourceRef,
                                                both fields (dataSource and dataSourceRef) will be set to the same
                                                value automatically if one of them is empty and the other is non-empty.
                                                When namespace is specified in dataSourceRef,
                                                dataSource isn't set to the same value and must be empty.
                                                There are three important differences between dataSource and dataSourceRef:
                                                * While dataSource only allows two specific types of objects, dataSourceRef
                                                  allows any non-core object, as well as PersistentVolumeClaim objects.
                                                * While dataSource ignores disallowed values (dropping them), dataSourceRef
                                                  preserves all values, and generates an error if a disallowed value is
                                                  specified.
                                                * While dataSource only allows local objects, dataSourceRef allows objects
                                                  in any namespaces.
                                                (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
                                                (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                              properties:
                                                apiGroup:
                                                  description: |-
                                                    APIGroup is the group for the resource being referenced.
                                                    If APIGroup is not specified, the specified Kind must be in the core API group.
                                                    For any other third-party types, APIGroup is required.
                                                  type: string
                                                kind:
                                                  description: Kind is the type of resource
                                                    being referenced
                                                  type: string
                                                name:
                                                  description: Name is the name of resource
                                                    being referenced
                                                  type: string
                                                namespace:
                                                  description: |-
                                                    Namespace is the namespace of resource being referenced
                                                    Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
                                                    (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                                  type: string
                                              required:
                                              - kind
                                              - name
                                              type: object
                                            resources:
                                              description: |-
                                                resources represents the minimum resources the volume should have.
                                                Users are allowed to specify resource requirements
                                                that are lower than previous value but must still be higher than capacity recorded in the
                                                status field of the claim.
                                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
                                              properties:
                                                limits:
                                                  additionalProperties:
                                                    anyOf:
                                                    - type: integer
                                                    - type: string
                                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                    x-kubernetes-int-or-string: true
                                                  description: |-
                                                    Limits describes the maximum amount of compute resources allowed.
                                                    More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                                  type: object
                                                requests:
                                                  additionalProperties:
                                                    anyOf:
                                                    - type: integer
                                                    - type: string
                                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                    x-kubernetes-int-or-string: true
                                                  description: |-
                                                    Requests describes the minimum amount of compute resources required.
                                                    If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                                    otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                                    More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                                  type: object
                                              type: object
                                            selector:
                                              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.
                                                  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.
                                                        type: string
                                                      operator:
                                                        description: |-
                                                          operator represents a key's relationship to a set of values.
                                                          Valid operators are In, NotIn, Exists and DoesNotExist.
                                                        type: string
                                                      values:
                                                        description: |-
                                                          values is an array of string values. If the operator is In or NotIn,
                                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                          the values array must be empty. This array is replaced during a strategic
                                                          merge patch.
                                                        items:
                                                          type: string
                                                        type: array
                                                        x-kubernetes-list-type: atomic
                                                    required:
                                                    - key
                                                    - operator
                                                    type: object
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                                matchLabels:
                                                  additionalProperties:
                                                    type: string
                                                  description: |-
                                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                    map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                    operator is "In", and the values array contains only "value". The requirements are ANDed.
                                                  type: object
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            storageClassName:
                                              description: |-
                                                storageClassName is the name of the StorageClass required by the claim.
                                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
                                              type: string
                                            volumeAttributesClassName:
                                              description: |-
                                                volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
                                                If specified, the CSI driver will create or update the volume with the attributes defined
                                                in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
                                                it can be changed after the claim is created. An empty string or nil value indicates that no
                                                VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
                                                this field can be reset to its previous value (including nil) to cancel the modification.
                                                If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
                                                set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
                                                exists.
                                                More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
                                              type: string
                                            volumeMode:
                                              description: |-
                                                volumeMode defines what type of volume is required by the claim.
                                                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.
                                              type: string
                                          type: object
                                      required:
                                      - 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.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                      type: string
                                    lun:
                                      description: 'lun is Optional: FC target lun number'
                                      format: int32
                                      type: integer
                                    readOnly:
                                      description: |-
                                        readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    targetWWNs:
                                      description: 'targetWWNs is Optional: FC target
                                        worldwide names (WWNs)'
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    wwids:
                                      description: |-
                                        wwids Optional: FC volume world wide identifiers (wwids)
                                        Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                flexVolume:
                                  description: |-
                                    flexVolume represents a generic volume resource that is
                                    provisioned/attached using an exec based plugin.
                                    Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead.
                                  properties:
                                    driver:
                                      description: driver is the name of the driver
                                        to use for this volume.
                                      type: string
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
                                      type: string
                                    options:
                                      additionalProperties:
                                        type: string
                                      description: 'options is Optional: this field
                                        holds extra command options if any.'
                                      type: object
                                    readOnly:
                                      description: |-
                                        readOnly is Optional: defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef is Optional: secretRef is reference to the secret object containing
                                        sensitive information to pass to the plugin scripts. This may be
                                        empty if no secret object is specified. If the secret object
                                        contains more than one secret, all secrets are passed to the plugin
                                        scripts.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  required:
                                  - driver
                                  type: object
                                flocker:
                                  description: |-
                                    flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running.
                                    Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported.
                                  properties:
                                    datasetName:
                                      description: |-
                                        datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker
                                        should be considered as deprecated
                                      type: string
                                    datasetUUID:
                                      description: datasetUUID is the UUID of the dataset.
                                        This is unique identifier of a Flocker dataset
                                      type: string
                                  type: object
                                gcePersistentDisk:
                                  description: |-
                                    gcePersistentDisk represents a GCE Disk resource that is attached to a
                                    kubelet's host machine and then exposed to the pod.
                                    Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree
                                    gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is filesystem type of the volume that you want to mount.
                                        Tip: Ensure that the filesystem type is supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                      type: string
                                    partition:
                                      description: |-
                                        partition is the partition in the volume that you want to mount.
                                        If omitted, the default is to mount by volume name.
                                        Examples: For volume /dev/sda1, you specify the partition as "1".
                                        Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                      format: int32
                                      type: integer
                                    pdName:
                                      description: |-
                                        pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the ReadOnly setting in VolumeMounts.
                                        Defaults to false.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                      type: boolean
                                  required:
                                  - pdName
                                  type: object
                                gitRepo:
                                  description: |-
                                    gitRepo represents a git repository at a particular revision.
                                    Deprecated: GitRepo is deprecated. To provision a container with a git repo, mount an
                                    EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
                                    into the Pod's container.
                                  properties:
                                    directory:
                                      description: |-
                                        directory is the target directory name.
                                        Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
                                        git repository.  Otherwise, if specified, the volume will contain the git repository in
                                        the subdirectory with the given name.
                                      type: string
                                    repository:
                                      description: repository is the URL
                                      type: string
                                    revision:
                                      description: revision is the commit hash for the
                                        specified revision.
                                      type: string
                                  required:
                                  - repository
                                  type: object
                                glusterfs:
                                  description: |-
                                    glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
                                    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.
                                      type: string
                                    path:
                                      description: |-
                                        path is the Glusterfs volume path.
                                        More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
                                        Defaults to false.
                                        More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                      type: boolean
                                  required:
                                  - endpoints
                                  - path
                                  type: object
                                hostPath:
                                  description: |-
                                    hostPath represents a pre-existing file or directory on the host
                                    machine that is directly exposed to the container. This is generally
                                    used for system agents or other privileged things that are allowed
                                    to see the host machine. Most containers will NOT need this.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                  properties:
                                    path:
                                      description: |-
                                        path of the directory on the host.
                                        If the path is a symlink, it will follow the link to the real path.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                      type: string
                                    type:
                                      description: |-
                                        type for HostPath Volume
                                        Defaults to ""
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                      type: string
                                  required:
                                  - path
                                  type: object
                                image:
                                  description: |-
                                    image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine.
                                    The volume is resolved at pod startup depending on which PullPolicy value is provided:

                                    - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
                                    - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
                                    - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.

                                    The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation.
                                    A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message.
                                    The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field.
                                    The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images.
                                    The volume will be mounted read-only (ro) and non-executable files (noexec).
                                    Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath) before 1.33.
                                    The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type.
                                  properties:
                                    pullPolicy:
                                      description: |-
                                        Policy for pulling OCI objects. Possible values are:
                                        Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
                                        Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
                                        IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.
                                        Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
                                      type: string
                                    reference:
                                      description: |-
                                        Required: Image or artifact reference to be used.
                                        Behaves in the same way as pod.spec.containers[*].image.
                                        Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets.
                                        More info: https://kubernetes.io/docs/concepts/containers/images
                                        This field is optional to allow higher level config management to default or override
                                        container images in workload controllers like Deployments and StatefulSets.
                                      type: string
                                  type: object
                                iscsi:
                                  description: |-
                                    iscsi represents an ISCSI Disk resource that is attached to a
                                    kubelet's host machine and then exposed to the pod.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi
                                  properties:
                                    chapAuthDiscovery:
                                      description: chapAuthDiscovery defines whether
                                        support iSCSI Discovery CHAP authentication
                                      type: boolean
                                    chapAuthSession:
                                      description: chapAuthSession defines whether support
                                        iSCSI Session CHAP authentication
                                      type: boolean
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type of the volume that you want to mount.
                                        Tip: Ensure that the filesystem type is supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
                                      type: string
                                    initiatorName:
                                      description: |-
                                        initiatorName is the custom iSCSI Initiator Name.
                                        If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
                                        <target portal>:<volume name> will be created for the connection.
                                      type: string
                                    iqn:
                                      description: iqn is the target iSCSI Qualified
                                        Name.
                                      type: string
                                    iscsiInterface:
                                      default: default
                                      description: |-
                                        iscsiInterface is the interface Name that uses an iSCSI transport.
                                        Defaults to 'default' (tcp).
                                      type: string
                                    lun:
                                      description: lun represents iSCSI Target Lun number.
                                      format: int32
                                      type: integer
                                    portals:
                                      description: |-
                                        portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
                                        is other than default (typically TCP ports 860 and 3260).
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    readOnly:
                                      description: |-
                                        readOnly here will force the ReadOnly setting in VolumeMounts.
                                        Defaults to false.
                                      type: boolean
                                    secretRef:
                                      description: secretRef is the CHAP Secret for
                                        iSCSI target and initiator authentication
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    targetPortal:
                                      description: |-
                                        targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
                                        is other than default (typically TCP ports 860 and 3260).
                                      type: string
                                  required:
                                  - iqn
                                  - lun
                                  - targetPortal
                                  type: object
                                name:
                                  description: |-
                                    name of the volume.
                                    Must be a DNS_LABEL and unique within the pod.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                nfs:
                                  description: |-
                                    nfs represents an NFS mount on the host that shares a pod's lifetime
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                  properties:
                                    path:
                                      description: |-
                                        path that is exported by the NFS server.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the NFS export to be mounted with read-only permissions.
                                        Defaults to false.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                      type: boolean
                                    server:
                                      description: |-
                                        server is the hostname or IP address of the NFS server.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                      type: string
                                  required:
                                  - path
                                  - server
                                  type: object
                                persistentVolumeClaim:
                                  description: |-
                                    persistentVolumeClaimVolumeSource represents a reference to a
                                    PersistentVolumeClaim in the same namespace.
                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                  properties:
                                    claimName:
                                      description: |-
                                        claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
                                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly Will force the ReadOnly setting in VolumeMounts.
                                        Default false.
                                      type: boolean
                                  required:
                                  - claimName
                                  type: object
                                photonPersistentDisk:
                                  description: |-
                                    photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine.
                                    Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        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
                                      type: string
                                  required:
                                  - pdID
                                  type: object
                                portworxVolume:
                                  description: |-
                                    portworxVolume represents a portworx volume attached and mounted on kubelets host machine.
                                    Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type
                                    are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate
                                    is on.
                                  properties:
                                    fsType:
                                      description: |-
                                        fSType represents the filesystem type to mount
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    volumeID:
                                      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
                                  properties:
                                    defaultMode:
                                      description: |-
                                        defaultMode are the mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    sources:
                                      description: |-
                                        sources is the list of volume projections. Each entry in this list
                                        handles one source.
                                      items:
                                        description: |-
                                          Projection that may be projected along with other supported volume types.
                                          Exactly one of these fields must be set.
                                        properties:
                                          clusterTrustBundle:
                                            description: |-
                                              ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
                                              of ClusterTrustBundle objects in an auto-updating file.

                                              Alpha, gated by the ClusterTrustBundleProjection feature gate.

                                              ClusterTrustBundle objects can either be selected by name, or by the
                                              combination of signer name and a label selector.

                                              Kubelet performs aggressive normalization of the PEM contents written
                                              into the pod filesystem.  Esoteric PEM features such as inter-block
                                              comments and block headers are stripped.  Certificates are deduplicated.
                                              The ordering of certificates within the file is arbitrary, and Kubelet
                                              may change the order over time.
                                            properties:
                                              labelSelector:
                                                description: |-
                                                  Select all ClusterTrustBundles that match this label selector.  Only has
                                                  effect if signerName is set.  Mutually-exclusive with name.  If unset,
                                                  interpreted as "match nothing".  If set but empty, interpreted as "match
                                                  everything".
                                                properties:
                                                  matchExpressions:
                                                    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.
                                                          type: string
                                                        operator:
                                                          description: |-
                                                            operator represents a key's relationship to a set of values.
                                                            Valid operators are In, NotIn, Exists and DoesNotExist.
                                                          type: string
                                                        values:
                                                          description: |-
                                                            values is an array of string values. If the operator is In or NotIn,
                                                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                            the values array must be empty. This array is replaced during a strategic
                                                            merge patch.
                                                          items:
                                                            type: string
                                                          type: array
                                                          x-kubernetes-list-type: atomic
                                                      required:
                                                      - key
                                                      - operator
                                                      type: object
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                  matchLabels:
                                                    additionalProperties:
                                                      type: string
                                                    description: |-
                                                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                                                    type: object
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              name:
                                                description: |-
                                                  Select a single ClusterTrustBundle by object name.  Mutually-exclusive
                                                  with signerName and labelSelector.
                                                type: string
                                              optional:
                                                description: |-
                                                  If true, don't block pod startup if the referenced ClusterTrustBundle(s)
                                                  aren't available.  If using name, then the named ClusterTrustBundle is
                                                  allowed not to exist.  If using signerName, then the combination of
                                                  signerName and labelSelector is allowed to match zero
                                                  ClusterTrustBundles.
                                                type: boolean
                                              path:
                                                description: Relative path from the
                                                  volume root to write the bundle.
                                                type: string
                                              signerName:
                                                description: |-
                                                  Select all ClusterTrustBundles that match this signer name.
                                                  Mutually-exclusive with name.  The contents of all selected
                                                  ClusterTrustBundles will be unified and deduplicated.
                                                type: string
                                            required:
                                            - path
                                            type: object
                                          configMap:
                                            description: configMap information about
                                              the configMap data to project
                                            properties:
                                              items:
                                                description: |-
                                                  items if unspecified, each key-value pair in the Data field of the referenced
                                                  ConfigMap will be projected into the volume as a file whose name is the
                                                  key and content is the value. If specified, the listed keys will be
                                                  projected into the specified paths, and unlisted keys will not be
                                                  present. If a key is specified which is not present in the ConfigMap,
                                                  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.
                                                  properties:
                                                    key:
                                                      description: key is the key to
                                                        project.
                                                      type: string
                                                    mode:
                                                      description: |-
                                                        mode is Optional: mode bits used to set permissions on this file.
                                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                        If not specified, the volume defaultMode will be used.
                                                        This might be in conflict with other options that affect the file
                                                        mode, like fsGroup, and the result can be other mode bits set.
                                                      format: int32
                                                      type: integer
                                                    path:
                                                      description: |-
                                                        path is the relative path of the file to map the key to.
                                                        May not be an absolute path.
                                                        May not contain the path element '..'.
                                                        May not start with the string '..'.
                                                      type: string
                                                  required:
                                                  - key
                                                  - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  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
                                                type: boolean
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          downwardAPI:
                                            description: downwardAPI information about
                                              the downwardAPI data to project
                                            properties:
                                              items:
                                                description: Items is a list of DownwardAPIVolume
                                                  file
                                                items:
                                                  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.'
                                                      properties:
                                                        apiVersion:
                                                          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.
                                                          type: string
                                                      required:
                                                      - fieldPath
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                    mode:
                                                      description: |-
                                                        Optional: mode bits used to set permissions on this file, must be an octal value
                                                        between 0000 and 0777 or a decimal value between 0 and 511.
                                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                        If not specified, the volume defaultMode will be used.
                                                        This might be in conflict with other options that affect the file
                                                        mode, like fsGroup, and the result can be other mode bits set.
                                                      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 ''..'''
                                                      type: string
                                                    resourceFieldRef:
                                                      description: |-
                                                        Selects a resource of the container: only resources limits and requests
                                                        (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                                      properties:
                                                        containerName:
                                                          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"
                                                          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'
                                                          type: string
                                                      required:
                                                      - resource
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                  required:
                                                  - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            type: object
                                          podCertificate:
                                            description: |-
                                              Projects an auto-rotating credential bundle (private key and certificate
                                              chain) that the pod can use either as a TLS client or server.

                                              Kubelet generates a private key and uses it to send a
                                              PodCertificateRequest to the named signer.  Once the signer approves the
                                              request and issues a certificate chain, Kubelet writes the key and
                                              certificate chain to the pod filesystem.  The pod does not start until
                                              certificates have been issued for each podCertificate projected volume
                                              source in its spec.

                                              Kubelet will begin trying to rotate the certificate at the time indicated
                                              by the signer using the PodCertificateRequest.Status.BeginRefreshAt
                                              timestamp.

                                              Kubelet can write a single file, indicated by the credentialBundlePath
                                              field, or separate files, indicated by the keyPath and
                                              certificateChainPath fields.

                                              The credential bundle is a single file in PEM format.  The first PEM
                                              entry is the private key (in PKCS#8 format), and the remaining PEM
                                              entries are the certificate chain issued by the signer (typically,
                                              signers will return their certificate chain in leaf-to-root order).

                                              Prefer using the credential bundle format, since your application code
                                              can read it atomically.  If you use keyPath and certificateChainPath,
                                              your application must make two separate file reads. If these coincide
                                              with a certificate rotation, it is possible that the private key and leaf
                                              certificate you read may not correspond to each other.  Your application
                                              will need to check for this condition, and re-read until they are
                                              consistent.

                                              The named signer controls chooses the format of the certificate it
                                              issues; consult the signer implementation's documentation to learn how to
                                              use the certificates it issues.
                                            properties:
                                              certificateChainPath:
                                                description: |-
                                                  Write the certificate chain at this path in the projected volume.

                                                  Most applications should use credentialBundlePath.  When using keyPath
                                                  and certificateChainPath, your application needs to check that the key
                                                  and leaf certificate are consistent, because it is possible to read the
                                                  files mid-rotation.
                                                type: string
                                              credentialBundlePath:
                                                description: |-
                                                  Write the credential bundle at this path in the projected volume.

                                                  The credential bundle is a single file that contains multiple PEM blocks.
                                                  The first PEM block is a PRIVATE KEY block, containing a PKCS#8 private
                                                  key.

                                                  The remaining blocks are CERTIFICATE blocks, containing the issued
                                                  certificate chain from the signer (leaf and any intermediates).

                                                  Using credentialBundlePath lets your Pod's application code make a single
                                                  atomic read that retrieves a consistent key and certificate chain.  If you
                                                  project them to separate files, your application code will need to
                                                  additionally check that the leaf certificate was issued to the key.
                                                type: string
                                              keyPath:
                                                description: |-
                                                  Write the key at this path in the projected volume.

                                                  Most applications should use credentialBundlePath.  When using keyPath
                                                  and certificateChainPath, your application needs to check that the key
                                                  and leaf certificate are consistent, because it is possible to read the
                                                  files mid-rotation.
                                                type: string
                                              keyType:
                                                description: |-
                                                  The type of keypair Kubelet will generate for the pod.

                                                  Valid values are "RSA3072", "RSA4096", "ECDSAP256", "ECDSAP384",
                                                  "ECDSAP521", and "ED25519".
                                                type: string
                                              maxExpirationSeconds:
                                                description: |-
                                                  maxExpirationSeconds is the maximum lifetime permitted for the
                                                  certificate.

                                                  Kubelet copies this value verbatim into the PodCertificateRequests it
                                                  generates for this projection.

                                                  If omitted, kube-apiserver will set it to 86400(24 hours). kube-apiserver
                                                  will reject values shorter than 3600 (1 hour).  The maximum allowable
                                                  value is 7862400 (91 days).

                                                  The signer implementation is then free to issue a certificate with any
                                                  lifetime *shorter* than MaxExpirationSeconds, but no shorter than 3600
                                                  seconds (1 hour).  This constraint is enforced by kube-apiserver.
                                                  `kubernetes.io` signers will never issue certificates with a lifetime
                                                  longer than 24 hours.
                                                format: int32
                                                type: integer
                                              signerName:
                                                description: Kubelet's generated CSRs
                                                  will be addressed to this signer.
                                                type: string
                                              userAnnotations:
                                                additionalProperties:
                                                  type: string
                                                description: |-
                                                  userAnnotations allow pod authors to pass additional information to
                                                  the signer implementation.  Kubernetes does not restrict or validate this
                                                  metadata in any way.

                                                  These values are copied verbatim into the `spec.unverifiedUserAnnotations` field of
                                                  the PodCertificateRequest objects that Kubelet creates.

                                                  Entries are subject to the same validation as object metadata annotations,
                                                  with the addition that all keys must be domain-prefixed. No restrictions
                                                  are placed on values, except an overall size limitation on the entire field.

                                                  Signers should document the keys and values they support. Signers should
                                                  deny requests that contain keys they do not recognize.
                                                type: object
                                            required:
                                            - keyType
                                            - signerName
                                            type: object
                                          secret:
                                            description: secret information about the
                                              secret data to project
                                            properties:
                                              items:
                                                description: |-
                                                  items if unspecified, each key-value pair in the Data field of the referenced
                                                  Secret will be projected into the volume as a file whose name is the
                                                  key and content is the value. If specified, the listed keys will be
                                                  projected into the specified paths, and unlisted keys will not be
                                                  present. If a key is specified which is not present in the Secret,
                                                  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.
                                                  properties:
                                                    key:
                                                      description: key is the key to
                                                        project.
                                                      type: string
                                                    mode:
                                                      description: |-
                                                        mode is Optional: mode bits used to set permissions on this file.
                                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                        If not specified, the volume defaultMode will be used.
                                                        This might be in conflict with other options that affect the file
                                                        mode, like fsGroup, and the result can be other mode bits set.
                                                      format: int32
                                                      type: integer
                                                    path:
                                                      description: |-
                                                        path is the relative path of the file to map the key to.
                                                        May not be an absolute path.
                                                        May not contain the path element '..'.
                                                        May not start with the string '..'.
                                                      type: string
                                                  required:
                                                  - key
                                                  - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  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
                                                type: boolean
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          serviceAccountToken:
                                            description: serviceAccountToken is information
                                              about the serviceAccountToken data to
                                              project
                                            properties:
                                              audience:
                                                description: |-
                                                  audience is the intended audience of the token. A recipient of a token
                                                  must identify itself with an identifier specified in the audience of the
                                                  token, and otherwise should reject the token. The audience defaults to the
                                                  identifier of the apiserver.
                                                type: string
                                              expirationSeconds:
                                                description: |-
                                                  expirationSeconds is the requested duration of validity of the service
                                                  account token. As the token approaches expiration, the kubelet volume
                                                  plugin will proactively rotate the service account token. The kubelet will
                                                  start trying to rotate the token if the token is older than 80 percent of
                                                  its time to live or if the token is older than 24 hours.Defaults to 1 hour
                                                  and must be at least 10 minutes.
                                                format: int64
                                                type: integer
                                              path:
                                                description: |-
                                                  path is the path relative to the mount point of the file to project the
                                                  token into.
                                                type: string
                                            required:
                                            - path
                                            type: object
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                quobyte:
                                  description: |-
                                    quobyte represents a Quobyte mount on the host that shares a pod's lifetime.
                                    Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.
                                  properties:
                                    group:
                                      description: |-
                                        group to map volume access to
                                        Default is no group
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the Quobyte volume to be mounted with read-only permissions.
                                        Defaults to false.
                                      type: boolean
                                    registry:
                                      description: |-
                                        registry represents a single or multiple Quobyte Registry services
                                        specified as a string as host:port pair (multiple entries are separated with commas)
                                        which acts as the central registry for volumes
                                      type: string
                                    tenant:
                                      description: |-
                                        tenant owning the given Quobyte volume in the Backend
                                        Used with dynamically provisioned Quobyte volumes, value is set by the plugin
                                      type: string
                                    user:
                                      description: |-
                                        user to map volume access to
                                        Defaults to serivceaccount user
                                      type: string
                                    volume:
                                      description: volume is a string that references
                                        an already created Quobyte volume by name.
                                      type: string
                                  required:
                                  - registry
                                  - volume
                                  type: object
                                rbd:
                                  description: |-
                                    rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
                                    Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type of the volume that you want to mount.
                                        Tip: Ensure that the filesystem type is supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
                                      type: string
                                    image:
                                      description: |-
                                        image is the rados image name.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: string
                                    keyring:
                                      default: /etc/ceph/keyring
                                      description: |-
                                        keyring is the path to key ring for RBDUser.
                                        Default is /etc/ceph/keyring.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: string
                                    monitors:
                                      description: |-
                                        monitors is a collection of Ceph monitors.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    pool:
                                      default: rbd
                                      description: |-
                                        pool is the rados pool name.
                                        Default is rbd.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the ReadOnly setting in VolumeMounts.
                                        Defaults to false.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef is name of the authentication secret for RBDUser. If provided
                                        overrides keyring.
                                        Default is nil.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    user:
                                      default: admin
                                      description: |-
                                        user is the rados user name.
                                        Default is admin.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: string
                                  required:
                                  - image
                                  - monitors
                                  type: object
                                scaleIO:
                                  description: |-
                                    scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
                                    Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.
                                  properties:
                                    fsType:
                                      default: xfs
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs", "ntfs".
                                        Default is "xfs".
                                      type: string
                                    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.
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly Defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef references to the secret for ScaleIO user and other
                                        sensitive information. If this is not provided, Login operation will fail.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    sslEnabled:
                                      description: sslEnabled Flag enable/disable SSL
                                        communication with Gateway, default false
                                      type: boolean
                                    storageMode:
                                      default: ThinProvisioned
                                      description: |-
                                        storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
                                        Default is ThinProvisioned.
                                      type: string
                                    storagePool:
                                      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.
                                      type: string
                                    volumeName:
                                      description: |-
                                        volumeName is the name of a volume already created in the ScaleIO system
                                        that is associated with this volume source.
                                      type: string
                                  required:
                                  - gateway
                                  - secretRef
                                  - system
                                  type: object
                                secret:
                                  description: |-
                                    secret represents a secret that should populate this volume.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                                  properties:
                                    defaultMode:
                                      description: |-
                                        defaultMode is Optional: mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values
                                        for mode bits. Defaults to 0644.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    items:
                                      description: |-
                                        items If unspecified, each key-value pair in the Data field of the referenced
                                        Secret will be projected into the volume as a file whose name is the
                                        key and content is the value. If specified, the listed keys will be
                                        projected into the specified paths, and unlisted keys will not be
                                        present. If a key is specified which is not present in the Secret,
                                        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.
                                        properties:
                                          key:
                                            description: key is the key to project.
                                            type: string
                                          mode:
                                            description: |-
                                              mode is Optional: mode bits used to set permissions on this file.
                                              Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                              YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                              If not specified, the volume defaultMode will be used.
                                              This might be in conflict with other options that affect the file
                                              mode, like fsGroup, and the result can be other mode bits set.
                                            format: int32
                                            type: integer
                                          path:
                                            description: |-
                                              path is the relative path of the file to map the key to.
                                              May not be an absolute path.
                                              May not contain the path element '..'.
                                              May not start with the string '..'.
                                            type: string
                                        required:
                                        - key
                                        - path
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    optional:
                                      description: optional field specify whether the
                                        Secret or its keys must be defined
                                      type: boolean
                                    secretName:
                                      description: |-
                                        secretName is the name of the secret in the pod's namespace to use.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                                      type: string
                                  type: object
                                storageos:
                                  description: |-
                                    storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
                                    Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef specifies the secret to use for obtaining the StorageOS API
                                        credentials.  If not specified, default values will be attempted.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    volumeName:
                                      description: |-
                                        volumeName is the human-readable name of the StorageOS volume.  Volume
                                        names are only unique within a namespace.
                                      type: string
                                    volumeNamespace:
                                      description: |-
                                        volumeNamespace specifies the scope of the volume within StorageOS.  If no
                                        namespace is specified then the Pod's namespace will be used.  This allows the
                                        Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
                                        Set VolumeName to any name to override the default behaviour.
                                        Set to "default" if you are not using namespaces within StorageOS.
                                        Namespaces that do not pre-exist within StorageOS will be created.
                                      type: string
                                  type: object
                                vsphereVolume:
                                  description: |-
                                    vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine.
                                    Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type
                                    are redirected to the csi.vsphere.vmware.com CSI driver.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        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.
                                      type: string
                                    storagePolicyName:
                                      description: storagePolicyName is the storage
                                        Policy Based Management (SPBM) profile name.
                                      type: string
                                    volumePath:
                                      description: volumePath is the path that identifies
                                        vSphere volume vmdk
                                      type: string
                                  required:
                                  - volumePath
                                  type: object
                              required:
                              - name
                              type: object
                          type: object
                        type: array
                    type: object
                  deployCsiAddons:
                    description: a list of additional sidecars?
                    type: boolean
                  enableFencing:
                    description: |-
                      Set to true to enable fencing for the driver.
                      Fencing is a feature that allows the driver to fence a node when it is tainted with node.kubernetes.io/out-of-service.
                    type: boolean
                  enableMetadata:
                    description: |-
                      Set to true to enable adding volume metadata on the CephFS subvolumes and RBD images.
                      Not all users might be interested in getting volume/snapshot details as metadata on CephFS subvolume and RBD images.
                      Hence enable metadata is false by default.
                    type: boolean
                  encryption:
                    description: Driver's encryption settings
                    properties:
                      configMapName:
                        description: |-
                          LocalObjectReference contains enough information to let you locate the
                          referenced object inside the same namespace.
                        properties:
                          name:
                            default: ""
                            description: |-
                              Name of the referent.
                              This field is effectively required, but due to backwards compatibility is
                              allowed to be empty. Instances of this type with an empty value here are
                              almost certainly wrong.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            type: string
                        type: object
                        x-kubernetes-map-type: atomic
                        x-kubernetes-validations:
                        - message: '''.name'' cannot be empty'
                          rule: self.name != ""
                    required:
                    - configMapName
                    type: object
                  fsGroupPolicy:
                    description: |-
                      Policy for modifying a volume's ownership or permissions when the PVC is being mounted.
                      supported values are documented at https://kubernetes-csi.github.io/docs/support-fsgroup.html
                    type: string
                  fuseMountOptions:
                    additionalProperties:
                      type: string
                    description: Set mount options to use when using the Fuse client
                    type: object
                  generateOMapInfo:
                    description: |-
                      OMAP generator will generate the omap mapping between the PV name and the RBD image.
                      Need to be enabled when we are using rbd mirroring feature.
                      By default OMAP generator sidecar is not deployed with Csi controller plugin pod, to enable
                      it set it to true.
                    type: boolean
                  grpcTimeout:
                    description: Set the gRPC timeout for gRPC call issued by the driver
                      components
                    minimum: 0
                    type: integer
                  imageSet:
                    description: |-
                      A reference to a ConfigMap resource holding image overwrite for deployed
                      containers
                    properties:
                      name:
                        default: ""
                        description: |-
                          Name of the referent.
                          This field is effectively required, but due to backwards compatibility is
                          allowed to be empty. Instances of this type with an empty value here are
                          almost certainly wrong.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                    x-kubernetes-validations:
                    - message: '''.name'' cannot be empty'
                      rule: self.name != ""
                  kernelMountOptions:
                    additionalProperties:
                      type: string
                    description: |-
                      Set mount options to use https://docs.ceph.com/en/latest/man/8/mount.ceph/#options
                      Set to "ms_mode=secure" when connections.encrypted is enabled in Ceph
                    type: object
                  leaderElection:
                    description: Leader election setting
                    properties:
                      leaseDuration:
                        description: |-
                          Duration in seconds that non-leader candidates will wait to force acquire leadership.
                          Default to 137 seconds.
                        minimum: 0
                        type: integer
                      renewDeadline:
                        description: |-
                          Deadline in seconds that the acting leader will retry refreshing leadership before giving up.
                          Defaults to 107 seconds.
                        minimum: 0
                        type: integer
                      retryPeriod:
                        description: |-
                          Retry Period in seconds the LeaderElector clients should wait between tries of actions.
                          Defaults to 26 seconds.
                        minimum: 0
                        type: integer
                    type: object
                  liveness:
                    description: |-
                      Liveness metrics configuration.
                      disabled by default.
                    properties:
                      metricsPort:
                        description: Port to expose liveness metrics
                        maximum: 65535
                        minimum: 1024
                        type: integer
                    required:
                    - metricsPort
                    type: object
                  log:
                    description: Logging configuration for driver's pods
                    properties:
                      rotation:
                        description: log rotation for csi pods
                        properties:
                          logHostPath:
                            description: |-
                              LogHostPath is the prefix directory path for the csi log files
                              Default to /var/lib/cephcsi
                            type: string
                          maxFiles:
                            description: |-
                              MaxFiles is the number of logrtoate files
                              Default to 7
                            type: integer
                          maxLogSize:
                            anyOf:
                            - type: integer
                            - type: string
                            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.
                            enum:
                            - hourly
                            - daily
                            - weekly
                            - monthly
                            type: string
                        type: object
                        x-kubernetes-validations:
                        - message: Either maxLogSize or periodicity must be set
                          rule: (has(self.maxLogSize)) || (has(self.periodicity))
                      verbosity:
                        description: |-
                          Log verbosity level for driver pods,
                          Supported values from 0 to 5. 0 for general useful logs (the default), 5 for trace level verbosity.
                          Default to 0
                        maximum: 5
                        minimum: 0
                        type: integer
                    type: object
                  nodePlugin:
                    description: Driver's plugin configuration
                    properties:
                      affinity:
                        description: Pod's affinity settings
                        properties:
                          nodeAffinity:
                            description: Describes node affinity scheduling rules for
                              the pod.
                            properties:
                              preferredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  The scheduler will prefer to schedule pods to nodes that satisfy
                                  the affinity expressions specified by this field, but it may choose
                                  a node that violates one or more of the expressions. The node that is
                                  most preferred is the one with the greatest sum of weights, i.e.
                                  for each node that meets all of the scheduling requirements (resource
                                  request, requiredDuringScheduling affinity expressions, etc.),
                                  compute a sum by iterating through the elements of this field and adding
                                  "weight" to the sum if the node matches the corresponding matchExpressions; the
                                  node(s) with the highest sum are the most preferred.
                                items:
                                  description: |-
                                    An empty preferred scheduling term matches all objects with implicit weight 0
                                    (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.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  Represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: |-
                                                  An array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will be interpreted as an integer.
                                                  This array is replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchFields:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  Represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: |-
                                                  An array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will be interpreted as an integer.
                                                  This array is replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    weight:
                                      description: Weight associated with matching the
                                        corresponding nodeSelectorTerm, in the range
                                        1-100.
                                      format: int32
                                      type: integer
                                  required:
                                  - preference
                                  - weight
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              requiredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  If the affinity requirements specified by this field are not met at
                                  scheduling time, the pod will not be scheduled onto the node.
                                  If the affinity requirements specified by this field cease to be met
                                  at some point during pod execution (e.g. due to an update), the system
                                  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.
                                    items:
                                      description: |-
                                        A null or empty node selector term matches no objects. The requirements of
                                        them are ANDed.
                                        The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  Represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: |-
                                                  An array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will be interpreted as an integer.
                                                  This array is replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchFields:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  Represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: |-
                                                  An array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will be interpreted as an integer.
                                                  This array is replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    type: array
                                    x-kubernetes-list-type: atomic
                                required:
                                - nodeSelectorTerms
                                type: object
                                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)).
                            properties:
                              preferredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  The scheduler will prefer to schedule pods to nodes that satisfy
                                  the affinity expressions specified by this field, but it may choose
                                  a node that violates one or more of the expressions. The node that is
                                  most preferred is the one with the greatest sum of weights, i.e.
                                  for each node that meets all of the scheduling requirements (resource
                                  request, requiredDuringScheduling affinity expressions, etc.),
                                  compute a sum by iterating through the elements of this field and adding
                                  "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)
                                  properties:
                                    podAffinityTerm:
                                      description: Required. A pod affinity term, associated
                                        with the corresponding weight.
                                      properties:
                                        labelSelector:
                                          description: |-
                                            A label query over a set of resources, in this case pods.
                                            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.
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        matchLabelKeys:
                                          description: |-
                                            MatchLabelKeys is a set of pod label keys to select which pods will
                                            be taken into consideration. The keys are used to lookup values from the
                                            incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                            to select the group of existing pods which pods will be taken into consideration
                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                            pod labels will be ignored. The default value is empty.
                                            The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                            Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        mismatchLabelKeys:
                                          description: |-
                                            MismatchLabelKeys is a set of pod label keys to select which pods will
                                            be taken into consideration. The keys are used to lookup values from the
                                            incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                            to select the group of existing pods which pods will be taken into consideration
                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                            pod labels will be ignored. The default value is empty.
                                            The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                            Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        namespaceSelector:
                                          description: |-
                                            A label query over the set of namespaces that the term applies to.
                                            The term is applied to the union of the namespaces selected by this field
                                            and the ones listed in the namespaces field.
                                            null selector and null or empty namespaces list means "this pod's namespace".
                                            An empty selector ({}) matches all namespaces.
                                          properties:
                                            matchExpressions:
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        namespaces:
                                          description: |-
                                            namespaces specifies a static list of namespace names that the term applies to.
                                            The term is applied to the union of the namespaces listed in this field
                                            and the ones selected by namespaceSelector.
                                            null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        topologyKey:
                                          description: |-
                                            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                            the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                            whose value of the label with key topologyKey matches that of any node on which any of the
                                            selected pods is running.
                                            Empty topologyKey is not allowed.
                                          type: string
                                      required:
                                      - topologyKey
                                      type: object
                                    weight:
                                      description: |-
                                        weight associated with matching the corresponding podAffinityTerm,
                                        in the range 1-100.
                                      format: int32
                                      type: integer
                                  required:
                                  - podAffinityTerm
                                  - weight
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              requiredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  If the affinity requirements specified by this field are not met at
                                  scheduling time, the pod will not be scheduled onto the node.
                                  If the affinity requirements specified by this field cease to be met
                                  at some point during pod execution (e.g. due to a pod label update), the
                                  system may or may not try to eventually evict the pod from its node.
                                  When there are multiple elements, the lists of nodes corresponding to each
                                  podAffinityTerm are intersected, i.e. all terms must be satisfied.
                                items:
                                  description: |-
                                    Defines a set of pods (namely those matching the labelSelector
                                    relative to the given namespace(s)) that this pod should be
                                    co-located (affinity) or not co-located (anti-affinity) with,
                                    where co-located is defined as running on a node whose value of
                                    the label with key <topologyKey> matches that of any node on which
                                    a pod of the set of pods is running
                                  properties:
                                    labelSelector:
                                      description: |-
                                        A label query over a set of resources, in this case pods.
                                        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.
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      description: |-
                                        MatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      description: |-
                                        MismatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      description: |-
                                        A label query over the set of namespaces that the term applies to.
                                        The term is applied to the union of the namespaces selected by this field
                                        and the ones listed in the namespaces field.
                                        null selector and null or empty namespaces list means "this pod's namespace".
                                        An empty selector ({}) matches all namespaces.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      description: |-
                                        namespaces specifies a static list of namespace names that the term applies to.
                                        The term is applied to the union of the namespaces listed in this field
                                        and the ones selected by namespaceSelector.
                                        null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      description: |-
                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                        whose value of the label with key topologyKey matches that of any node on which any of the
                                        selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                type: array
                                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)).
                            properties:
                              preferredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  The scheduler will prefer to schedule pods to nodes that satisfy
                                  the anti-affinity expressions specified by this field, but it may choose
                                  a node that violates one or more of the expressions. The node that is
                                  most preferred is the one with the greatest sum of weights, i.e.
                                  for each node that meets all of the scheduling requirements (resource
                                  request, requiredDuringScheduling anti-affinity expressions, etc.),
                                  compute a sum by iterating through the elements of this field and subtracting
                                  "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)
                                  properties:
                                    podAffinityTerm:
                                      description: Required. A pod affinity term, associated
                                        with the corresponding weight.
                                      properties:
                                        labelSelector:
                                          description: |-
                                            A label query over a set of resources, in this case pods.
                                            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.
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        matchLabelKeys:
                                          description: |-
                                            MatchLabelKeys is a set of pod label keys to select which pods will
                                            be taken into consideration. The keys are used to lookup values from the
                                            incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                            to select the group of existing pods which pods will be taken into consideration
                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                            pod labels will be ignored. The default value is empty.
                                            The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                            Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        mismatchLabelKeys:
                                          description: |-
                                            MismatchLabelKeys is a set of pod label keys to select which pods will
                                            be taken into consideration. The keys are used to lookup values from the
                                            incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                            to select the group of existing pods which pods will be taken into consideration
                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                            pod labels will be ignored. The default value is empty.
                                            The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                            Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        namespaceSelector:
                                          description: |-
                                            A label query over the set of namespaces that the term applies to.
                                            The term is applied to the union of the namespaces selected by this field
                                            and the ones listed in the namespaces field.
                                            null selector and null or empty namespaces list means "this pod's namespace".
                                            An empty selector ({}) matches all namespaces.
                                          properties:
                                            matchExpressions:
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        namespaces:
                                          description: |-
                                            namespaces specifies a static list of namespace names that the term applies to.
                                            The term is applied to the union of the namespaces listed in this field
                                            and the ones selected by namespaceSelector.
                                            null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        topologyKey:
                                          description: |-
                                            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                            the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                            whose value of the label with key topologyKey matches that of any node on which any of the
                                            selected pods is running.
                                            Empty topologyKey is not allowed.
                                          type: string
                                      required:
                                      - topologyKey
                                      type: object
                                    weight:
                                      description: |-
                                        weight associated with matching the corresponding podAffinityTerm,
                                        in the range 1-100.
                                      format: int32
                                      type: integer
                                  required:
                                  - podAffinityTerm
                                  - weight
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              requiredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  If the anti-affinity requirements specified by this field are not met at
                                  scheduling time, the pod will not be scheduled onto the node.
                                  If the anti-affinity requirements specified by this field cease to be met
                                  at some point during pod execution (e.g. due to a pod label update), the
                                  system may or may not try to eventually evict the pod from its node.
                                  When there are multiple elements, the lists of nodes corresponding to each
                                  podAffinityTerm are intersected, i.e. all terms must be satisfied.
                                items:
                                  description: |-
                                    Defines a set of pods (namely those matching the labelSelector
                                    relative to the given namespace(s)) that this pod should be
                                    co-located (affinity) or not co-located (anti-affinity) with,
                                    where co-located is defined as running on a node whose value of
                                    the label with key <topologyKey> matches that of any node on which
                                    a pod of the set of pods is running
                                  properties:
                                    labelSelector:
                                      description: |-
                                        A label query over a set of resources, in this case pods.
                                        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.
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      description: |-
                                        MatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      description: |-
                                        MismatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      description: |-
                                        A label query over the set of namespaces that the term applies to.
                                        The term is applied to the union of the namespaces selected by this field
                                        and the ones listed in the namespaces field.
                                        null selector and null or empty namespaces list means "this pod's namespace".
                                        An empty selector ({}) matches all namespaces.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      description: |-
                                        namespaces specifies a static list of namespace names that the term applies to.
                                        The term is applied to the union of the namespaces listed in this field
                                        and the ones selected by namespaceSelector.
                                        null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      description: |-
                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                        whose value of the label with key topologyKey matches that of any node on which any of the
                                        selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                            type: object
                        type: object
                      annotations:
                        additionalProperties:
                          type: string
                        description: Pod's annotations
                        type: object
                      enableSeLinuxHostMount:
                        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.
                        type: string
                      kubeletDirPath:
                        description: kubelet directory path, if kubelet configured to
                          use other than /var/lib/kubelet path.
                        type: string
                      labels:
                        additionalProperties:
                          type: string
                        description: Pod's labels
                        type: object
                      priorityClassName:
                        description: Pod's user defined priority class name
                        type: string
                      resources:
                        description: Resource requirements for plugin's containers
                        properties:
                          addons:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          liveness:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          logRotator:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          plugin:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          registrar:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                        type: object
                      serviceAccountName:
                        description: Service account name to be used for driver's pods
                        type: string
                      tolerations:
                        description: Pod's tolerations list
                        items:
                          description: |-
                            The pod this Toleration is attached to tolerates any taint that matches
                            the triple <key,value,effect> using the matching operator <operator>.
                          properties:
                            effect:
                              description: |-
                                Effect indicates the taint effect to match. Empty means match all taint effects.
                                When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
                              type: string
                            key:
                              description: |-
                                Key is the taint key that the toleration applies to. Empty means match all taint keys.
                                If the key is empty, operator must be Exists; this combination means to match all values and all keys.
                              type: string
                            operator:
                              description: |-
                                Operator represents a key's relationship to the value.
                                Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal.
                                Exists is equivalent to wildcard for value, so that a pod can
                                tolerate all taints of a particular category.
                                Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators).
                              type: string
                            tolerationSeconds:
                              description: |-
                                TolerationSeconds represents the period of time the toleration (which must be
                                of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
                                it is not set, which means tolerate the taint forever (do not evict). Zero and
                                negative values will be treated as 0 (evict immediately) by the system.
                              format: int64
                              type: integer
                            value:
                              description: |-
                                Value is the taint value the toleration matches to.
                                If the operator is Exists, the value should be empty, otherwise just a regular string.
                              type: string
                          type: object
                        type: array
                      topology:
                        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
                            items:
                              type: string
                            type: array
                        required:
                        - domainLabels
                        type: object
                      updateStrategy:
                        description: |-
                          Driver's plugin daemonset update strategy, supported values are OnDelete and RollingUpdate.
                          Default value is RollingUpdate with MaxAvailabile set to 1
                        properties:
                          rollingUpdate:
                            description: Rolling update config params. Present only
                              if type = "RollingUpdate".
                            properties:
                              maxSurge:
                                anyOf:
                                - type: integer
                                - type: string
                                description: |-
                                  The maximum number of nodes with an existing available DaemonSet pod that
                                  can have an updated DaemonSet pod during during an update.
                                  Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
                                  This can not be 0 if MaxUnavailable is 0.
                                  Absolute number is calculated from percentage by rounding up to a minimum of 1.
                                  Default value is 0.
                                  Example: when this is set to 30%, at most 30% of the total number of nodes
                                  that should be running the daemon pod (i.e. status.desiredNumberScheduled)
                                  can have their a new pod created before the old pod is marked as deleted.
                                  The update starts by launching new pods on 30% of nodes. Once an updated
                                  pod is available (Ready for at least minReadySeconds) the old DaemonSet pod
                                  on that node is marked deleted. If the old pod becomes unavailable for any
                                  reason (Ready transitions to false, is evicted, or is drained) an updated
                                  pod is immediately created on that node without considering surge limits.
                                  Allowing surge implies the possibility that the resources consumed by the
                                  daemonset on any given node can double if the readiness check fails, and
                                  so resource intensive daemonsets should take into account that they may
                                  cause evictions during disruption.
                                x-kubernetes-int-or-string: true
                              maxUnavailable:
                                anyOf:
                                - type: integer
                                - type: string
                                description: |-
                                  The maximum number of DaemonSet pods that can be unavailable during the
                                  update. Value can be an absolute number (ex: 5) or a percentage of total
                                  number of DaemonSet pods at the start of the update (ex: 10%). Absolute
                                  number is calculated from percentage by rounding up.
                                  This cannot be 0 if MaxSurge is 0
                                  Default value is 1.
                                  Example: when this is set to 30%, at most 30% of the total number of nodes
                                  that should be running the daemon pod (i.e. status.desiredNumberScheduled)
                                  can have their pods stopped for an update at any given time. The update
                                  starts by stopping at most 30% of those DaemonSet pods and then brings
                                  up new DaemonSet pods in their place. Once the new pods are available,
                                  it then proceeds onto other DaemonSet pods, thus ensuring that at least
                                  70% of original number of DaemonSet pods are available at all times during
                                  the update.
                                x-kubernetes-int-or-string: true
                            type: object
                          type:
                            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
                        items:
                          properties:
                            mount:
                              description: VolumeMount describes a mounting of a Volume
                                within a container.
                              properties:
                                mountPath:
                                  description: |-
                                    Path within the container at which the volume should be mounted.  Must
                                    not contain ':'.
                                  type: string
                                mountPropagation:
                                  description: |-
                                    mountPropagation determines how mounts are propagated from the host
                                    to container and the other way around.
                                    When not set, MountPropagationNone is used.
                                    This field is beta in 1.10.
                                    When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
                                    (which defaults to None).
                                  type: string
                                name:
                                  description: This must match the Name of a Volume.
                                  type: string
                                readOnly:
                                  description: |-
                                    Mounted read-only if true, read-write otherwise (false or unspecified).
                                    Defaults to false.
                                  type: boolean
                                recursiveReadOnly:
                                  description: |-
                                    RecursiveReadOnly specifies whether read-only mounts should be handled
                                    recursively.

                                    If ReadOnly is false, this field has no meaning and must be unspecified.

                                    If ReadOnly is true, and this field is set to Disabled, the mount is not made
                                    recursively read-only.  If this field is set to IfPossible, the mount is made
                                    recursively read-only, if it is supported by the container runtime.  If this
                                    field is set to Enabled, the mount is made recursively read-only if it is
                                    supported by the container runtime, otherwise the pod will not be started and
                                    an error will be generated to indicate the reason.

                                    If this field is set to IfPossible or Enabled, MountPropagation must be set to
                                    None (or be unspecified, which defaults to None).

                                    If this field is not specified, it is treated as an equivalent of Disabled.
                                  type: string
                                subPath:
                                  description: |-
                                    Path within the volume from which the container's volume should be mounted.
                                    Defaults to "" (volume's root).
                                  type: string
                                subPathExpr:
                                  description: |-
                                    Expanded path within the volume from which the container's volume should be mounted.
                                    Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
                                    Defaults to "" (volume's root).
                                    SubPathExpr and SubPath are mutually exclusive.
                                  type: string
                              required:
                              - mountPath
                              - name
                              type: object
                            volume:
                              description: Volume represents a named volume in a pod
                                that may be accessed by any container in the pod.
                              properties:
                                awsElasticBlockStore:
                                  description: |-
                                    awsElasticBlockStore represents an AWS Disk resource that is attached to a
                                    kubelet's host machine and then exposed to the pod.
                                    Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree
                                    awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type of the volume that you want to mount.
                                        Tip: Ensure that the filesystem type is supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                      type: string
                                    partition:
                                      description: |-
                                        partition is the partition in the volume that you want to mount.
                                        If omitted, the default is to mount by volume name.
                                        Examples: For volume /dev/sda1, you specify the partition as "1".
                                        Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
                                      format: int32
                                      type: integer
                                    readOnly:
                                      description: |-
                                        readOnly value true will force the readOnly setting in VolumeMounts.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                      type: boolean
                                    volumeID:
                                      description: |-
                                        volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                      type: string
                                  required:
                                  - volumeID
                                  type: object
                                azureDisk:
                                  description: |-
                                    azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
                                    Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type
                                    are redirected to the disk.csi.azure.com CSI driver.
                                  properties:
                                    cachingMode:
                                      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
                                      type: string
                                    diskURI:
                                      description: diskURI is the URI of data disk in
                                        the blob storage
                                      type: string
                                    fsType:
                                      default: ext4
                                      description: |-
                                        fsType is Filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        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'
                                      type: string
                                    readOnly:
                                      default: false
                                      description: |-
                                        readOnly Defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                  required:
                                  - diskName
                                  - diskURI
                                  type: object
                                azureFile:
                                  description: |-
                                    azureFile represents an Azure File Service mount on the host and bind mount to the pod.
                                    Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type
                                    are redirected to the file.csi.azure.com CSI driver.
                                  properties:
                                    readOnly:
                                      description: |-
                                        readOnly defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    secretName:
                                      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
                                      type: string
                                  required:
                                  - secretName
                                  - shareName
                                  type: object
                                cephfs:
                                  description: |-
                                    cephFS represents a Ceph FS mount on the host that shares a pod's lifetime.
                                    Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.
                                  properties:
                                    monitors:
                                      description: |-
                                        monitors is Required: Monitors is a collection of Ceph monitors
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      items:
                                        type: string
                                      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 /'
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      type: boolean
                                    secretFile:
                                      description: |-
                                        secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      type: string
                                    secretRef:
                                      description: |-
                                        secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    user:
                                      description: |-
                                        user is optional: User is the rados user name, default is admin
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      type: string
                                  required:
                                  - monitors
                                  type: object
                                cinder:
                                  description: |-
                                    cinder represents a cinder volume attached and mounted on kubelets host machine.
                                    Deprecated: Cinder is deprecated. All operations for the in-tree cinder type
                                    are redirected to the cinder.csi.openstack.org CSI driver.
                                    More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                        More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef is optional: points to a secret object containing parameters used to connect
                                        to OpenStack.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    volumeID:
                                      description: |-
                                        volumeID used to identify the volume in cinder.
                                        More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                      type: string
                                  required:
                                  - volumeID
                                  type: object
                                configMap:
                                  description: configMap represents a configMap that
                                    should populate this volume
                                  properties:
                                    defaultMode:
                                      description: |-
                                        defaultMode is optional: mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                        Defaults to 0644.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    items:
                                      description: |-
                                        items if unspecified, each key-value pair in the Data field of the referenced
                                        ConfigMap will be projected into the volume as a file whose name is the
                                        key and content is the value. If specified, the listed keys will be
                                        projected into the specified paths, and unlisted keys will not be
                                        present. If a key is specified which is not present in the ConfigMap,
                                        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.
                                        properties:
                                          key:
                                            description: key is the key to project.
                                            type: string
                                          mode:
                                            description: |-
                                              mode is Optional: mode bits used to set permissions on this file.
                                              Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                              YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                              If not specified, the volume defaultMode will be used.
                                              This might be in conflict with other options that affect the file
                                              mode, like fsGroup, and the result can be other mode bits set.
                                            format: int32
                                            type: integer
                                          path:
                                            description: |-
                                              path is the relative path of the file to map the key to.
                                              May not be an absolute path.
                                              May not contain the path element '..'.
                                              May not start with the string '..'.
                                            type: string
                                        required:
                                        - key
                                        - path
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        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
                                      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.
                                  properties:
                                    driver:
                                      description: |-
                                        driver is the name of the CSI driver that handles this volume.
                                        Consult with your admin for the correct name as registered in the cluster.
                                      type: string
                                    fsType:
                                      description: |-
                                        fsType to mount. Ex. "ext4", "xfs", "ntfs".
                                        If not provided, the empty value is passed to the associated CSI driver
                                        which will determine the default filesystem to apply.
                                      type: string
                                    nodePublishSecretRef:
                                      description: |-
                                        nodePublishSecretRef is a reference to the secret object containing
                                        sensitive information to pass to the CSI driver to complete the CSI
                                        NodePublishVolume and NodeUnpublishVolume calls.
                                        This field is optional, and  may be empty if no secret is required. If the
                                        secret object contains more than one secret, all secret references are passed.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    readOnly:
                                      description: |-
                                        readOnly specifies a read-only configuration for the volume.
                                        Defaults to false (read/write).
                                      type: boolean
                                    volumeAttributes:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        volumeAttributes stores driver-specific properties that are passed to the CSI
                                        driver. Consult your driver's documentation for supported values.
                                      type: object
                                  required:
                                  - driver
                                  type: object
                                downwardAPI:
                                  description: downwardAPI represents downward API about
                                    the pod that should populate this volume
                                  properties:
                                    defaultMode:
                                      description: |-
                                        Optional: mode bits to use on created files by default. Must be a
                                        Optional: mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                        Defaults to 0644.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    items:
                                      description: Items is a list of downward API volume
                                        file
                                      items:
                                        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.'
                                            properties:
                                              apiVersion:
                                                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.
                                                type: string
                                            required:
                                            - fieldPath
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          mode:
                                            description: |-
                                              Optional: mode bits used to set permissions on this file, must be an octal value
                                              between 0000 and 0777 or a decimal value between 0 and 511.
                                              YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                              If not specified, the volume defaultMode will be used.
                                              This might be in conflict with other options that affect the file
                                              mode, like fsGroup, and the result can be other mode bits set.
                                            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 ''..'''
                                            type: string
                                          resourceFieldRef:
                                            description: |-
                                              Selects a resource of the container: only resources limits and requests
                                              (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                            properties:
                                              containerName:
                                                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"
                                                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'
                                                type: string
                                            required:
                                            - resource
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        required:
                                        - path
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                emptyDir:
                                  description: |-
                                    emptyDir represents a temporary directory that shares a pod's lifetime.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                  properties:
                                    medium:
                                      description: |-
                                        medium represents what type of storage medium should back this directory.
                                        The default is "" which means to use the node's default medium.
                                        Must be an empty string (default) or Memory.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                      type: string
                                    sizeLimit:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      description: |-
                                        sizeLimit is the total amount of local storage required for this EmptyDir volume.
                                        The size limit is also applicable for memory medium.
                                        The maximum usage on memory medium EmptyDir would be the minimum value between
                                        the SizeLimit specified here and the sum of memory limits of all containers in a pod.
                                        The default is nil which means that the limit is undefined.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                  type: object
                                ephemeral:
                                  description: |-
                                    ephemeral represents a volume that is handled by a cluster storage driver.
                                    The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
                                    and deleted when the pod is removed.

                                    Use this if:
                                    a) the volume is only needed while the pod runs,
                                    b) features of normal volumes like restoring from snapshot or capacity
                                       tracking are needed,
                                    c) the storage driver is specified through a storage class, and
                                    d) the storage driver supports dynamic volume provisioning through
                                       a PersistentVolumeClaim (see EphemeralVolumeSource for more
                                       information on the connection between this volume type
                                       and PersistentVolumeClaim).

                                    Use PersistentVolumeClaim or one of the vendor-specific
                                    APIs for volumes that persist for longer than the lifecycle
                                    of an individual pod.

                                    Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
                                    be used that way - see the documentation of the driver for
                                    more information.

                                    A pod can use both types of ephemeral volumes and
                                    persistent volumes at the same time.
                                  properties:
                                    volumeClaimTemplate:
                                      description: |-
                                        Will be used to create a stand-alone PVC to provision the volume.
                                        The pod in which this EphemeralVolumeSource is embedded will be the
                                        owner of the PVC, i.e. the PVC will be deleted together with the
                                        pod.  The name of the PVC will be `<pod name>-<volume name>` where
                                        `<volume name>` is the name from the `PodSpec.Volumes` array
                                        entry. Pod validation will reject the pod if the concatenated name
                                        is not valid for a PVC (for example, too long).

                                        An existing PVC with that name that is not owned by the pod
                                        will *not* be used for the pod to avoid using an unrelated
                                        volume by mistake. Starting the pod is then blocked until
                                        the unrelated PVC is removed. If such a pre-created PVC is
                                        meant to be used by the pod, the PVC has to updated with an
                                        owner reference to the pod once the pod exists. Normally
                                        this should not be necessary, but it may be useful when
                                        manually reconstructing a broken cluster.

                                        This field is read-only and no changes will be made by Kubernetes
                                        to the PVC after it has been created.

                                        Required, must not be nil.
                                      properties:
                                        metadata:
                                          description: |-
                                            May contain labels and annotations that will be copied into the PVC
                                            when creating it. No other fields are allowed and will be rejected during
                                            validation.
                                          type: object
                                        spec:
                                          description: |-
                                            The specification for the PersistentVolumeClaim. The entire content is
                                            copied unchanged into the PVC that gets created from this
                                            template. The same fields as in a PersistentVolumeClaim
                                            are also valid here.
                                          properties:
                                            accessModes:
                                              description: |-
                                                accessModes contains the desired access modes the volume should have.
                                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            dataSource:
                                              description: |-
                                                dataSource field can be used to specify either:
                                                * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
                                                * An existing PVC (PersistentVolumeClaim)
                                                If the provisioner or an external controller can support the specified data source,
                                                it will create a new volume based on the contents of the specified data source.
                                                When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
                                                and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
                                                If the namespace is specified, then dataSourceRef will not be copied to dataSource.
                                              properties:
                                                apiGroup:
                                                  description: |-
                                                    APIGroup is the group for the resource being referenced.
                                                    If APIGroup is not specified, the specified Kind must be in the core API group.
                                                    For any other third-party types, APIGroup is required.
                                                  type: string
                                                kind:
                                                  description: Kind is the type of resource
                                                    being referenced
                                                  type: string
                                                name:
                                                  description: Name is the name of resource
                                                    being referenced
                                                  type: string
                                              required:
                                              - kind
                                              - name
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            dataSourceRef:
                                              description: |-
                                                dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
                                                volume is desired. This may be any object from a non-empty API group (non
                                                core object) or a PersistentVolumeClaim object.
                                                When this field is specified, volume binding will only succeed if the type of
                                                the specified object matches some installed volume populator or dynamic
                                                provisioner.
                                                This field will replace the functionality of the dataSource field and as such
                                                if both fields are non-empty, they must have the same value. For backwards
                                                compatibility, when namespace isn't specified in dataSourceRef,
                                                both fields (dataSource and dataSourceRef) will be set to the same
                                                value automatically if one of them is empty and the other is non-empty.
                                                When namespace is specified in dataSourceRef,
                                                dataSource isn't set to the same value and must be empty.
                                                There are three important differences between dataSource and dataSourceRef:
                                                * While dataSource only allows two specific types of objects, dataSourceRef
                                                  allows any non-core object, as well as PersistentVolumeClaim objects.
                                                * While dataSource ignores disallowed values (dropping them), dataSourceRef
                                                  preserves all values, and generates an error if a disallowed value is
                                                  specified.
                                                * While dataSource only allows local objects, dataSourceRef allows objects
                                                  in any namespaces.
                                                (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
                                                (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                              properties:
                                                apiGroup:
                                                  description: |-
                                                    APIGroup is the group for the resource being referenced.
                                                    If APIGroup is not specified, the specified Kind must be in the core API group.
                                                    For any other third-party types, APIGroup is required.
                                                  type: string
                                                kind:
                                                  description: Kind is the type of resource
                                                    being referenced
                                                  type: string
                                                name:
                                                  description: Name is the name of resource
                                                    being referenced
                                                  type: string
                                                namespace:
                                                  description: |-
                                                    Namespace is the namespace of resource being referenced
                                                    Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
                                                    (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                                  type: string
                                              required:
                                              - kind
                                              - name
                                              type: object
                                            resources:
                                              description: |-
                                                resources represents the minimum resources the volume should have.
                                                Users are allowed to specify resource requirements
                                                that are lower than previous value but must still be higher than capacity recorded in the
                                                status field of the claim.
                                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
                                              properties:
                                                limits:
                                                  additionalProperties:
                                                    anyOf:
                                                    - type: integer
                                                    - type: string
                                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                    x-kubernetes-int-or-string: true
                                                  description: |-
                                                    Limits describes the maximum amount of compute resources allowed.
                                                    More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                                  type: object
                                                requests:
                                                  additionalProperties:
                                                    anyOf:
                                                    - type: integer
                                                    - type: string
                                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                    x-kubernetes-int-or-string: true
                                                  description: |-
                                                    Requests describes the minimum amount of compute resources required.
                                                    If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                                    otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                                    More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                                  type: object
                                              type: object
                                            selector:
                                              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.
                                                  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.
                                                        type: string
                                                      operator:
                                                        description: |-
                                                          operator represents a key's relationship to a set of values.
                                                          Valid operators are In, NotIn, Exists and DoesNotExist.
                                                        type: string
                                                      values:
                                                        description: |-
                                                          values is an array of string values. If the operator is In or NotIn,
                                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                          the values array must be empty. This array is replaced during a strategic
                                                          merge patch.
                                                        items:
                                                          type: string
                                                        type: array
                                                        x-kubernetes-list-type: atomic
                                                    required:
                                                    - key
                                                    - operator
                                                    type: object
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                                matchLabels:
                                                  additionalProperties:
                                                    type: string
                                                  description: |-
                                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                    map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                    operator is "In", and the values array contains only "value". The requirements are ANDed.
                                                  type: object
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            storageClassName:
                                              description: |-
                                                storageClassName is the name of the StorageClass required by the claim.
                                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
                                              type: string
                                            volumeAttributesClassName:
                                              description: |-
                                                volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
                                                If specified, the CSI driver will create or update the volume with the attributes defined
                                                in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
                                                it can be changed after the claim is created. An empty string or nil value indicates that no
                                                VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
                                                this field can be reset to its previous value (including nil) to cancel the modification.
                                                If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
                                                set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
                                                exists.
                                                More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
                                              type: string
                                            volumeMode:
                                              description: |-
                                                volumeMode defines what type of volume is required by the claim.
                                                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.
                                              type: string
                                          type: object
                                      required:
                                      - 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.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                      type: string
                                    lun:
                                      description: 'lun is Optional: FC target lun number'
                                      format: int32
                                      type: integer
                                    readOnly:
                                      description: |-
                                        readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    targetWWNs:
                                      description: 'targetWWNs is Optional: FC target
                                        worldwide names (WWNs)'
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    wwids:
                                      description: |-
                                        wwids Optional: FC volume world wide identifiers (wwids)
                                        Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                flexVolume:
                                  description: |-
                                    flexVolume represents a generic volume resource that is
                                    provisioned/attached using an exec based plugin.
                                    Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead.
                                  properties:
                                    driver:
                                      description: driver is the name of the driver
                                        to use for this volume.
                                      type: string
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
                                      type: string
                                    options:
                                      additionalProperties:
                                        type: string
                                      description: 'options is Optional: this field
                                        holds extra command options if any.'
                                      type: object
                                    readOnly:
                                      description: |-
                                        readOnly is Optional: defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef is Optional: secretRef is reference to the secret object containing
                                        sensitive information to pass to the plugin scripts. This may be
                                        empty if no secret object is specified. If the secret object
                                        contains more than one secret, all secrets are passed to the plugin
                                        scripts.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  required:
                                  - driver
                                  type: object
                                flocker:
                                  description: |-
                                    flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running.
                                    Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported.
                                  properties:
                                    datasetName:
                                      description: |-
                                        datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker
                                        should be considered as deprecated
                                      type: string
                                    datasetUUID:
                                      description: datasetUUID is the UUID of the dataset.
                                        This is unique identifier of a Flocker dataset
                                      type: string
                                  type: object
                                gcePersistentDisk:
                                  description: |-
                                    gcePersistentDisk represents a GCE Disk resource that is attached to a
                                    kubelet's host machine and then exposed to the pod.
                                    Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree
                                    gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is filesystem type of the volume that you want to mount.
                                        Tip: Ensure that the filesystem type is supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                      type: string
                                    partition:
                                      description: |-
                                        partition is the partition in the volume that you want to mount.
                                        If omitted, the default is to mount by volume name.
                                        Examples: For volume /dev/sda1, you specify the partition as "1".
                                        Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                      format: int32
                                      type: integer
                                    pdName:
                                      description: |-
                                        pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the ReadOnly setting in VolumeMounts.
                                        Defaults to false.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                      type: boolean
                                  required:
                                  - pdName
                                  type: object
                                gitRepo:
                                  description: |-
                                    gitRepo represents a git repository at a particular revision.
                                    Deprecated: GitRepo is deprecated. To provision a container with a git repo, mount an
                                    EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
                                    into the Pod's container.
                                  properties:
                                    directory:
                                      description: |-
                                        directory is the target directory name.
                                        Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
                                        git repository.  Otherwise, if specified, the volume will contain the git repository in
                                        the subdirectory with the given name.
                                      type: string
                                    repository:
                                      description: repository is the URL
                                      type: string
                                    revision:
                                      description: revision is the commit hash for the
                                        specified revision.
                                      type: string
                                  required:
                                  - repository
                                  type: object
                                glusterfs:
                                  description: |-
                                    glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
                                    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.
                                      type: string
                                    path:
                                      description: |-
                                        path is the Glusterfs volume path.
                                        More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
                                        Defaults to false.
                                        More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                      type: boolean
                                  required:
                                  - endpoints
                                  - path
                                  type: object
                                hostPath:
                                  description: |-
                                    hostPath represents a pre-existing file or directory on the host
                                    machine that is directly exposed to the container. This is generally
                                    used for system agents or other privileged things that are allowed
                                    to see the host machine. Most containers will NOT need this.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                  properties:
                                    path:
                                      description: |-
                                        path of the directory on the host.
                                        If the path is a symlink, it will follow the link to the real path.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                      type: string
                                    type:
                                      description: |-
                                        type for HostPath Volume
                                        Defaults to ""
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                      type: string
                                  required:
                                  - path
                                  type: object
                                image:
                                  description: |-
                                    image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine.
                                    The volume is resolved at pod startup depending on which PullPolicy value is provided:

                                    - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
                                    - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
                                    - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.

                                    The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation.
                                    A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message.
                                    The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field.
                                    The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images.
                                    The volume will be mounted read-only (ro) and non-executable files (noexec).
                                    Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath) before 1.33.
                                    The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type.
                                  properties:
                                    pullPolicy:
                                      description: |-
                                        Policy for pulling OCI objects. Possible values are:
                                        Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
                                        Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
                                        IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.
                                        Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
                                      type: string
                                    reference:
                                      description: |-
                                        Required: Image or artifact reference to be used.
                                        Behaves in the same way as pod.spec.containers[*].image.
                                        Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets.
                                        More info: https://kubernetes.io/docs/concepts/containers/images
                                        This field is optional to allow higher level config management to default or override
                                        container images in workload controllers like Deployments and StatefulSets.
                                      type: string
                                  type: object
                                iscsi:
                                  description: |-
                                    iscsi represents an ISCSI Disk resource that is attached to a
                                    kubelet's host machine and then exposed to the pod.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi
                                  properties:
                                    chapAuthDiscovery:
                                      description: chapAuthDiscovery defines whether
                                        support iSCSI Discovery CHAP authentication
                                      type: boolean
                                    chapAuthSession:
                                      description: chapAuthSession defines whether support
                                        iSCSI Session CHAP authentication
                                      type: boolean
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type of the volume that you want to mount.
                                        Tip: Ensure that the filesystem type is supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
                                      type: string
                                    initiatorName:
                                      description: |-
                                        initiatorName is the custom iSCSI Initiator Name.
                                        If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
                                        <target portal>:<volume name> will be created for the connection.
                                      type: string
                                    iqn:
                                      description: iqn is the target iSCSI Qualified
                                        Name.
                                      type: string
                                    iscsiInterface:
                                      default: default
                                      description: |-
                                        iscsiInterface is the interface Name that uses an iSCSI transport.
                                        Defaults to 'default' (tcp).
                                      type: string
                                    lun:
                                      description: lun represents iSCSI Target Lun number.
                                      format: int32
                                      type: integer
                                    portals:
                                      description: |-
                                        portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
                                        is other than default (typically TCP ports 860 and 3260).
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    readOnly:
                                      description: |-
                                        readOnly here will force the ReadOnly setting in VolumeMounts.
                                        Defaults to false.
                                      type: boolean
                                    secretRef:
                                      description: secretRef is the CHAP Secret for
                                        iSCSI target and initiator authentication
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    targetPortal:
                                      description: |-
                                        targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
                                        is other than default (typically TCP ports 860 and 3260).
                                      type: string
                                  required:
                                  - iqn
                                  - lun
                                  - targetPortal
                                  type: object
                                name:
                                  description: |-
                                    name of the volume.
                                    Must be a DNS_LABEL and unique within the pod.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                nfs:
                                  description: |-
                                    nfs represents an NFS mount on the host that shares a pod's lifetime
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                  properties:
                                    path:
                                      description: |-
                                        path that is exported by the NFS server.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the NFS export to be mounted with read-only permissions.
                                        Defaults to false.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                      type: boolean
                                    server:
                                      description: |-
                                        server is the hostname or IP address of the NFS server.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                      type: string
                                  required:
                                  - path
                                  - server
                                  type: object
                                persistentVolumeClaim:
                                  description: |-
                                    persistentVolumeClaimVolumeSource represents a reference to a
                                    PersistentVolumeClaim in the same namespace.
                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                  properties:
                                    claimName:
                                      description: |-
                                        claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
                                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly Will force the ReadOnly setting in VolumeMounts.
                                        Default false.
                                      type: boolean
                                  required:
                                  - claimName
                                  type: object
                                photonPersistentDisk:
                                  description: |-
                                    photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine.
                                    Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        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
                                      type: string
                                  required:
                                  - pdID
                                  type: object
                                portworxVolume:
                                  description: |-
                                    portworxVolume represents a portworx volume attached and mounted on kubelets host machine.
                                    Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type
                                    are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate
                                    is on.
                                  properties:
                                    fsType:
                                      description: |-
                                        fSType represents the filesystem type to mount
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    volumeID:
                                      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
                                  properties:
                                    defaultMode:
                                      description: |-
                                        defaultMode are the mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    sources:
                                      description: |-
                                        sources is the list of volume projections. Each entry in this list
                                        handles one source.
                                      items:
                                        description: |-
                                          Projection that may be projected along with other supported volume types.
                                          Exactly one of these fields must be set.
                                        properties:
                                          clusterTrustBundle:
                                            description: |-
                                              ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
                                              of ClusterTrustBundle objects in an auto-updating file.

                                              Alpha, gated by the ClusterTrustBundleProjection feature gate.

                                              ClusterTrustBundle objects can either be selected by name, or by the
                                              combination of signer name and a label selector.

                                              Kubelet performs aggressive normalization of the PEM contents written
                                              into the pod filesystem.  Esoteric PEM features such as inter-block
                                              comments and block headers are stripped.  Certificates are deduplicated.
                                              The ordering of certificates within the file is arbitrary, and Kubelet
                                              may change the order over time.
                                            properties:
                                              labelSelector:
                                                description: |-
                                                  Select all ClusterTrustBundles that match this label selector.  Only has
                                                  effect if signerName is set.  Mutually-exclusive with name.  If unset,
                                                  interpreted as "match nothing".  If set but empty, interpreted as "match
                                                  everything".
                                                properties:
                                                  matchExpressions:
                                                    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.
                                                          type: string
                                                        operator:
                                                          description: |-
                                                            operator represents a key's relationship to a set of values.
                                                            Valid operators are In, NotIn, Exists and DoesNotExist.
                                                          type: string
                                                        values:
                                                          description: |-
                                                            values is an array of string values. If the operator is In or NotIn,
                                                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                            the values array must be empty. This array is replaced during a strategic
                                                            merge patch.
                                                          items:
                                                            type: string
                                                          type: array
                                                          x-kubernetes-list-type: atomic
                                                      required:
                                                      - key
                                                      - operator
                                                      type: object
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                  matchLabels:
                                                    additionalProperties:
                                                      type: string
                                                    description: |-
                                                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                                                    type: object
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              name:
                                                description: |-
                                                  Select a single ClusterTrustBundle by object name.  Mutually-exclusive
                                                  with signerName and labelSelector.
                                                type: string
                                              optional:
                                                description: |-
                                                  If true, don't block pod startup if the referenced ClusterTrustBundle(s)
                                                  aren't available.  If using name, then the named ClusterTrustBundle is
                                                  allowed not to exist.  If using signerName, then the combination of
                                                  signerName and labelSelector is allowed to match zero
                                                  ClusterTrustBundles.
                                                type: boolean
                                              path:
                                                description: Relative path from the
                                                  volume root to write the bundle.
                                                type: string
                                              signerName:
                                                description: |-
                                                  Select all ClusterTrustBundles that match this signer name.
                                                  Mutually-exclusive with name.  The contents of all selected
                                                  ClusterTrustBundles will be unified and deduplicated.
                                                type: string
                                            required:
                                            - path
                                            type: object
                                          configMap:
                                            description: configMap information about
                                              the configMap data to project
                                            properties:
                                              items:
                                                description: |-
                                                  items if unspecified, each key-value pair in the Data field of the referenced
                                                  ConfigMap will be projected into the volume as a file whose name is the
                                                  key and content is the value. If specified, the listed keys will be
                                                  projected into the specified paths, and unlisted keys will not be
                                                  present. If a key is specified which is not present in the ConfigMap,
                                                  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.
                                                  properties:
                                                    key:
                                                      description: key is the key to
                                                        project.
                                                      type: string
                                                    mode:
                                                      description: |-
                                                        mode is Optional: mode bits used to set permissions on this file.
                                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                        If not specified, the volume defaultMode will be used.
                                                        This might be in conflict with other options that affect the file
                                                        mode, like fsGroup, and the result can be other mode bits set.
                                                      format: int32
                                                      type: integer
                                                    path:
                                                      description: |-
                                                        path is the relative path of the file to map the key to.
                                                        May not be an absolute path.
                                                        May not contain the path element '..'.
                                                        May not start with the string '..'.
                                                      type: string
                                                  required:
                                                  - key
                                                  - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  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
                                                type: boolean
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          downwardAPI:
                                            description: downwardAPI information about
                                              the downwardAPI data to project
                                            properties:
                                              items:
                                                description: Items is a list of DownwardAPIVolume
                                                  file
                                                items:
                                                  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.'
                                                      properties:
                                                        apiVersion:
                                                          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.
                                                          type: string
                                                      required:
                                                      - fieldPath
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                    mode:
                                                      description: |-
                                                        Optional: mode bits used to set permissions on this file, must be an octal value
                                                        between 0000 and 0777 or a decimal value between 0 and 511.
                                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                        If not specified, the volume defaultMode will be used.
                                                        This might be in conflict with other options that affect the file
                                                        mode, like fsGroup, and the result can be other mode bits set.
                                                      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 ''..'''
                                                      type: string
                                                    resourceFieldRef:
                                                      description: |-
                                                        Selects a resource of the container: only resources limits and requests
                                                        (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                                      properties:
                                                        containerName:
                                                          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"
                                                          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'
                                                          type: string
                                                      required:
                                                      - resource
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                  required:
                                                  - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            type: object
                                          podCertificate:
                                            description: |-
                                              Projects an auto-rotating credential bundle (private key and certificate
                                              chain) that the pod can use either as a TLS client or server.

                                              Kubelet generates a private key and uses it to send a
                                              PodCertificateRequest to the named signer.  Once the signer approves the
                                              request and issues a certificate chain, Kubelet writes the key and
                                              certificate chain to the pod filesystem.  The pod does not start until
                                              certificates have been issued for each podCertificate projected volume
                                              source in its spec.

                                              Kubelet will begin trying to rotate the certificate at the time indicated
                                              by the signer using the PodCertificateRequest.Status.BeginRefreshAt
                                              timestamp.

                                              Kubelet can write a single file, indicated by the credentialBundlePath
                                              field, or separate files, indicated by the keyPath and
                                              certificateChainPath fields.

                                              The credential bundle is a single file in PEM format.  The first PEM
                                              entry is the private key (in PKCS#8 format), and the remaining PEM
                                              entries are the certificate chain issued by the signer (typically,
                                              signers will return their certificate chain in leaf-to-root order).

                                              Prefer using the credential bundle format, since your application code
                                              can read it atomically.  If you use keyPath and certificateChainPath,
                                              your application must make two separate file reads. If these coincide
                                              with a certificate rotation, it is possible that the private key and leaf
                                              certificate you read may not correspond to each other.  Your application
                                              will need to check for this condition, and re-read until they are
                                              consistent.

                                              The named signer controls chooses the format of the certificate it
                                              issues; consult the signer implementation's documentation to learn how to
                                              use the certificates it issues.
                                            properties:
                                              certificateChainPath:
                                                description: |-
                                                  Write the certificate chain at this path in the projected volume.

                                                  Most applications should use credentialBundlePath.  When using keyPath
                                                  and certificateChainPath, your application needs to check that the key
                                                  and leaf certificate are consistent, because it is possible to read the
                                                  files mid-rotation.
                                                type: string
                                              credentialBundlePath:
                                                description: |-
                                                  Write the credential bundle at this path in the projected volume.

                                                  The credential bundle is a single file that contains multiple PEM blocks.
                                                  The first PEM block is a PRIVATE KEY block, containing a PKCS#8 private
                                                  key.

                                                  The remaining blocks are CERTIFICATE blocks, containing the issued
                                                  certificate chain from the signer (leaf and any intermediates).

                                                  Using credentialBundlePath lets your Pod's application code make a single
                                                  atomic read that retrieves a consistent key and certificate chain.  If you
                                                  project them to separate files, your application code will need to
                                                  additionally check that the leaf certificate was issued to the key.
                                                type: string
                                              keyPath:
                                                description: |-
                                                  Write the key at this path in the projected volume.

                                                  Most applications should use credentialBundlePath.  When using keyPath
                                                  and certificateChainPath, your application needs to check that the key
                                                  and leaf certificate are consistent, because it is possible to read the
                                                  files mid-rotation.
                                                type: string
                                              keyType:
                                                description: |-
                                                  The type of keypair Kubelet will generate for the pod.

                                                  Valid values are "RSA3072", "RSA4096", "ECDSAP256", "ECDSAP384",
                                                  "ECDSAP521", and "ED25519".
                                                type: string
                                              maxExpirationSeconds:
                                                description: |-
                                                  maxExpirationSeconds is the maximum lifetime permitted for the
                                                  certificate.

                                                  Kubelet copies this value verbatim into the PodCertificateRequests it
                                                  generates for this projection.

                                                  If omitted, kube-apiserver will set it to 86400(24 hours). kube-apiserver
                                                  will reject values shorter than 3600 (1 hour).  The maximum allowable
                                                  value is 7862400 (91 days).

                                                  The signer implementation is then free to issue a certificate with any
                                                  lifetime *shorter* than MaxExpirationSeconds, but no shorter than 3600
                                                  seconds (1 hour).  This constraint is enforced by kube-apiserver.
                                                  `kubernetes.io` signers will never issue certificates with a lifetime
                                                  longer than 24 hours.
                                                format: int32
                                                type: integer
                                              signerName:
                                                description: Kubelet's generated CSRs
                                                  will be addressed to this signer.
                                                type: string
                                              userAnnotations:
                                                additionalProperties:
                                                  type: string
                                                description: |-
                                                  userAnnotations allow pod authors to pass additional information to
                                                  the signer implementation.  Kubernetes does not restrict or validate this
                                                  metadata in any way.

                                                  These values are copied verbatim into the `spec.unverifiedUserAnnotations` field of
                                                  the PodCertificateRequest objects that Kubelet creates.

                                                  Entries are subject to the same validation as object metadata annotations,
                                                  with the addition that all keys must be domain-prefixed. No restrictions
                                                  are placed on values, except an overall size limitation on the entire field.

                                                  Signers should document the keys and values they support. Signers should
                                                  deny requests that contain keys they do not recognize.
                                                type: object
                                            required:
                                            - keyType
                                            - signerName
                                            type: object
                                          secret:
                                            description: secret information about the
                                              secret data to project
                                            properties:
                                              items:
                                                description: |-
                                                  items if unspecified, each key-value pair in the Data field of the referenced
                                                  Secret will be projected into the volume as a file whose name is the
                                                  key and content is the value. If specified, the listed keys will be
                                                  projected into the specified paths, and unlisted keys will not be
                                                  present. If a key is specified which is not present in the Secret,
                                                  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.
                                                  properties:
                                                    key:
                                                      description: key is the key to
                                                        project.
                                                      type: string
                                                    mode:
                                                      description: |-
                                                        mode is Optional: mode bits used to set permissions on this file.
                                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                        If not specified, the volume defaultMode will be used.
                                                        This might be in conflict with other options that affect the file
                                                        mode, like fsGroup, and the result can be other mode bits set.
                                                      format: int32
                                                      type: integer
                                                    path:
                                                      description: |-
                                                        path is the relative path of the file to map the key to.
                                                        May not be an absolute path.
                                                        May not contain the path element '..'.
                                                        May not start with the string '..'.
                                                      type: string
                                                  required:
                                                  - key
                                                  - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  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
                                                type: boolean
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          serviceAccountToken:
                                            description: serviceAccountToken is information
                                              about the serviceAccountToken data to
                                              project
                                            properties:
                                              audience:
                                                description: |-
                                                  audience is the intended audience of the token. A recipient of a token
                                                  must identify itself with an identifier specified in the audience of the
                                                  token, and otherwise should reject the token. The audience defaults to the
                                                  identifier of the apiserver.
                                                type: string
                                              expirationSeconds:
                                                description: |-
                                                  expirationSeconds is the requested duration of validity of the service
                                                  account token. As the token approaches expiration, the kubelet volume
                                                  plugin will proactively rotate the service account token. The kubelet will
                                                  start trying to rotate the token if the token is older than 80 percent of
                                                  its time to live or if the token is older than 24 hours.Defaults to 1 hour
                                                  and must be at least 10 minutes.
                                                format: int64
                                                type: integer
                                              path:
                                                description: |-
                                                  path is the path relative to the mount point of the file to project the
                                                  token into.
                                                type: string
                                            required:
                                            - path
                                            type: object
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                quobyte:
                                  description: |-
                                    quobyte represents a Quobyte mount on the host that shares a pod's lifetime.
                                    Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.
                                  properties:
                                    group:
                                      description: |-
                                        group to map volume access to
                                        Default is no group
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the Quobyte volume to be mounted with read-only permissions.
                                        Defaults to false.
                                      type: boolean
                                    registry:
                                      description: |-
                                        registry represents a single or multiple Quobyte Registry services
                                        specified as a string as host:port pair (multiple entries are separated with commas)
                                        which acts as the central registry for volumes
                                      type: string
                                    tenant:
                                      description: |-
                                        tenant owning the given Quobyte volume in the Backend
                                        Used with dynamically provisioned Quobyte volumes, value is set by the plugin
                                      type: string
                                    user:
                                      description: |-
                                        user to map volume access to
                                        Defaults to serivceaccount user
                                      type: string
                                    volume:
                                      description: volume is a string that references
                                        an already created Quobyte volume by name.
                                      type: string
                                  required:
                                  - registry
                                  - volume
                                  type: object
                                rbd:
                                  description: |-
                                    rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
                                    Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type of the volume that you want to mount.
                                        Tip: Ensure that the filesystem type is supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
                                      type: string
                                    image:
                                      description: |-
                                        image is the rados image name.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: string
                                    keyring:
                                      default: /etc/ceph/keyring
                                      description: |-
                                        keyring is the path to key ring for RBDUser.
                                        Default is /etc/ceph/keyring.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: string
                                    monitors:
                                      description: |-
                                        monitors is a collection of Ceph monitors.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    pool:
                                      default: rbd
                                      description: |-
                                        pool is the rados pool name.
                                        Default is rbd.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the ReadOnly setting in VolumeMounts.
                                        Defaults to false.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef is name of the authentication secret for RBDUser. If provided
                                        overrides keyring.
                                        Default is nil.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    user:
                                      default: admin
                                      description: |-
                                        user is the rados user name.
                                        Default is admin.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: string
                                  required:
                                  - image
                                  - monitors
                                  type: object
                                scaleIO:
                                  description: |-
                                    scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
                                    Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.
                                  properties:
                                    fsType:
                                      default: xfs
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs", "ntfs".
                                        Default is "xfs".
                                      type: string
                                    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.
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly Defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef references to the secret for ScaleIO user and other
                                        sensitive information. If this is not provided, Login operation will fail.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    sslEnabled:
                                      description: sslEnabled Flag enable/disable SSL
                                        communication with Gateway, default false
                                      type: boolean
                                    storageMode:
                                      default: ThinProvisioned
                                      description: |-
                                        storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
                                        Default is ThinProvisioned.
                                      type: string
                                    storagePool:
                                      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.
                                      type: string
                                    volumeName:
                                      description: |-
                                        volumeName is the name of a volume already created in the ScaleIO system
                                        that is associated with this volume source.
                                      type: string
                                  required:
                                  - gateway
                                  - secretRef
                                  - system
                                  type: object
                                secret:
                                  description: |-
                                    secret represents a secret that should populate this volume.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                                  properties:
                                    defaultMode:
                                      description: |-
                                        defaultMode is Optional: mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values
                                        for mode bits. Defaults to 0644.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    items:
                                      description: |-
                                        items If unspecified, each key-value pair in the Data field of the referenced
                                        Secret will be projected into the volume as a file whose name is the
                                        key and content is the value. If specified, the listed keys will be
                                        projected into the specified paths, and unlisted keys will not be
                                        present. If a key is specified which is not present in the Secret,
                                        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.
                                        properties:
                                          key:
                                            description: key is the key to project.
                                            type: string
                                          mode:
                                            description: |-
                                              mode is Optional: mode bits used to set permissions on this file.
                                              Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                              YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                              If not specified, the volume defaultMode will be used.
                                              This might be in conflict with other options that affect the file
                                              mode, like fsGroup, and the result can be other mode bits set.
                                            format: int32
                                            type: integer
                                          path:
                                            description: |-
                                              path is the relative path of the file to map the key to.
                                              May not be an absolute path.
                                              May not contain the path element '..'.
                                              May not start with the string '..'.
                                            type: string
                                        required:
                                        - key
                                        - path
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    optional:
                                      description: optional field specify whether the
                                        Secret or its keys must be defined
                                      type: boolean
                                    secretName:
                                      description: |-
                                        secretName is the name of the secret in the pod's namespace to use.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                                      type: string
                                  type: object
                                storageos:
                                  description: |-
                                    storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
                                    Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef specifies the secret to use for obtaining the StorageOS API
                                        credentials.  If not specified, default values will be attempted.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    volumeName:
                                      description: |-
                                        volumeName is the human-readable name of the StorageOS volume.  Volume
                                        names are only unique within a namespace.
                                      type: string
                                    volumeNamespace:
                                      description: |-
                                        volumeNamespace specifies the scope of the volume within StorageOS.  If no
                                        namespace is specified then the Pod's namespace will be used.  This allows the
                                        Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
                                        Set VolumeName to any name to override the default behaviour.
                                        Set to "default" if you are not using namespaces within StorageOS.
                                        Namespaces that do not pre-exist within StorageOS will be created.
                                      type: string
                                  type: object
                                vsphereVolume:
                                  description: |-
                                    vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine.
                                    Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type
                                    are redirected to the csi.vsphere.vmware.com CSI driver.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        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.
                                      type: string
                                    storagePolicyName:
                                      description: storagePolicyName is the storage
                                        Policy Based Management (SPBM) profile name.
                                      type: string
                                    volumePath:
                                      description: volumePath is the path that identifies
                                        vSphere volume vmdk
                                      type: string
                                  required:
                                  - volumePath
                                  type: object
                              required:
                              - name
                              type: object
                          type: object
                        type: array
                    type: object
                  snapshotPolicy:
                    description: 'Select a policy for snapshot behavior: none, autodetect,
                      snapshot, sanpshotGroup'
                    enum:
                    - none
                    - volumeGroupSnapshot
                    - volumeSnapshot
                    type: string
                type: object
              log:
                description: OperatorLogSpec provide log related settings for the operator
                properties:
                  verbosity:
                    description: Operator's log level
                    maximum: 3
                    minimum: 0
                    type: integer
                type: object
            type: object
          status:
            description: OperatorConfigStatus defines the observed state of OperatorConfig
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
  - deprecated: true
    deprecationWarning: v1alpha1 is deprecated, please use v1
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: OperatorConfig is the Schema for the operatorconfigs API
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: OperatorConfigSpec defines the desired state of OperatorConfig
            properties:
              driverSpecDefaults:
                description: Allow overwrite of hardcoded defaults for any driver managed
                  by this operator
                properties:
                  attachRequired:
                    description: |-
                      Whether to skip any attach operation altogether for CephCsi PVCs.
                      See more details [here](https://kubernetes-csi.github.io/docs/skip-attach.html#skip-attach-with-csi-driver-object).
                      If set to false it skips the volume attachments and makes the creation of pods using the CephCsi PVC fast.
                      **WARNING** It's highly discouraged to use this for RWO volumes. for RBD PVC it can cause data corruption,
                      csi-addons operations like Reclaimspace and PVC Keyrotation will also not be supported if set to false
                      since we'll have no VolumeAttachments to determine which node the PVC is mounted on.
                      Refer to this [issue](https://github.com/kubernetes/kubernetes/issues/103305) for more details.
                    type: boolean
                  cephFsClientType:
                    description: |-
                      Select between between cephfs kernel driver and ceph-fuse
                      If you select a non-kernel client, your application may be disrupted during upgrade.
                      See the upgrade guide: https://rook.io/docs/rook/latest/ceph-upgrade.html
                      NOTE! cephfs quota is not supported in kernel version < 4.17
                    enum:
                    - autodetect
                    - kernel
                    type: string
                  clusterName:
                    description: |-
                      Cluster name identifier to set as metadata on the CephFS subvolume and RBD images. This will be useful in cases
                      when two container orchestrator clusters (Kubernetes/OCP) are using a single ceph cluster.
                    type: string
                  controllerPlugin:
                    description: Driver's controller plugin configuration
                    properties:
                      affinity:
                        description: Pod's affinity settings
                        properties:
                          nodeAffinity:
                            description: Describes node affinity scheduling rules for
                              the pod.
                            properties:
                              preferredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  The scheduler will prefer to schedule pods to nodes that satisfy
                                  the affinity expressions specified by this field, but it may choose
                                  a node that violates one or more of the expressions. The node that is
                                  most preferred is the one with the greatest sum of weights, i.e.
                                  for each node that meets all of the scheduling requirements (resource
                                  request, requiredDuringScheduling affinity expressions, etc.),
                                  compute a sum by iterating through the elements of this field and adding
                                  "weight" to the sum if the node matches the corresponding matchExpressions; the
                                  node(s) with the highest sum are the most preferred.
                                items:
                                  description: |-
                                    An empty preferred scheduling term matches all objects with implicit weight 0
                                    (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.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  Represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: |-
                                                  An array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will be interpreted as an integer.
                                                  This array is replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchFields:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  Represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: |-
                                                  An array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will be interpreted as an integer.
                                                  This array is replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    weight:
                                      description: Weight associated with matching the
                                        corresponding nodeSelectorTerm, in the range
                                        1-100.
                                      format: int32
                                      type: integer
                                  required:
                                  - preference
                                  - weight
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              requiredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  If the affinity requirements specified by this field are not met at
                                  scheduling time, the pod will not be scheduled onto the node.
                                  If the affinity requirements specified by this field cease to be met
                                  at some point during pod execution (e.g. due to an update), the system
                                  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.
                                    items:
                                      description: |-
                                        A null or empty node selector term matches no objects. The requirements of
                                        them are ANDed.
                                        The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  Represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: |-
                                                  An array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will be interpreted as an integer.
                                                  This array is replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchFields:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  Represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: |-
                                                  An array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will be interpreted as an integer.
                                                  This array is replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    type: array
                                    x-kubernetes-list-type: atomic
                                required:
                                - nodeSelectorTerms
                                type: object
                                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)).
                            properties:
                              preferredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  The scheduler will prefer to schedule pods to nodes that satisfy
                                  the affinity expressions specified by this field, but it may choose
                                  a node that violates one or more of the expressions. The node that is
                                  most preferred is the one with the greatest sum of weights, i.e.
                                  for each node that meets all of the scheduling requirements (resource
                                  request, requiredDuringScheduling affinity expressions, etc.),
                                  compute a sum by iterating through the elements of this field and adding
                                  "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)
                                  properties:
                                    podAffinityTerm:
                                      description: Required. A pod affinity term, associated
                                        with the corresponding weight.
                                      properties:
                                        labelSelector:
                                          description: |-
                                            A label query over a set of resources, in this case pods.
                                            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.
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        matchLabelKeys:
                                          description: |-
                                            MatchLabelKeys is a set of pod label keys to select which pods will
                                            be taken into consideration. The keys are used to lookup values from the
                                            incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                            to select the group of existing pods which pods will be taken into consideration
                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                            pod labels will be ignored. The default value is empty.
                                            The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                            Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        mismatchLabelKeys:
                                          description: |-
                                            MismatchLabelKeys is a set of pod label keys to select which pods will
                                            be taken into consideration. The keys are used to lookup values from the
                                            incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                            to select the group of existing pods which pods will be taken into consideration
                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                            pod labels will be ignored. The default value is empty.
                                            The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                            Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        namespaceSelector:
                                          description: |-
                                            A label query over the set of namespaces that the term applies to.
                                            The term is applied to the union of the namespaces selected by this field
                                            and the ones listed in the namespaces field.
                                            null selector and null or empty namespaces list means "this pod's namespace".
                                            An empty selector ({}) matches all namespaces.
                                          properties:
                                            matchExpressions:
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        namespaces:
                                          description: |-
                                            namespaces specifies a static list of namespace names that the term applies to.
                                            The term is applied to the union of the namespaces listed in this field
                                            and the ones selected by namespaceSelector.
                                            null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        topologyKey:
                                          description: |-
                                            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                            the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                            whose value of the label with key topologyKey matches that of any node on which any of the
                                            selected pods is running.
                                            Empty topologyKey is not allowed.
                                          type: string
                                      required:
                                      - topologyKey
                                      type: object
                                    weight:
                                      description: |-
                                        weight associated with matching the corresponding podAffinityTerm,
                                        in the range 1-100.
                                      format: int32
                                      type: integer
                                  required:
                                  - podAffinityTerm
                                  - weight
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              requiredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  If the affinity requirements specified by this field are not met at
                                  scheduling time, the pod will not be scheduled onto the node.
                                  If the affinity requirements specified by this field cease to be met
                                  at some point during pod execution (e.g. due to a pod label update), the
                                  system may or may not try to eventually evict the pod from its node.
                                  When there are multiple elements, the lists of nodes corresponding to each
                                  podAffinityTerm are intersected, i.e. all terms must be satisfied.
                                items:
                                  description: |-
                                    Defines a set of pods (namely those matching the labelSelector
                                    relative to the given namespace(s)) that this pod should be
                                    co-located (affinity) or not co-located (anti-affinity) with,
                                    where co-located is defined as running on a node whose value of
                                    the label with key <topologyKey> matches that of any node on which
                                    a pod of the set of pods is running
                                  properties:
                                    labelSelector:
                                      description: |-
                                        A label query over a set of resources, in this case pods.
                                        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.
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      description: |-
                                        MatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      description: |-
                                        MismatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      description: |-
                                        A label query over the set of namespaces that the term applies to.
                                        The term is applied to the union of the namespaces selected by this field
                                        and the ones listed in the namespaces field.
                                        null selector and null or empty namespaces list means "this pod's namespace".
                                        An empty selector ({}) matches all namespaces.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      description: |-
                                        namespaces specifies a static list of namespace names that the term applies to.
                                        The term is applied to the union of the namespaces listed in this field
                                        and the ones selected by namespaceSelector.
                                        null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      description: |-
                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                        whose value of the label with key topologyKey matches that of any node on which any of the
                                        selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                type: array
                                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)).
                            properties:
                              preferredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  The scheduler will prefer to schedule pods to nodes that satisfy
                                  the anti-affinity expressions specified by this field, but it may choose
                                  a node that violates one or more of the expressions. The node that is
                                  most preferred is the one with the greatest sum of weights, i.e.
                                  for each node that meets all of the scheduling requirements (resource
                                  request, requiredDuringScheduling anti-affinity expressions, etc.),
                                  compute a sum by iterating through the elements of this field and subtracting
                                  "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)
                                  properties:
                                    podAffinityTerm:
                                      description: Required. A pod affinity term, associated
                                        with the corresponding weight.
                                      properties:
                                        labelSelector:
                                          description: |-
                                            A label query over a set of resources, in this case pods.
                                            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.
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        matchLabelKeys:
                                          description: |-
                                            MatchLabelKeys is a set of pod label keys to select which pods will
                                            be taken into consideration. The keys are used to lookup values from the
                                            incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                            to select the group of existing pods which pods will be taken into consideration
                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                            pod labels will be ignored. The default value is empty.
                                            The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                            Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        mismatchLabelKeys:
                                          description: |-
                                            MismatchLabelKeys is a set of pod label keys to select which pods will
                                            be taken into consideration. The keys are used to lookup values from the
                                            incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                            to select the group of existing pods which pods will be taken into consideration
                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                            pod labels will be ignored. The default value is empty.
                                            The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                            Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        namespaceSelector:
                                          description: |-
                                            A label query over the set of namespaces that the term applies to.
                                            The term is applied to the union of the namespaces selected by this field
                                            and the ones listed in the namespaces field.
                                            null selector and null or empty namespaces list means "this pod's namespace".
                                            An empty selector ({}) matches all namespaces.
                                          properties:
                                            matchExpressions:
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        namespaces:
                                          description: |-
                                            namespaces specifies a static list of namespace names that the term applies to.
                                            The term is applied to the union of the namespaces listed in this field
                                            and the ones selected by namespaceSelector.
                                            null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        topologyKey:
                                          description: |-
                                            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                            the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                            whose value of the label with key topologyKey matches that of any node on which any of the
                                            selected pods is running.
                                            Empty topologyKey is not allowed.
                                          type: string
                                      required:
                                      - topologyKey
                                      type: object
                                    weight:
                                      description: |-
                                        weight associated with matching the corresponding podAffinityTerm,
                                        in the range 1-100.
                                      format: int32
                                      type: integer
                                  required:
                                  - podAffinityTerm
                                  - weight
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              requiredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  If the anti-affinity requirements specified by this field are not met at
                                  scheduling time, the pod will not be scheduled onto the node.
                                  If the anti-affinity requirements specified by this field cease to be met
                                  at some point during pod execution (e.g. due to a pod label update), the
                                  system may or may not try to eventually evict the pod from its node.
                                  When there are multiple elements, the lists of nodes corresponding to each
                                  podAffinityTerm are intersected, i.e. all terms must be satisfied.
                                items:
                                  description: |-
                                    Defines a set of pods (namely those matching the labelSelector
                                    relative to the given namespace(s)) that this pod should be
                                    co-located (affinity) or not co-located (anti-affinity) with,
                                    where co-located is defined as running on a node whose value of
                                    the label with key <topologyKey> matches that of any node on which
                                    a pod of the set of pods is running
                                  properties:
                                    labelSelector:
                                      description: |-
                                        A label query over a set of resources, in this case pods.
                                        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.
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      description: |-
                                        MatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      description: |-
                                        MismatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      description: |-
                                        A label query over the set of namespaces that the term applies to.
                                        The term is applied to the union of the namespaces selected by this field
                                        and the ones listed in the namespaces field.
                                        null selector and null or empty namespaces list means "this pod's namespace".
                                        An empty selector ({}) matches all namespaces.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      description: |-
                                        namespaces specifies a static list of namespace names that the term applies to.
                                        The term is applied to the union of the namespaces listed in this field
                                        and the ones selected by namespaceSelector.
                                        null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      description: |-
                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                        whose value of the label with key topologyKey matches that of any node on which any of the
                                        selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                            type: object
                        type: object
                      annotations:
                        additionalProperties:
                          type: string
                        description: Pod's annotations
                        type: object
                      deploymentStrategy:
                        description: |-
                          DeploymentStrategy describes how to replace existing pods with new ones
                          Default value is RollingUpdate with MaxUnavailable and MaxSurege as 25% (kubernetes default)
                        properties:
                          rollingUpdate:
                            description: |-
                              Rolling update config params. Present only if DeploymentStrategyType =
                              RollingUpdate.
                            properties:
                              maxSurge:
                                anyOf:
                                - type: integer
                                - type: string
                                description: |-
                                  The maximum number of pods that can be scheduled above the desired number of
                                  pods.
                                  Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
                                  This can not be 0 if MaxUnavailable is 0.
                                  Absolute number is calculated from percentage by rounding up.
                                  Defaults to 25%.
                                  Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when
                                  the rolling update starts, such that the total number of old and new pods do not exceed
                                  130% of desired pods. Once old pods have been killed,
                                  new ReplicaSet can be scaled up further, ensuring that total number of pods running
                                  at any time during the update is at most 130% of desired pods.
                                x-kubernetes-int-or-string: true
                              maxUnavailable:
                                anyOf:
                                - type: integer
                                - type: string
                                description: |-
                                  The maximum number of pods that can be unavailable during the update.
                                  Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
                                  Absolute number is calculated from percentage by rounding down.
                                  This can not be 0 if MaxSurge is 0.
                                  Defaults to 25%.
                                  Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods
                                  immediately when the rolling update starts. Once new pods are ready, old ReplicaSet
                                  can be scaled down further, followed by scaling up the new ReplicaSet, ensuring
                                  that the total number of pods available at all times during the update is at
                                  least 70% of desired pods.
                                x-kubernetes-int-or-string: true
                            type: object
                          type:
                            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
                        type: boolean
                      imagePullPolicy:
                        description: To indicate the image pull policy to be applied
                          to all the containers in the csi driver pods.
                        type: string
                      labels:
                        additionalProperties:
                          type: string
                        description: Pod's labels
                        type: object
                      priorityClassName:
                        description: Pod's user defined priority class name
                        type: string
                      privileged:
                        description: |-
                          To enable logrotation for csi pods,
                          Some platforms require controller plugin to run privileged,
                          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
                        format: int32
                        minimum: 1
                        type: integer
                      resources:
                        description: Resource requirements for controller plugin's containers
                        properties:
                          addons:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          attacher:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          liveness:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          logRotator:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          omapGenerator:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          plugin:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          provisioner:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          resizer:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          snapshotter:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                        type: object
                      serviceAccountName:
                        description: Service account name to be used for driver's pods
                        type: string
                      tolerations:
                        description: Pod's tolerations list
                        items:
                          description: |-
                            The pod this Toleration is attached to tolerates any taint that matches
                            the triple <key,value,effect> using the matching operator <operator>.
                          properties:
                            effect:
                              description: |-
                                Effect indicates the taint effect to match. Empty means match all taint effects.
                                When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
                              type: string
                            key:
                              description: |-
                                Key is the taint key that the toleration applies to. Empty means match all taint keys.
                                If the key is empty, operator must be Exists; this combination means to match all values and all keys.
                              type: string
                            operator:
                              description: |-
                                Operator represents a key's relationship to the value.
                                Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal.
                                Exists is equivalent to wildcard for value, so that a pod can
                                tolerate all taints of a particular category.
                                Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators).
                              type: string
                            tolerationSeconds:
                              description: |-
                                TolerationSeconds represents the period of time the toleration (which must be
                                of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
                                it is not set, which means tolerate the taint forever (do not evict). Zero and
                                negative values will be treated as 0 (evict immediately) by the system.
                              format: int64
                              type: integer
                            value:
                              description: |-
                                Value is the taint value the toleration matches to.
                                If the operator is Exists, the value should be empty, otherwise just a regular string.
                              type: string
                          type: object
                        type: array
                      volumes:
                        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.
                              properties:
                                mountPath:
                                  description: |-
                                    Path within the container at which the volume should be mounted.  Must
                                    not contain ':'.
                                  type: string
                                mountPropagation:
                                  description: |-
                                    mountPropagation determines how mounts are propagated from the host
                                    to container and the other way around.
                                    When not set, MountPropagationNone is used.
                                    This field is beta in 1.10.
                                    When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
                                    (which defaults to None).
                                  type: string
                                name:
                                  description: This must match the Name of a Volume.
                                  type: string
                                readOnly:
                                  description: |-
                                    Mounted read-only if true, read-write otherwise (false or unspecified).
                                    Defaults to false.
                                  type: boolean
                                recursiveReadOnly:
                                  description: |-
                                    RecursiveReadOnly specifies whether read-only mounts should be handled
                                    recursively.

                                    If ReadOnly is false, this field has no meaning and must be unspecified.

                                    If ReadOnly is true, and this field is set to Disabled, the mount is not made
                                    recursively read-only.  If this field is set to IfPossible, the mount is made
                                    recursively read-only, if it is supported by the container runtime.  If this
                                    field is set to Enabled, the mount is made recursively read-only if it is
                                    supported by the container runtime, otherwise the pod will not be started and
                                    an error will be generated to indicate the reason.

                                    If this field is set to IfPossible or Enabled, MountPropagation must be set to
                                    None (or be unspecified, which defaults to None).

                                    If this field is not specified, it is treated as an equivalent of Disabled.
                                  type: string
                                subPath:
                                  description: |-
                                    Path within the volume from which the container's volume should be mounted.
                                    Defaults to "" (volume's root).
                                  type: string
                                subPathExpr:
                                  description: |-
                                    Expanded path within the volume from which the container's volume should be mounted.
                                    Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
                                    Defaults to "" (volume's root).
                                    SubPathExpr and SubPath are mutually exclusive.
                                  type: string
                              required:
                              - mountPath
                              - name
                              type: object
                            volume:
                              description: Volume represents a named volume in a pod
                                that may be accessed by any container in the pod.
                              properties:
                                awsElasticBlockStore:
                                  description: |-
                                    awsElasticBlockStore represents an AWS Disk resource that is attached to a
                                    kubelet's host machine and then exposed to the pod.
                                    Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree
                                    awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type of the volume that you want to mount.
                                        Tip: Ensure that the filesystem type is supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                      type: string
                                    partition:
                                      description: |-
                                        partition is the partition in the volume that you want to mount.
                                        If omitted, the default is to mount by volume name.
                                        Examples: For volume /dev/sda1, you specify the partition as "1".
                                        Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
                                      format: int32
                                      type: integer
                                    readOnly:
                                      description: |-
                                        readOnly value true will force the readOnly setting in VolumeMounts.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                      type: boolean
                                    volumeID:
                                      description: |-
                                        volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                      type: string
                                  required:
                                  - volumeID
                                  type: object
                                azureDisk:
                                  description: |-
                                    azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
                                    Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type
                                    are redirected to the disk.csi.azure.com CSI driver.
                                  properties:
                                    cachingMode:
                                      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
                                      type: string
                                    diskURI:
                                      description: diskURI is the URI of data disk in
                                        the blob storage
                                      type: string
                                    fsType:
                                      default: ext4
                                      description: |-
                                        fsType is Filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        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'
                                      type: string
                                    readOnly:
                                      default: false
                                      description: |-
                                        readOnly Defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                  required:
                                  - diskName
                                  - diskURI
                                  type: object
                                azureFile:
                                  description: |-
                                    azureFile represents an Azure File Service mount on the host and bind mount to the pod.
                                    Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type
                                    are redirected to the file.csi.azure.com CSI driver.
                                  properties:
                                    readOnly:
                                      description: |-
                                        readOnly defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    secretName:
                                      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
                                      type: string
                                  required:
                                  - secretName
                                  - shareName
                                  type: object
                                cephfs:
                                  description: |-
                                    cephFS represents a Ceph FS mount on the host that shares a pod's lifetime.
                                    Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.
                                  properties:
                                    monitors:
                                      description: |-
                                        monitors is Required: Monitors is a collection of Ceph monitors
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      items:
                                        type: string
                                      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 /'
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      type: boolean
                                    secretFile:
                                      description: |-
                                        secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      type: string
                                    secretRef:
                                      description: |-
                                        secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    user:
                                      description: |-
                                        user is optional: User is the rados user name, default is admin
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      type: string
                                  required:
                                  - monitors
                                  type: object
                                cinder:
                                  description: |-
                                    cinder represents a cinder volume attached and mounted on kubelets host machine.
                                    Deprecated: Cinder is deprecated. All operations for the in-tree cinder type
                                    are redirected to the cinder.csi.openstack.org CSI driver.
                                    More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                        More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef is optional: points to a secret object containing parameters used to connect
                                        to OpenStack.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    volumeID:
                                      description: |-
                                        volumeID used to identify the volume in cinder.
                                        More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                      type: string
                                  required:
                                  - volumeID
                                  type: object
                                configMap:
                                  description: configMap represents a configMap that
                                    should populate this volume
                                  properties:
                                    defaultMode:
                                      description: |-
                                        defaultMode is optional: mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                        Defaults to 0644.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    items:
                                      description: |-
                                        items if unspecified, each key-value pair in the Data field of the referenced
                                        ConfigMap will be projected into the volume as a file whose name is the
                                        key and content is the value. If specified, the listed keys will be
                                        projected into the specified paths, and unlisted keys will not be
                                        present. If a key is specified which is not present in the ConfigMap,
                                        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.
                                        properties:
                                          key:
                                            description: key is the key to project.
                                            type: string
                                          mode:
                                            description: |-
                                              mode is Optional: mode bits used to set permissions on this file.
                                              Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                              YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                              If not specified, the volume defaultMode will be used.
                                              This might be in conflict with other options that affect the file
                                              mode, like fsGroup, and the result can be other mode bits set.
                                            format: int32
                                            type: integer
                                          path:
                                            description: |-
                                              path is the relative path of the file to map the key to.
                                              May not be an absolute path.
                                              May not contain the path element '..'.
                                              May not start with the string '..'.
                                            type: string
                                        required:
                                        - key
                                        - path
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        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
                                      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.
                                  properties:
                                    driver:
                                      description: |-
                                        driver is the name of the CSI driver that handles this volume.
                                        Consult with your admin for the correct name as registered in the cluster.
                                      type: string
                                    fsType:
                                      description: |-
                                        fsType to mount. Ex. "ext4", "xfs", "ntfs".
                                        If not provided, the empty value is passed to the associated CSI driver
                                        which will determine the default filesystem to apply.
                                      type: string
                                    nodePublishSecretRef:
                                      description: |-
                                        nodePublishSecretRef is a reference to the secret object containing
                                        sensitive information to pass to the CSI driver to complete the CSI
                                        NodePublishVolume and NodeUnpublishVolume calls.
                                        This field is optional, and  may be empty if no secret is required. If the
                                        secret object contains more than one secret, all secret references are passed.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    readOnly:
                                      description: |-
                                        readOnly specifies a read-only configuration for the volume.
                                        Defaults to false (read/write).
                                      type: boolean
                                    volumeAttributes:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        volumeAttributes stores driver-specific properties that are passed to the CSI
                                        driver. Consult your driver's documentation for supported values.
                                      type: object
                                  required:
                                  - driver
                                  type: object
                                downwardAPI:
                                  description: downwardAPI represents downward API about
                                    the pod that should populate this volume
                                  properties:
                                    defaultMode:
                                      description: |-
                                        Optional: mode bits to use on created files by default. Must be a
                                        Optional: mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                        Defaults to 0644.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    items:
                                      description: Items is a list of downward API volume
                                        file
                                      items:
                                        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.'
                                            properties:
                                              apiVersion:
                                                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.
                                                type: string
                                            required:
                                            - fieldPath
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          mode:
                                            description: |-
                                              Optional: mode bits used to set permissions on this file, must be an octal value
                                              between 0000 and 0777 or a decimal value between 0 and 511.
                                              YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                              If not specified, the volume defaultMode will be used.
                                              This might be in conflict with other options that affect the file
                                              mode, like fsGroup, and the result can be other mode bits set.
                                            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 ''..'''
                                            type: string
                                          resourceFieldRef:
                                            description: |-
                                              Selects a resource of the container: only resources limits and requests
                                              (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                            properties:
                                              containerName:
                                                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"
                                                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'
                                                type: string
                                            required:
                                            - resource
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        required:
                                        - path
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                emptyDir:
                                  description: |-
                                    emptyDir represents a temporary directory that shares a pod's lifetime.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                  properties:
                                    medium:
                                      description: |-
                                        medium represents what type of storage medium should back this directory.
                                        The default is "" which means to use the node's default medium.
                                        Must be an empty string (default) or Memory.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                      type: string
                                    sizeLimit:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      description: |-
                                        sizeLimit is the total amount of local storage required for this EmptyDir volume.
                                        The size limit is also applicable for memory medium.
                                        The maximum usage on memory medium EmptyDir would be the minimum value between
                                        the SizeLimit specified here and the sum of memory limits of all containers in a pod.
                                        The default is nil which means that the limit is undefined.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                  type: object
                                ephemeral:
                                  description: |-
                                    ephemeral represents a volume that is handled by a cluster storage driver.
                                    The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
                                    and deleted when the pod is removed.

                                    Use this if:
                                    a) the volume is only needed while the pod runs,
                                    b) features of normal volumes like restoring from snapshot or capacity
                                       tracking are needed,
                                    c) the storage driver is specified through a storage class, and
                                    d) the storage driver supports dynamic volume provisioning through
                                       a PersistentVolumeClaim (see EphemeralVolumeSource for more
                                       information on the connection between this volume type
                                       and PersistentVolumeClaim).

                                    Use PersistentVolumeClaim or one of the vendor-specific
                                    APIs for volumes that persist for longer than the lifecycle
                                    of an individual pod.

                                    Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
                                    be used that way - see the documentation of the driver for
                                    more information.

                                    A pod can use both types of ephemeral volumes and
                                    persistent volumes at the same time.
                                  properties:
                                    volumeClaimTemplate:
                                      description: |-
                                        Will be used to create a stand-alone PVC to provision the volume.
                                        The pod in which this EphemeralVolumeSource is embedded will be the
                                        owner of the PVC, i.e. the PVC will be deleted together with the
                                        pod.  The name of the PVC will be `<pod name>-<volume name>` where
                                        `<volume name>` is the name from the `PodSpec.Volumes` array
                                        entry. Pod validation will reject the pod if the concatenated name
                                        is not valid for a PVC (for example, too long).

                                        An existing PVC with that name that is not owned by the pod
                                        will *not* be used for the pod to avoid using an unrelated
                                        volume by mistake. Starting the pod is then blocked until
                                        the unrelated PVC is removed. If such a pre-created PVC is
                                        meant to be used by the pod, the PVC has to updated with an
                                        owner reference to the pod once the pod exists. Normally
                                        this should not be necessary, but it may be useful when
                                        manually reconstructing a broken cluster.

                                        This field is read-only and no changes will be made by Kubernetes
                                        to the PVC after it has been created.

                                        Required, must not be nil.
                                      properties:
                                        metadata:
                                          description: |-
                                            May contain labels and annotations that will be copied into the PVC
                                            when creating it. No other fields are allowed and will be rejected during
                                            validation.
                                          type: object
                                        spec:
                                          description: |-
                                            The specification for the PersistentVolumeClaim. The entire content is
                                            copied unchanged into the PVC that gets created from this
                                            template. The same fields as in a PersistentVolumeClaim
                                            are also valid here.
                                          properties:
                                            accessModes:
                                              description: |-
                                                accessModes contains the desired access modes the volume should have.
                                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            dataSource:
                                              description: |-
                                                dataSource field can be used to specify either:
                                                * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
                                                * An existing PVC (PersistentVolumeClaim)
                                                If the provisioner or an external controller can support the specified data source,
                                                it will create a new volume based on the contents of the specified data source.
                                                When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
                                                and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
                                                If the namespace is specified, then dataSourceRef will not be copied to dataSource.
                                              properties:
                                                apiGroup:
                                                  description: |-
                                                    APIGroup is the group for the resource being referenced.
                                                    If APIGroup is not specified, the specified Kind must be in the core API group.
                                                    For any other third-party types, APIGroup is required.
                                                  type: string
                                                kind:
                                                  description: Kind is the type of resource
                                                    being referenced
                                                  type: string
                                                name:
                                                  description: Name is the name of resource
                                                    being referenced
                                                  type: string
                                              required:
                                              - kind
                                              - name
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            dataSourceRef:
                                              description: |-
                                                dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
                                                volume is desired. This may be any object from a non-empty API group (non
                                                core object) or a PersistentVolumeClaim object.
                                                When this field is specified, volume binding will only succeed if the type of
                                                the specified object matches some installed volume populator or dynamic
                                                provisioner.
                                                This field will replace the functionality of the dataSource field and as such
                                                if both fields are non-empty, they must have the same value. For backwards
                                                compatibility, when namespace isn't specified in dataSourceRef,
                                                both fields (dataSource and dataSourceRef) will be set to the same
                                                value automatically if one of them is empty and the other is non-empty.
                                                When namespace is specified in dataSourceRef,
                                                dataSource isn't set to the same value and must be empty.
                                                There are three important differences between dataSource and dataSourceRef:
                                                * While dataSource only allows two specific types of objects, dataSourceRef
                                                  allows any non-core object, as well as PersistentVolumeClaim objects.
                                                * While dataSource ignores disallowed values (dropping them), dataSourceRef
                                                  preserves all values, and generates an error if a disallowed value is
                                                  specified.
                                                * While dataSource only allows local objects, dataSourceRef allows objects
                                                  in any namespaces.
                                                (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
                                                (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                              properties:
                                                apiGroup:
                                                  description: |-
                                                    APIGroup is the group for the resource being referenced.
                                                    If APIGroup is not specified, the specified Kind must be in the core API group.
                                                    For any other third-party types, APIGroup is required.
                                                  type: string
                                                kind:
                                                  description: Kind is the type of resource
                                                    being referenced
                                                  type: string
                                                name:
                                                  description: Name is the name of resource
                                                    being referenced
                                                  type: string
                                                namespace:
                                                  description: |-
                                                    Namespace is the namespace of resource being referenced
                                                    Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
                                                    (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                                  type: string
                                              required:
                                              - kind
                                              - name
                                              type: object
                                            resources:
                                              description: |-
                                                resources represents the minimum resources the volume should have.
                                                Users are allowed to specify resource requirements
                                                that are lower than previous value but must still be higher than capacity recorded in the
                                                status field of the claim.
                                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
                                              properties:
                                                limits:
                                                  additionalProperties:
                                                    anyOf:
                                                    - type: integer
                                                    - type: string
                                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                    x-kubernetes-int-or-string: true
                                                  description: |-
                                                    Limits describes the maximum amount of compute resources allowed.
                                                    More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                                  type: object
                                                requests:
                                                  additionalProperties:
                                                    anyOf:
                                                    - type: integer
                                                    - type: string
                                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                    x-kubernetes-int-or-string: true
                                                  description: |-
                                                    Requests describes the minimum amount of compute resources required.
                                                    If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                                    otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                                    More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                                  type: object
                                              type: object
                                            selector:
                                              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.
                                                  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.
                                                        type: string
                                                      operator:
                                                        description: |-
                                                          operator represents a key's relationship to a set of values.
                                                          Valid operators are In, NotIn, Exists and DoesNotExist.
                                                        type: string
                                                      values:
                                                        description: |-
                                                          values is an array of string values. If the operator is In or NotIn,
                                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                          the values array must be empty. This array is replaced during a strategic
                                                          merge patch.
                                                        items:
                                                          type: string
                                                        type: array
                                                        x-kubernetes-list-type: atomic
                                                    required:
                                                    - key
                                                    - operator
                                                    type: object
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                                matchLabels:
                                                  additionalProperties:
                                                    type: string
                                                  description: |-
                                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                    map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                    operator is "In", and the values array contains only "value". The requirements are ANDed.
                                                  type: object
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            storageClassName:
                                              description: |-
                                                storageClassName is the name of the StorageClass required by the claim.
                                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
                                              type: string
                                            volumeAttributesClassName:
                                              description: |-
                                                volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
                                                If specified, the CSI driver will create or update the volume with the attributes defined
                                                in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
                                                it can be changed after the claim is created. An empty string or nil value indicates that no
                                                VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
                                                this field can be reset to its previous value (including nil) to cancel the modification.
                                                If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
                                                set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
                                                exists.
                                                More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
                                              type: string
                                            volumeMode:
                                              description: |-
                                                volumeMode defines what type of volume is required by the claim.
                                                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.
                                              type: string
                                          type: object
                                      required:
                                      - 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.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                      type: string
                                    lun:
                                      description: 'lun is Optional: FC target lun number'
                                      format: int32
                                      type: integer
                                    readOnly:
                                      description: |-
                                        readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    targetWWNs:
                                      description: 'targetWWNs is Optional: FC target
                                        worldwide names (WWNs)'
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    wwids:
                                      description: |-
                                        wwids Optional: FC volume world wide identifiers (wwids)
                                        Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                flexVolume:
                                  description: |-
                                    flexVolume represents a generic volume resource that is
                                    provisioned/attached using an exec based plugin.
                                    Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead.
                                  properties:
                                    driver:
                                      description: driver is the name of the driver
                                        to use for this volume.
                                      type: string
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
                                      type: string
                                    options:
                                      additionalProperties:
                                        type: string
                                      description: 'options is Optional: this field
                                        holds extra command options if any.'
                                      type: object
                                    readOnly:
                                      description: |-
                                        readOnly is Optional: defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef is Optional: secretRef is reference to the secret object containing
                                        sensitive information to pass to the plugin scripts. This may be
                                        empty if no secret object is specified. If the secret object
                                        contains more than one secret, all secrets are passed to the plugin
                                        scripts.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  required:
                                  - driver
                                  type: object
                                flocker:
                                  description: |-
                                    flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running.
                                    Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported.
                                  properties:
                                    datasetName:
                                      description: |-
                                        datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker
                                        should be considered as deprecated
                                      type: string
                                    datasetUUID:
                                      description: datasetUUID is the UUID of the dataset.
                                        This is unique identifier of a Flocker dataset
                                      type: string
                                  type: object
                                gcePersistentDisk:
                                  description: |-
                                    gcePersistentDisk represents a GCE Disk resource that is attached to a
                                    kubelet's host machine and then exposed to the pod.
                                    Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree
                                    gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is filesystem type of the volume that you want to mount.
                                        Tip: Ensure that the filesystem type is supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                      type: string
                                    partition:
                                      description: |-
                                        partition is the partition in the volume that you want to mount.
                                        If omitted, the default is to mount by volume name.
                                        Examples: For volume /dev/sda1, you specify the partition as "1".
                                        Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                      format: int32
                                      type: integer
                                    pdName:
                                      description: |-
                                        pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the ReadOnly setting in VolumeMounts.
                                        Defaults to false.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                      type: boolean
                                  required:
                                  - pdName
                                  type: object
                                gitRepo:
                                  description: |-
                                    gitRepo represents a git repository at a particular revision.
                                    Deprecated: GitRepo is deprecated. To provision a container with a git repo, mount an
                                    EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
                                    into the Pod's container.
                                  properties:
                                    directory:
                                      description: |-
                                        directory is the target directory name.
                                        Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
                                        git repository.  Otherwise, if specified, the volume will contain the git repository in
                                        the subdirectory with the given name.
                                      type: string
                                    repository:
                                      description: repository is the URL
                                      type: string
                                    revision:
                                      description: revision is the commit hash for the
                                        specified revision.
                                      type: string
                                  required:
                                  - repository
                                  type: object
                                glusterfs:
                                  description: |-
                                    glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
                                    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.
                                      type: string
                                    path:
                                      description: |-
                                        path is the Glusterfs volume path.
                                        More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
                                        Defaults to false.
                                        More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                      type: boolean
                                  required:
                                  - endpoints
                                  - path
                                  type: object
                                hostPath:
                                  description: |-
                                    hostPath represents a pre-existing file or directory on the host
                                    machine that is directly exposed to the container. This is generally
                                    used for system agents or other privileged things that are allowed
                                    to see the host machine. Most containers will NOT need this.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                  properties:
                                    path:
                                      description: |-
                                        path of the directory on the host.
                                        If the path is a symlink, it will follow the link to the real path.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                      type: string
                                    type:
                                      description: |-
                                        type for HostPath Volume
                                        Defaults to ""
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                      type: string
                                  required:
                                  - path
                                  type: object
                                image:
                                  description: |-
                                    image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine.
                                    The volume is resolved at pod startup depending on which PullPolicy value is provided:

                                    - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
                                    - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
                                    - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.

                                    The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation.
                                    A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message.
                                    The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field.
                                    The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images.
                                    The volume will be mounted read-only (ro) and non-executable files (noexec).
                                    Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath) before 1.33.
                                    The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type.
                                  properties:
                                    pullPolicy:
                                      description: |-
                                        Policy for pulling OCI objects. Possible values are:
                                        Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
                                        Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
                                        IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.
                                        Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
                                      type: string
                                    reference:
                                      description: |-
                                        Required: Image or artifact reference to be used.
                                        Behaves in the same way as pod.spec.containers[*].image.
                                        Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets.
                                        More info: https://kubernetes.io/docs/concepts/containers/images
                                        This field is optional to allow higher level config management to default or override
                                        container images in workload controllers like Deployments and StatefulSets.
                                      type: string
                                  type: object
                                iscsi:
                                  description: |-
                                    iscsi represents an ISCSI Disk resource that is attached to a
                                    kubelet's host machine and then exposed to the pod.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi
                                  properties:
                                    chapAuthDiscovery:
                                      description: chapAuthDiscovery defines whether
                                        support iSCSI Discovery CHAP authentication
                                      type: boolean
                                    chapAuthSession:
                                      description: chapAuthSession defines whether support
                                        iSCSI Session CHAP authentication
                                      type: boolean
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type of the volume that you want to mount.
                                        Tip: Ensure that the filesystem type is supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
                                      type: string
                                    initiatorName:
                                      description: |-
                                        initiatorName is the custom iSCSI Initiator Name.
                                        If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
                                        <target portal>:<volume name> will be created for the connection.
                                      type: string
                                    iqn:
                                      description: iqn is the target iSCSI Qualified
                                        Name.
                                      type: string
                                    iscsiInterface:
                                      default: default
                                      description: |-
                                        iscsiInterface is the interface Name that uses an iSCSI transport.
                                        Defaults to 'default' (tcp).
                                      type: string
                                    lun:
                                      description: lun represents iSCSI Target Lun number.
                                      format: int32
                                      type: integer
                                    portals:
                                      description: |-
                                        portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
                                        is other than default (typically TCP ports 860 and 3260).
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    readOnly:
                                      description: |-
                                        readOnly here will force the ReadOnly setting in VolumeMounts.
                                        Defaults to false.
                                      type: boolean
                                    secretRef:
                                      description: secretRef is the CHAP Secret for
                                        iSCSI target and initiator authentication
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    targetPortal:
                                      description: |-
                                        targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
                                        is other than default (typically TCP ports 860 and 3260).
                                      type: string
                                  required:
                                  - iqn
                                  - lun
                                  - targetPortal
                                  type: object
                                name:
                                  description: |-
                                    name of the volume.
                                    Must be a DNS_LABEL and unique within the pod.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                nfs:
                                  description: |-
                                    nfs represents an NFS mount on the host that shares a pod's lifetime
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                  properties:
                                    path:
                                      description: |-
                                        path that is exported by the NFS server.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the NFS export to be mounted with read-only permissions.
                                        Defaults to false.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                      type: boolean
                                    server:
                                      description: |-
                                        server is the hostname or IP address of the NFS server.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                      type: string
                                  required:
                                  - path
                                  - server
                                  type: object
                                persistentVolumeClaim:
                                  description: |-
                                    persistentVolumeClaimVolumeSource represents a reference to a
                                    PersistentVolumeClaim in the same namespace.
                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                  properties:
                                    claimName:
                                      description: |-
                                        claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
                                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly Will force the ReadOnly setting in VolumeMounts.
                                        Default false.
                                      type: boolean
                                  required:
                                  - claimName
                                  type: object
                                photonPersistentDisk:
                                  description: |-
                                    photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine.
                                    Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        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
                                      type: string
                                  required:
                                  - pdID
                                  type: object
                                portworxVolume:
                                  description: |-
                                    portworxVolume represents a portworx volume attached and mounted on kubelets host machine.
                                    Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type
                                    are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate
                                    is on.
                                  properties:
                                    fsType:
                                      description: |-
                                        fSType represents the filesystem type to mount
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    volumeID:
                                      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
                                  properties:
                                    defaultMode:
                                      description: |-
                                        defaultMode are the mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    sources:
                                      description: |-
                                        sources is the list of volume projections. Each entry in this list
                                        handles one source.
                                      items:
                                        description: |-
                                          Projection that may be projected along with other supported volume types.
                                          Exactly one of these fields must be set.
                                        properties:
                                          clusterTrustBundle:
                                            description: |-
                                              ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
                                              of ClusterTrustBundle objects in an auto-updating file.

                                              Alpha, gated by the ClusterTrustBundleProjection feature gate.

                                              ClusterTrustBundle objects can either be selected by name, or by the
                                              combination of signer name and a label selector.

                                              Kubelet performs aggressive normalization of the PEM contents written
                                              into the pod filesystem.  Esoteric PEM features such as inter-block
                                              comments and block headers are stripped.  Certificates are deduplicated.
                                              The ordering of certificates within the file is arbitrary, and Kubelet
                                              may change the order over time.
                                            properties:
                                              labelSelector:
                                                description: |-
                                                  Select all ClusterTrustBundles that match this label selector.  Only has
                                                  effect if signerName is set.  Mutually-exclusive with name.  If unset,
                                                  interpreted as "match nothing".  If set but empty, interpreted as "match
                                                  everything".
                                                properties:
                                                  matchExpressions:
                                                    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.
                                                          type: string
                                                        operator:
                                                          description: |-
                                                            operator represents a key's relationship to a set of values.
                                                            Valid operators are In, NotIn, Exists and DoesNotExist.
                                                          type: string
                                                        values:
                                                          description: |-
                                                            values is an array of string values. If the operator is In or NotIn,
                                                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                            the values array must be empty. This array is replaced during a strategic
                                                            merge patch.
                                                          items:
                                                            type: string
                                                          type: array
                                                          x-kubernetes-list-type: atomic
                                                      required:
                                                      - key
                                                      - operator
                                                      type: object
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                  matchLabels:
                                                    additionalProperties:
                                                      type: string
                                                    description: |-
                                                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                                                    type: object
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              name:
                                                description: |-
                                                  Select a single ClusterTrustBundle by object name.  Mutually-exclusive
                                                  with signerName and labelSelector.
                                                type: string
                                              optional:
                                                description: |-
                                                  If true, don't block pod startup if the referenced ClusterTrustBundle(s)
                                                  aren't available.  If using name, then the named ClusterTrustBundle is
                                                  allowed not to exist.  If using signerName, then the combination of
                                                  signerName and labelSelector is allowed to match zero
                                                  ClusterTrustBundles.
                                                type: boolean
                                              path:
                                                description: Relative path from the
                                                  volume root to write the bundle.
                                                type: string
                                              signerName:
                                                description: |-
                                                  Select all ClusterTrustBundles that match this signer name.
                                                  Mutually-exclusive with name.  The contents of all selected
                                                  ClusterTrustBundles will be unified and deduplicated.
                                                type: string
                                            required:
                                            - path
                                            type: object
                                          configMap:
                                            description: configMap information about
                                              the configMap data to project
                                            properties:
                                              items:
                                                description: |-
                                                  items if unspecified, each key-value pair in the Data field of the referenced
                                                  ConfigMap will be projected into the volume as a file whose name is the
                                                  key and content is the value. If specified, the listed keys will be
                                                  projected into the specified paths, and unlisted keys will not be
                                                  present. If a key is specified which is not present in the ConfigMap,
                                                  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.
                                                  properties:
                                                    key:
                                                      description: key is the key to
                                                        project.
                                                      type: string
                                                    mode:
                                                      description: |-
                                                        mode is Optional: mode bits used to set permissions on this file.
                                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                        If not specified, the volume defaultMode will be used.
                                                        This might be in conflict with other options that affect the file
                                                        mode, like fsGroup, and the result can be other mode bits set.
                                                      format: int32
                                                      type: integer
                                                    path:
                                                      description: |-
                                                        path is the relative path of the file to map the key to.
                                                        May not be an absolute path.
                                                        May not contain the path element '..'.
                                                        May not start with the string '..'.
                                                      type: string
                                                  required:
                                                  - key
                                                  - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  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
                                                type: boolean
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          downwardAPI:
                                            description: downwardAPI information about
                                              the downwardAPI data to project
                                            properties:
                                              items:
                                                description: Items is a list of DownwardAPIVolume
                                                  file
                                                items:
                                                  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.'
                                                      properties:
                                                        apiVersion:
                                                          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.
                                                          type: string
                                                      required:
                                                      - fieldPath
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                    mode:
                                                      description: |-
                                                        Optional: mode bits used to set permissions on this file, must be an octal value
                                                        between 0000 and 0777 or a decimal value between 0 and 511.
                                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                        If not specified, the volume defaultMode will be used.
                                                        This might be in conflict with other options that affect the file
                                                        mode, like fsGroup, and the result can be other mode bits set.
                                                      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 ''..'''
                                                      type: string
                                                    resourceFieldRef:
                                                      description: |-
                                                        Selects a resource of the container: only resources limits and requests
                                                        (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                                      properties:
                                                        containerName:
                                                          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"
                                                          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'
                                                          type: string
                                                      required:
                                                      - resource
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                  required:
                                                  - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            type: object
                                          podCertificate:
                                            description: |-
                                              Projects an auto-rotating credential bundle (private key and certificate
                                              chain) that the pod can use either as a TLS client or server.

                                              Kubelet generates a private key and uses it to send a
                                              PodCertificateRequest to the named signer.  Once the signer approves the
                                              request and issues a certificate chain, Kubelet writes the key and
                                              certificate chain to the pod filesystem.  The pod does not start until
                                              certificates have been issued for each podCertificate projected volume
                                              source in its spec.

                                              Kubelet will begin trying to rotate the certificate at the time indicated
                                              by the signer using the PodCertificateRequest.Status.BeginRefreshAt
                                              timestamp.

                                              Kubelet can write a single file, indicated by the credentialBundlePath
                                              field, or separate files, indicated by the keyPath and
                                              certificateChainPath fields.

                                              The credential bundle is a single file in PEM format.  The first PEM
                                              entry is the private key (in PKCS#8 format), and the remaining PEM
                                              entries are the certificate chain issued by the signer (typically,
                                              signers will return their certificate chain in leaf-to-root order).

                                              Prefer using the credential bundle format, since your application code
                                              can read it atomically.  If you use keyPath and certificateChainPath,
                                              your application must make two separate file reads. If these coincide
                                              with a certificate rotation, it is possible that the private key and leaf
                                              certificate you read may not correspond to each other.  Your application
                                              will need to check for this condition, and re-read until they are
                                              consistent.

                                              The named signer controls chooses the format of the certificate it
                                              issues; consult the signer implementation's documentation to learn how to
                                              use the certificates it issues.
                                            properties:
                                              certificateChainPath:
                                                description: |-
                                                  Write the certificate chain at this path in the projected volume.

                                                  Most applications should use credentialBundlePath.  When using keyPath
                                                  and certificateChainPath, your application needs to check that the key
                                                  and leaf certificate are consistent, because it is possible to read the
                                                  files mid-rotation.
                                                type: string
                                              credentialBundlePath:
                                                description: |-
                                                  Write the credential bundle at this path in the projected volume.

                                                  The credential bundle is a single file that contains multiple PEM blocks.
                                                  The first PEM block is a PRIVATE KEY block, containing a PKCS#8 private
                                                  key.

                                                  The remaining blocks are CERTIFICATE blocks, containing the issued
                                                  certificate chain from the signer (leaf and any intermediates).

                                                  Using credentialBundlePath lets your Pod's application code make a single
                                                  atomic read that retrieves a consistent key and certificate chain.  If you
                                                  project them to separate files, your application code will need to
                                                  additionally check that the leaf certificate was issued to the key.
                                                type: string
                                              keyPath:
                                                description: |-
                                                  Write the key at this path in the projected volume.

                                                  Most applications should use credentialBundlePath.  When using keyPath
                                                  and certificateChainPath, your application needs to check that the key
                                                  and leaf certificate are consistent, because it is possible to read the
                                                  files mid-rotation.
                                                type: string
                                              keyType:
                                                description: |-
                                                  The type of keypair Kubelet will generate for the pod.

                                                  Valid values are "RSA3072", "RSA4096", "ECDSAP256", "ECDSAP384",
                                                  "ECDSAP521", and "ED25519".
                                                type: string
                                              maxExpirationSeconds:
                                                description: |-
                                                  maxExpirationSeconds is the maximum lifetime permitted for the
                                                  certificate.

                                                  Kubelet copies this value verbatim into the PodCertificateRequests it
                                                  generates for this projection.

                                                  If omitted, kube-apiserver will set it to 86400(24 hours). kube-apiserver
                                                  will reject values shorter than 3600 (1 hour).  The maximum allowable
                                                  value is 7862400 (91 days).

                                                  The signer implementation is then free to issue a certificate with any
                                                  lifetime *shorter* than MaxExpirationSeconds, but no shorter than 3600
                                                  seconds (1 hour).  This constraint is enforced by kube-apiserver.
                                                  `kubernetes.io` signers will never issue certificates with a lifetime
                                                  longer than 24 hours.
                                                format: int32
                                                type: integer
                                              signerName:
                                                description: Kubelet's generated CSRs
                                                  will be addressed to this signer.
                                                type: string
                                              userAnnotations:
                                                additionalProperties:
                                                  type: string
                                                description: |-
                                                  userAnnotations allow pod authors to pass additional information to
                                                  the signer implementation.  Kubernetes does not restrict or validate this
                                                  metadata in any way.

                                                  These values are copied verbatim into the `spec.unverifiedUserAnnotations` field of
                                                  the PodCertificateRequest objects that Kubelet creates.

                                                  Entries are subject to the same validation as object metadata annotations,
                                                  with the addition that all keys must be domain-prefixed. No restrictions
                                                  are placed on values, except an overall size limitation on the entire field.

                                                  Signers should document the keys and values they support. Signers should
                                                  deny requests that contain keys they do not recognize.
                                                type: object
                                            required:
                                            - keyType
                                            - signerName
                                            type: object
                                          secret:
                                            description: secret information about the
                                              secret data to project
                                            properties:
                                              items:
                                                description: |-
                                                  items if unspecified, each key-value pair in the Data field of the referenced
                                                  Secret will be projected into the volume as a file whose name is the
                                                  key and content is the value. If specified, the listed keys will be
                                                  projected into the specified paths, and unlisted keys will not be
                                                  present. If a key is specified which is not present in the Secret,
                                                  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.
                                                  properties:
                                                    key:
                                                      description: key is the key to
                                                        project.
                                                      type: string
                                                    mode:
                                                      description: |-
                                                        mode is Optional: mode bits used to set permissions on this file.
                                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                        If not specified, the volume defaultMode will be used.
                                                        This might be in conflict with other options that affect the file
                                                        mode, like fsGroup, and the result can be other mode bits set.
                                                      format: int32
                                                      type: integer
                                                    path:
                                                      description: |-
                                                        path is the relative path of the file to map the key to.
                                                        May not be an absolute path.
                                                        May not contain the path element '..'.
                                                        May not start with the string '..'.
                                                      type: string
                                                  required:
                                                  - key
                                                  - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  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
                                                type: boolean
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          serviceAccountToken:
                                            description: serviceAccountToken is information
                                              about the serviceAccountToken data to
                                              project
                                            properties:
                                              audience:
                                                description: |-
                                                  audience is the intended audience of the token. A recipient of a token
                                                  must identify itself with an identifier specified in the audience of the
                                                  token, and otherwise should reject the token. The audience defaults to the
                                                  identifier of the apiserver.
                                                type: string
                                              expirationSeconds:
                                                description: |-
                                                  expirationSeconds is the requested duration of validity of the service
                                                  account token. As the token approaches expiration, the kubelet volume
                                                  plugin will proactively rotate the service account token. The kubelet will
                                                  start trying to rotate the token if the token is older than 80 percent of
                                                  its time to live or if the token is older than 24 hours.Defaults to 1 hour
                                                  and must be at least 10 minutes.
                                                format: int64
                                                type: integer
                                              path:
                                                description: |-
                                                  path is the path relative to the mount point of the file to project the
                                                  token into.
                                                type: string
                                            required:
                                            - path
                                            type: object
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                quobyte:
                                  description: |-
                                    quobyte represents a Quobyte mount on the host that shares a pod's lifetime.
                                    Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.
                                  properties:
                                    group:
                                      description: |-
                                        group to map volume access to
                                        Default is no group
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the Quobyte volume to be mounted with read-only permissions.
                                        Defaults to false.
                                      type: boolean
                                    registry:
                                      description: |-
                                        registry represents a single or multiple Quobyte Registry services
                                        specified as a string as host:port pair (multiple entries are separated with commas)
                                        which acts as the central registry for volumes
                                      type: string
                                    tenant:
                                      description: |-
                                        tenant owning the given Quobyte volume in the Backend
                                        Used with dynamically provisioned Quobyte volumes, value is set by the plugin
                                      type: string
                                    user:
                                      description: |-
                                        user to map volume access to
                                        Defaults to serivceaccount user
                                      type: string
                                    volume:
                                      description: volume is a string that references
                                        an already created Quobyte volume by name.
                                      type: string
                                  required:
                                  - registry
                                  - volume
                                  type: object
                                rbd:
                                  description: |-
                                    rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
                                    Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type of the volume that you want to mount.
                                        Tip: Ensure that the filesystem type is supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
                                      type: string
                                    image:
                                      description: |-
                                        image is the rados image name.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: string
                                    keyring:
                                      default: /etc/ceph/keyring
                                      description: |-
                                        keyring is the path to key ring for RBDUser.
                                        Default is /etc/ceph/keyring.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: string
                                    monitors:
                                      description: |-
                                        monitors is a collection of Ceph monitors.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    pool:
                                      default: rbd
                                      description: |-
                                        pool is the rados pool name.
                                        Default is rbd.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the ReadOnly setting in VolumeMounts.
                                        Defaults to false.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef is name of the authentication secret for RBDUser. If provided
                                        overrides keyring.
                                        Default is nil.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    user:
                                      default: admin
                                      description: |-
                                        user is the rados user name.
                                        Default is admin.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: string
                                  required:
                                  - image
                                  - monitors
                                  type: object
                                scaleIO:
                                  description: |-
                                    scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
                                    Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.
                                  properties:
                                    fsType:
                                      default: xfs
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs", "ntfs".
                                        Default is "xfs".
                                      type: string
                                    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.
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly Defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef references to the secret for ScaleIO user and other
                                        sensitive information. If this is not provided, Login operation will fail.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    sslEnabled:
                                      description: sslEnabled Flag enable/disable SSL
                                        communication with Gateway, default false
                                      type: boolean
                                    storageMode:
                                      default: ThinProvisioned
                                      description: |-
                                        storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
                                        Default is ThinProvisioned.
                                      type: string
                                    storagePool:
                                      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.
                                      type: string
                                    volumeName:
                                      description: |-
                                        volumeName is the name of a volume already created in the ScaleIO system
                                        that is associated with this volume source.
                                      type: string
                                  required:
                                  - gateway
                                  - secretRef
                                  - system
                                  type: object
                                secret:
                                  description: |-
                                    secret represents a secret that should populate this volume.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                                  properties:
                                    defaultMode:
                                      description: |-
                                        defaultMode is Optional: mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values
                                        for mode bits. Defaults to 0644.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    items:
                                      description: |-
                                        items If unspecified, each key-value pair in the Data field of the referenced
                                        Secret will be projected into the volume as a file whose name is the
                                        key and content is the value. If specified, the listed keys will be
                                        projected into the specified paths, and unlisted keys will not be
                                        present. If a key is specified which is not present in the Secret,
                                        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.
                                        properties:
                                          key:
                                            description: key is the key to project.
                                            type: string
                                          mode:
                                            description: |-
                                              mode is Optional: mode bits used to set permissions on this file.
                                              Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                              YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                              If not specified, the volume defaultMode will be used.
                                              This might be in conflict with other options that affect the file
                                              mode, like fsGroup, and the result can be other mode bits set.
                                            format: int32
                                            type: integer
                                          path:
                                            description: |-
                                              path is the relative path of the file to map the key to.
                                              May not be an absolute path.
                                              May not contain the path element '..'.
                                              May not start with the string '..'.
                                            type: string
                                        required:
                                        - key
                                        - path
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    optional:
                                      description: optional field specify whether the
                                        Secret or its keys must be defined
                                      type: boolean
                                    secretName:
                                      description: |-
                                        secretName is the name of the secret in the pod's namespace to use.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                                      type: string
                                  type: object
                                storageos:
                                  description: |-
                                    storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
                                    Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef specifies the secret to use for obtaining the StorageOS API
                                        credentials.  If not specified, default values will be attempted.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    volumeName:
                                      description: |-
                                        volumeName is the human-readable name of the StorageOS volume.  Volume
                                        names are only unique within a namespace.
                                      type: string
                                    volumeNamespace:
                                      description: |-
                                        volumeNamespace specifies the scope of the volume within StorageOS.  If no
                                        namespace is specified then the Pod's namespace will be used.  This allows the
                                        Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
                                        Set VolumeName to any name to override the default behaviour.
                                        Set to "default" if you are not using namespaces within StorageOS.
                                        Namespaces that do not pre-exist within StorageOS will be created.
                                      type: string
                                  type: object
                                vsphereVolume:
                                  description: |-
                                    vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine.
                                    Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type
                                    are redirected to the csi.vsphere.vmware.com CSI driver.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        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.
                                      type: string
                                    storagePolicyName:
                                      description: storagePolicyName is the storage
                                        Policy Based Management (SPBM) profile name.
                                      type: string
                                    volumePath:
                                      description: volumePath is the path that identifies
                                        vSphere volume vmdk
                                      type: string
                                  required:
                                  - volumePath
                                  type: object
                              required:
                              - name
                              type: object
                          required:
                          - mount
                          - volume
                          type: object
                        type: array
                    type: object
                  deployCsiAddons:
                    description: a list of additional sidecars?
                    type: boolean
                  enableMetadata:
                    description: |-
                      Set to true to enable adding volume metadata on the CephFS subvolumes and RBD images.
                      Not all users might be interested in getting volume/snapshot details as metadata on CephFS subvolume and RBD images.
                      Hence enable metadata is false by default.
                    type: boolean
                  encryption:
                    description: Driver's encryption settings
                    properties:
                      configMapName:
                        description: |-
                          LocalObjectReference contains enough information to let you locate the
                          referenced object inside the same namespace.
                        properties:
                          name:
                            default: ""
                            description: |-
                              Name of the referent.
                              This field is effectively required, but due to backwards compatibility is
                              allowed to be empty. Instances of this type with an empty value here are
                              almost certainly wrong.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            type: string
                        type: object
                        x-kubernetes-map-type: atomic
                        x-kubernetes-validations:
                        - message: '''.name'' cannot be empty'
                          rule: self.name != ""
                    required:
                    - configMapName
                    type: object
                  fsGroupPolicy:
                    description: |-
                      Policy for modifying a volume's ownership or permissions when the PVC is being mounted.
                      supported values are documented at https://kubernetes-csi.github.io/docs/support-fsgroup.html
                    type: string
                  fuseMountOptions:
                    additionalProperties:
                      type: string
                    description: Set mount options to use when using the Fuse client
                    type: object
                  generateOMapInfo:
                    description: |-
                      OMAP generator will generate the omap mapping between the PV name and the RBD image.
                      Need to be enabled when we are using rbd mirroring feature.
                      By default OMAP generator sidecar is not deployed with Csi controller plugin pod, to enable
                      it set it to true.
                    type: boolean
                  grpcTimeout:
                    description: Set the gRPC timeout for gRPC call issued by the driver
                      components
                    minimum: 0
                    type: integer
                  imageSet:
                    description: |-
                      A reference to a ConfigMap resource holding image overwrite for deployed
                      containers
                    properties:
                      name:
                        default: ""
                        description: |-
                          Name of the referent.
                          This field is effectively required, but due to backwards compatibility is
                          allowed to be empty. Instances of this type with an empty value here are
                          almost certainly wrong.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                    x-kubernetes-validations:
                    - message: '''.name'' cannot be empty'
                      rule: self.name != ""
                  kernelMountOptions:
                    additionalProperties:
                      type: string
                    description: |-
                      Set mount options to use https://docs.ceph.com/en/latest/man/8/mount.ceph/#options
                      Set to "ms_mode=secure" when connections.encrypted is enabled in Ceph
                    type: object
                  leaderElection:
                    description: Leader election setting
                    properties:
                      leaseDuration:
                        description: |-
                          Duration in seconds that non-leader candidates will wait to force acquire leadership.
                          Default to 137 seconds.
                        minimum: 0
                        type: integer
                      renewDeadline:
                        description: |-
                          Deadline in seconds that the acting leader will retry refreshing leadership before giving up.
                          Defaults to 107 seconds.
                        minimum: 0
                        type: integer
                      retryPeriod:
                        description: |-
                          Retry Period in seconds the LeaderElector clients should wait between tries of actions.
                          Defaults to 26 seconds.
                        minimum: 0
                        type: integer
                    type: object
                  liveness:
                    description: |-
                      Liveness metrics configuration.
                      disabled by default.
                    properties:
                      metricsPort:
                        description: Port to expose liveness metrics
                        maximum: 65535
                        minimum: 1024
                        type: integer
                    required:
                    - metricsPort
                    type: object
                  log:
                    description: Logging configuration for driver's pods
                    properties:
                      rotation:
                        description: log rotation for csi pods
                        properties:
                          logHostPath:
                            description: |-
                              LogHostPath is the prefix directory path for the csi log files
                              Default to /var/lib/cephcsi
                            type: string
                          maxFiles:
                            description: |-
                              MaxFiles is the number of logrtoate files
                              Default to 7
                            type: integer
                          maxLogSize:
                            anyOf:
                            - type: integer
                            - type: string
                            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.
                            enum:
                            - hourly
                            - daily
                            - weekly
                            - monthly
                            type: string
                        type: object
                        x-kubernetes-validations:
                        - message: Either maxLogSize or periodicity must be set
                          rule: (has(self.maxLogSize)) || (has(self.periodicity))
                      verbosity:
                        description: |-
                          Log verbosity level for driver pods,
                          Supported values from 0 to 5. 0 for general useful logs (the default), 5 for trace level verbosity.
                          Default to 0
                        maximum: 5
                        minimum: 0
                        type: integer
                    type: object
                  nodePlugin:
                    description: Driver's plugin configuration
                    properties:
                      affinity:
                        description: Pod's affinity settings
                        properties:
                          nodeAffinity:
                            description: Describes node affinity scheduling rules for
                              the pod.
                            properties:
                              preferredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  The scheduler will prefer to schedule pods to nodes that satisfy
                                  the affinity expressions specified by this field, but it may choose
                                  a node that violates one or more of the expressions. The node that is
                                  most preferred is the one with the greatest sum of weights, i.e.
                                  for each node that meets all of the scheduling requirements (resource
                                  request, requiredDuringScheduling affinity expressions, etc.),
                                  compute a sum by iterating through the elements of this field and adding
                                  "weight" to the sum if the node matches the corresponding matchExpressions; the
                                  node(s) with the highest sum are the most preferred.
                                items:
                                  description: |-
                                    An empty preferred scheduling term matches all objects with implicit weight 0
                                    (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.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  Represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: |-
                                                  An array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will be interpreted as an integer.
                                                  This array is replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchFields:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  Represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: |-
                                                  An array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will be interpreted as an integer.
                                                  This array is replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    weight:
                                      description: Weight associated with matching the
                                        corresponding nodeSelectorTerm, in the range
                                        1-100.
                                      format: int32
                                      type: integer
                                  required:
                                  - preference
                                  - weight
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              requiredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  If the affinity requirements specified by this field are not met at
                                  scheduling time, the pod will not be scheduled onto the node.
                                  If the affinity requirements specified by this field cease to be met
                                  at some point during pod execution (e.g. due to an update), the system
                                  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.
                                    items:
                                      description: |-
                                        A null or empty node selector term matches no objects. The requirements of
                                        them are ANDed.
                                        The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  Represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: |-
                                                  An array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will be interpreted as an integer.
                                                  This array is replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchFields:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  Represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                                type: string
                                              values:
                                                description: |-
                                                  An array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. If the operator is Gt or Lt, the values
                                                  array must have a single element, which will be interpreted as an integer.
                                                  This array is replaced during a strategic merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    type: array
                                    x-kubernetes-list-type: atomic
                                required:
                                - nodeSelectorTerms
                                type: object
                                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)).
                            properties:
                              preferredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  The scheduler will prefer to schedule pods to nodes that satisfy
                                  the affinity expressions specified by this field, but it may choose
                                  a node that violates one or more of the expressions. The node that is
                                  most preferred is the one with the greatest sum of weights, i.e.
                                  for each node that meets all of the scheduling requirements (resource
                                  request, requiredDuringScheduling affinity expressions, etc.),
                                  compute a sum by iterating through the elements of this field and adding
                                  "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)
                                  properties:
                                    podAffinityTerm:
                                      description: Required. A pod affinity term, associated
                                        with the corresponding weight.
                                      properties:
                                        labelSelector:
                                          description: |-
                                            A label query over a set of resources, in this case pods.
                                            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.
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        matchLabelKeys:
                                          description: |-
                                            MatchLabelKeys is a set of pod label keys to select which pods will
                                            be taken into consideration. The keys are used to lookup values from the
                                            incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                            to select the group of existing pods which pods will be taken into consideration
                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                            pod labels will be ignored. The default value is empty.
                                            The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                            Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        mismatchLabelKeys:
                                          description: |-
                                            MismatchLabelKeys is a set of pod label keys to select which pods will
                                            be taken into consideration. The keys are used to lookup values from the
                                            incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                            to select the group of existing pods which pods will be taken into consideration
                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                            pod labels will be ignored. The default value is empty.
                                            The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                            Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        namespaceSelector:
                                          description: |-
                                            A label query over the set of namespaces that the term applies to.
                                            The term is applied to the union of the namespaces selected by this field
                                            and the ones listed in the namespaces field.
                                            null selector and null or empty namespaces list means "this pod's namespace".
                                            An empty selector ({}) matches all namespaces.
                                          properties:
                                            matchExpressions:
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        namespaces:
                                          description: |-
                                            namespaces specifies a static list of namespace names that the term applies to.
                                            The term is applied to the union of the namespaces listed in this field
                                            and the ones selected by namespaceSelector.
                                            null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        topologyKey:
                                          description: |-
                                            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                            the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                            whose value of the label with key topologyKey matches that of any node on which any of the
                                            selected pods is running.
                                            Empty topologyKey is not allowed.
                                          type: string
                                      required:
                                      - topologyKey
                                      type: object
                                    weight:
                                      description: |-
                                        weight associated with matching the corresponding podAffinityTerm,
                                        in the range 1-100.
                                      format: int32
                                      type: integer
                                  required:
                                  - podAffinityTerm
                                  - weight
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              requiredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  If the affinity requirements specified by this field are not met at
                                  scheduling time, the pod will not be scheduled onto the node.
                                  If the affinity requirements specified by this field cease to be met
                                  at some point during pod execution (e.g. due to a pod label update), the
                                  system may or may not try to eventually evict the pod from its node.
                                  When there are multiple elements, the lists of nodes corresponding to each
                                  podAffinityTerm are intersected, i.e. all terms must be satisfied.
                                items:
                                  description: |-
                                    Defines a set of pods (namely those matching the labelSelector
                                    relative to the given namespace(s)) that this pod should be
                                    co-located (affinity) or not co-located (anti-affinity) with,
                                    where co-located is defined as running on a node whose value of
                                    the label with key <topologyKey> matches that of any node on which
                                    a pod of the set of pods is running
                                  properties:
                                    labelSelector:
                                      description: |-
                                        A label query over a set of resources, in this case pods.
                                        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.
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      description: |-
                                        MatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      description: |-
                                        MismatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      description: |-
                                        A label query over the set of namespaces that the term applies to.
                                        The term is applied to the union of the namespaces selected by this field
                                        and the ones listed in the namespaces field.
                                        null selector and null or empty namespaces list means "this pod's namespace".
                                        An empty selector ({}) matches all namespaces.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      description: |-
                                        namespaces specifies a static list of namespace names that the term applies to.
                                        The term is applied to the union of the namespaces listed in this field
                                        and the ones selected by namespaceSelector.
                                        null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      description: |-
                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                        whose value of the label with key topologyKey matches that of any node on which any of the
                                        selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                type: array
                                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)).
                            properties:
                              preferredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  The scheduler will prefer to schedule pods to nodes that satisfy
                                  the anti-affinity expressions specified by this field, but it may choose
                                  a node that violates one or more of the expressions. The node that is
                                  most preferred is the one with the greatest sum of weights, i.e.
                                  for each node that meets all of the scheduling requirements (resource
                                  request, requiredDuringScheduling anti-affinity expressions, etc.),
                                  compute a sum by iterating through the elements of this field and subtracting
                                  "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)
                                  properties:
                                    podAffinityTerm:
                                      description: Required. A pod affinity term, associated
                                        with the corresponding weight.
                                      properties:
                                        labelSelector:
                                          description: |-
                                            A label query over a set of resources, in this case pods.
                                            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.
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        matchLabelKeys:
                                          description: |-
                                            MatchLabelKeys is a set of pod label keys to select which pods will
                                            be taken into consideration. The keys are used to lookup values from the
                                            incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                            to select the group of existing pods which pods will be taken into consideration
                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                            pod labels will be ignored. The default value is empty.
                                            The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                            Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        mismatchLabelKeys:
                                          description: |-
                                            MismatchLabelKeys is a set of pod label keys to select which pods will
                                            be taken into consideration. The keys are used to lookup values from the
                                            incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                            to select the group of existing pods which pods will be taken into consideration
                                            for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                            pod labels will be ignored. The default value is empty.
                                            The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                            Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        namespaceSelector:
                                          description: |-
                                            A label query over the set of namespaces that the term applies to.
                                            The term is applied to the union of the namespaces selected by this field
                                            and the ones listed in the namespaces field.
                                            null selector and null or empty namespaces list means "this pod's namespace".
                                            An empty selector ({}) matches all namespaces.
                                          properties:
                                            matchExpressions:
                                              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.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        namespaces:
                                          description: |-
                                            namespaces specifies a static list of namespace names that the term applies to.
                                            The term is applied to the union of the namespaces listed in this field
                                            and the ones selected by namespaceSelector.
                                            null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        topologyKey:
                                          description: |-
                                            This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                            the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                            whose value of the label with key topologyKey matches that of any node on which any of the
                                            selected pods is running.
                                            Empty topologyKey is not allowed.
                                          type: string
                                      required:
                                      - topologyKey
                                      type: object
                                    weight:
                                      description: |-
                                        weight associated with matching the corresponding podAffinityTerm,
                                        in the range 1-100.
                                      format: int32
                                      type: integer
                                  required:
                                  - podAffinityTerm
                                  - weight
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              requiredDuringSchedulingIgnoredDuringExecution:
                                description: |-
                                  If the anti-affinity requirements specified by this field are not met at
                                  scheduling time, the pod will not be scheduled onto the node.
                                  If the anti-affinity requirements specified by this field cease to be met
                                  at some point during pod execution (e.g. due to a pod label update), the
                                  system may or may not try to eventually evict the pod from its node.
                                  When there are multiple elements, the lists of nodes corresponding to each
                                  podAffinityTerm are intersected, i.e. all terms must be satisfied.
                                items:
                                  description: |-
                                    Defines a set of pods (namely those matching the labelSelector
                                    relative to the given namespace(s)) that this pod should be
                                    co-located (affinity) or not co-located (anti-affinity) with,
                                    where co-located is defined as running on a node whose value of
                                    the label with key <topologyKey> matches that of any node on which
                                    a pod of the set of pods is running
                                  properties:
                                    labelSelector:
                                      description: |-
                                        A label query over a set of resources, in this case pods.
                                        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.
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      description: |-
                                        MatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                        Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      description: |-
                                        MismatchLabelKeys is a set of pod label keys to select which pods will
                                        be taken into consideration. The keys are used to lookup values from the
                                        incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                        to select the group of existing pods which pods will be taken into consideration
                                        for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                        pod labels will be ignored. The default value is empty.
                                        The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                        Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      description: |-
                                        A label query over the set of namespaces that the term applies to.
                                        The term is applied to the union of the namespaces selected by this field
                                        and the ones listed in the namespaces field.
                                        null selector and null or empty namespaces list means "this pod's namespace".
                                        An empty selector ({}) matches all namespaces.
                                      properties:
                                        matchExpressions:
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      description: |-
                                        namespaces specifies a static list of namespace names that the term applies to.
                                        The term is applied to the union of the namespaces listed in this field
                                        and the ones selected by namespaceSelector.
                                        null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      description: |-
                                        This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                        the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                        whose value of the label with key topologyKey matches that of any node on which any of the
                                        selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                            type: object
                        type: object
                      annotations:
                        additionalProperties:
                          type: string
                        description: Pod's annotations
                        type: object
                      enableSeLinuxHostMount:
                        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.
                        type: string
                      kubeletDirPath:
                        description: kubelet directory path, if kubelet configured to
                          use other than /var/lib/kubelet path.
                        type: string
                      labels:
                        additionalProperties:
                          type: string
                        description: Pod's labels
                        type: object
                      priorityClassName:
                        description: Pod's user defined priority class name
                        type: string
                      resources:
                        description: Resource requirements for plugin's containers
                        properties:
                          addons:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          liveness:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          logRotator:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          plugin:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          registrar:
                            description: ResourceRequirements describes the compute
                              resource requirements.
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in
                                    PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                        type: object
                      serviceAccountName:
                        description: Service account name to be used for driver's pods
                        type: string
                      tolerations:
                        description: Pod's tolerations list
                        items:
                          description: |-
                            The pod this Toleration is attached to tolerates any taint that matches
                            the triple <key,value,effect> using the matching operator <operator>.
                          properties:
                            effect:
                              description: |-
                                Effect indicates the taint effect to match. Empty means match all taint effects.
                                When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
                              type: string
                            key:
                              description: |-
                                Key is the taint key that the toleration applies to. Empty means match all taint keys.
                                If the key is empty, operator must be Exists; this combination means to match all values and all keys.
                              type: string
                            operator:
                              description: |-
                                Operator represents a key's relationship to the value.
                                Valid operators are Exists, Equal, Lt, and Gt. Defaults to Equal.
                                Exists is equivalent to wildcard for value, so that a pod can
                                tolerate all taints of a particular category.
                                Lt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators).
                              type: string
                            tolerationSeconds:
                              description: |-
                                TolerationSeconds represents the period of time the toleration (which must be
                                of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,
                                it is not set, which means tolerate the taint forever (do not evict). Zero and
                                negative values will be treated as 0 (evict immediately) by the system.
                              format: int64
                              type: integer
                            value:
                              description: |-
                                Value is the taint value the toleration matches to.
                                If the operator is Exists, the value should be empty, otherwise just a regular string.
                              type: string
                          type: object
                        type: array
                      topology:
                        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
                            items:
                              type: string
                            type: array
                        required:
                        - domainLabels
                        type: object
                      updateStrategy:
                        description: |-
                          Driver's plugin daemonset update strategy, supported values are OnDelete and RollingUpdate.
                          Default value is RollingUpdate with MaxAvailabile set to 1
                        properties:
                          rollingUpdate:
                            description: Rolling update config params. Present only
                              if type = "RollingUpdate".
                            properties:
                              maxSurge:
                                anyOf:
                                - type: integer
                                - type: string
                                description: |-
                                  The maximum number of nodes with an existing available DaemonSet pod that
                                  can have an updated DaemonSet pod during during an update.
                                  Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%).
                                  This can not be 0 if MaxUnavailable is 0.
                                  Absolute number is calculated from percentage by rounding up to a minimum of 1.
                                  Default value is 0.
                                  Example: when this is set to 30%, at most 30% of the total number of nodes
                                  that should be running the daemon pod (i.e. status.desiredNumberScheduled)
                                  can have their a new pod created before the old pod is marked as deleted.
                                  The update starts by launching new pods on 30% of nodes. Once an updated
                                  pod is available (Ready for at least minReadySeconds) the old DaemonSet pod
                                  on that node is marked deleted. If the old pod becomes unavailable for any
                                  reason (Ready transitions to false, is evicted, or is drained) an updated
                                  pod is immediately created on that node without considering surge limits.
                                  Allowing surge implies the possibility that the resources consumed by the
                                  daemonset on any given node can double if the readiness check fails, and
                                  so resource intensive daemonsets should take into account that they may
                                  cause evictions during disruption.
                                x-kubernetes-int-or-string: true
                              maxUnavailable:
                                anyOf:
                                - type: integer
                                - type: string
                                description: |-
                                  The maximum number of DaemonSet pods that can be unavailable during the
                                  update. Value can be an absolute number (ex: 5) or a percentage of total
                                  number of DaemonSet pods at the start of the update (ex: 10%). Absolute
                                  number is calculated from percentage by rounding up.
                                  This cannot be 0 if MaxSurge is 0
                                  Default value is 1.
                                  Example: when this is set to 30%, at most 30% of the total number of nodes
                                  that should be running the daemon pod (i.e. status.desiredNumberScheduled)
                                  can have their pods stopped for an update at any given time. The update
                                  starts by stopping at most 30% of those DaemonSet pods and then brings
                                  up new DaemonSet pods in their place. Once the new pods are available,
                                  it then proceeds onto other DaemonSet pods, thus ensuring that at least
                                  70% of original number of DaemonSet pods are available at all times during
                                  the update.
                                x-kubernetes-int-or-string: true
                            type: object
                          type:
                            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
                        items:
                          properties:
                            mount:
                              description: VolumeMount describes a mounting of a Volume
                                within a container.
                              properties:
                                mountPath:
                                  description: |-
                                    Path within the container at which the volume should be mounted.  Must
                                    not contain ':'.
                                  type: string
                                mountPropagation:
                                  description: |-
                                    mountPropagation determines how mounts are propagated from the host
                                    to container and the other way around.
                                    When not set, MountPropagationNone is used.
                                    This field is beta in 1.10.
                                    When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
                                    (which defaults to None).
                                  type: string
                                name:
                                  description: This must match the Name of a Volume.
                                  type: string
                                readOnly:
                                  description: |-
                                    Mounted read-only if true, read-write otherwise (false or unspecified).
                                    Defaults to false.
                                  type: boolean
                                recursiveReadOnly:
                                  description: |-
                                    RecursiveReadOnly specifies whether read-only mounts should be handled
                                    recursively.

                                    If ReadOnly is false, this field has no meaning and must be unspecified.

                                    If ReadOnly is true, and this field is set to Disabled, the mount is not made
                                    recursively read-only.  If this field is set to IfPossible, the mount is made
                                    recursively read-only, if it is supported by the container runtime.  If this
                                    field is set to Enabled, the mount is made recursively read-only if it is
                                    supported by the container runtime, otherwise the pod will not be started and
                                    an error will be generated to indicate the reason.

                                    If this field is set to IfPossible or Enabled, MountPropagation must be set to
                                    None (or be unspecified, which defaults to None).

                                    If this field is not specified, it is treated as an equivalent of Disabled.
                                  type: string
                                subPath:
                                  description: |-
                                    Path within the volume from which the container's volume should be mounted.
                                    Defaults to "" (volume's root).
                                  type: string
                                subPathExpr:
                                  description: |-
                                    Expanded path within the volume from which the container's volume should be mounted.
                                    Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
                                    Defaults to "" (volume's root).
                                    SubPathExpr and SubPath are mutually exclusive.
                                  type: string
                              required:
                              - mountPath
                              - name
                              type: object
                            volume:
                              description: Volume represents a named volume in a pod
                                that may be accessed by any container in the pod.
                              properties:
                                awsElasticBlockStore:
                                  description: |-
                                    awsElasticBlockStore represents an AWS Disk resource that is attached to a
                                    kubelet's host machine and then exposed to the pod.
                                    Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree
                                    awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type of the volume that you want to mount.
                                        Tip: Ensure that the filesystem type is supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                      type: string
                                    partition:
                                      description: |-
                                        partition is the partition in the volume that you want to mount.
                                        If omitted, the default is to mount by volume name.
                                        Examples: For volume /dev/sda1, you specify the partition as "1".
                                        Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
                                      format: int32
                                      type: integer
                                    readOnly:
                                      description: |-
                                        readOnly value true will force the readOnly setting in VolumeMounts.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                      type: boolean
                                    volumeID:
                                      description: |-
                                        volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                      type: string
                                  required:
                                  - volumeID
                                  type: object
                                azureDisk:
                                  description: |-
                                    azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
                                    Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type
                                    are redirected to the disk.csi.azure.com CSI driver.
                                  properties:
                                    cachingMode:
                                      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
                                      type: string
                                    diskURI:
                                      description: diskURI is the URI of data disk in
                                        the blob storage
                                      type: string
                                    fsType:
                                      default: ext4
                                      description: |-
                                        fsType is Filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        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'
                                      type: string
                                    readOnly:
                                      default: false
                                      description: |-
                                        readOnly Defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                  required:
                                  - diskName
                                  - diskURI
                                  type: object
                                azureFile:
                                  description: |-
                                    azureFile represents an Azure File Service mount on the host and bind mount to the pod.
                                    Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type
                                    are redirected to the file.csi.azure.com CSI driver.
                                  properties:
                                    readOnly:
                                      description: |-
                                        readOnly defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    secretName:
                                      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
                                      type: string
                                  required:
                                  - secretName
                                  - shareName
                                  type: object
                                cephfs:
                                  description: |-
                                    cephFS represents a Ceph FS mount on the host that shares a pod's lifetime.
                                    Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.
                                  properties:
                                    monitors:
                                      description: |-
                                        monitors is Required: Monitors is a collection of Ceph monitors
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      items:
                                        type: string
                                      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 /'
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      type: boolean
                                    secretFile:
                                      description: |-
                                        secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      type: string
                                    secretRef:
                                      description: |-
                                        secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    user:
                                      description: |-
                                        user is optional: User is the rados user name, default is admin
                                        More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                      type: string
                                  required:
                                  - monitors
                                  type: object
                                cinder:
                                  description: |-
                                    cinder represents a cinder volume attached and mounted on kubelets host machine.
                                    Deprecated: Cinder is deprecated. All operations for the in-tree cinder type
                                    are redirected to the cinder.csi.openstack.org CSI driver.
                                    More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                        More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef is optional: points to a secret object containing parameters used to connect
                                        to OpenStack.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    volumeID:
                                      description: |-
                                        volumeID used to identify the volume in cinder.
                                        More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                      type: string
                                  required:
                                  - volumeID
                                  type: object
                                configMap:
                                  description: configMap represents a configMap that
                                    should populate this volume
                                  properties:
                                    defaultMode:
                                      description: |-
                                        defaultMode is optional: mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                        Defaults to 0644.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    items:
                                      description: |-
                                        items if unspecified, each key-value pair in the Data field of the referenced
                                        ConfigMap will be projected into the volume as a file whose name is the
                                        key and content is the value. If specified, the listed keys will be
                                        projected into the specified paths, and unlisted keys will not be
                                        present. If a key is specified which is not present in the ConfigMap,
                                        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.
                                        properties:
                                          key:
                                            description: key is the key to project.
                                            type: string
                                          mode:
                                            description: |-
                                              mode is Optional: mode bits used to set permissions on this file.
                                              Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                              YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                              If not specified, the volume defaultMode will be used.
                                              This might be in conflict with other options that affect the file
                                              mode, like fsGroup, and the result can be other mode bits set.
                                            format: int32
                                            type: integer
                                          path:
                                            description: |-
                                              path is the relative path of the file to map the key to.
                                              May not be an absolute path.
                                              May not contain the path element '..'.
                                              May not start with the string '..'.
                                            type: string
                                        required:
                                        - key
                                        - path
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        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
                                      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.
                                  properties:
                                    driver:
                                      description: |-
                                        driver is the name of the CSI driver that handles this volume.
                                        Consult with your admin for the correct name as registered in the cluster.
                                      type: string
                                    fsType:
                                      description: |-
                                        fsType to mount. Ex. "ext4", "xfs", "ntfs".
                                        If not provided, the empty value is passed to the associated CSI driver
                                        which will determine the default filesystem to apply.
                                      type: string
                                    nodePublishSecretRef:
                                      description: |-
                                        nodePublishSecretRef is a reference to the secret object containing
                                        sensitive information to pass to the CSI driver to complete the CSI
                                        NodePublishVolume and NodeUnpublishVolume calls.
                                        This field is optional, and  may be empty if no secret is required. If the
                                        secret object contains more than one secret, all secret references are passed.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    readOnly:
                                      description: |-
                                        readOnly specifies a read-only configuration for the volume.
                                        Defaults to false (read/write).
                                      type: boolean
                                    volumeAttributes:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        volumeAttributes stores driver-specific properties that are passed to the CSI
                                        driver. Consult your driver's documentation for supported values.
                                      type: object
                                  required:
                                  - driver
                                  type: object
                                downwardAPI:
                                  description: downwardAPI represents downward API about
                                    the pod that should populate this volume
                                  properties:
                                    defaultMode:
                                      description: |-
                                        Optional: mode bits to use on created files by default. Must be a
                                        Optional: mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                        Defaults to 0644.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    items:
                                      description: Items is a list of downward API volume
                                        file
                                      items:
                                        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.'
                                            properties:
                                              apiVersion:
                                                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.
                                                type: string
                                            required:
                                            - fieldPath
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          mode:
                                            description: |-
                                              Optional: mode bits used to set permissions on this file, must be an octal value
                                              between 0000 and 0777 or a decimal value between 0 and 511.
                                              YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                              If not specified, the volume defaultMode will be used.
                                              This might be in conflict with other options that affect the file
                                              mode, like fsGroup, and the result can be other mode bits set.
                                            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 ''..'''
                                            type: string
                                          resourceFieldRef:
                                            description: |-
                                              Selects a resource of the container: only resources limits and requests
                                              (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                            properties:
                                              containerName:
                                                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"
                                                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'
                                                type: string
                                            required:
                                            - resource
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        required:
                                        - path
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                emptyDir:
                                  description: |-
                                    emptyDir represents a temporary directory that shares a pod's lifetime.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                  properties:
                                    medium:
                                      description: |-
                                        medium represents what type of storage medium should back this directory.
                                        The default is "" which means to use the node's default medium.
                                        Must be an empty string (default) or Memory.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                      type: string
                                    sizeLimit:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      description: |-
                                        sizeLimit is the total amount of local storage required for this EmptyDir volume.
                                        The size limit is also applicable for memory medium.
                                        The maximum usage on memory medium EmptyDir would be the minimum value between
                                        the SizeLimit specified here and the sum of memory limits of all containers in a pod.
                                        The default is nil which means that the limit is undefined.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                  type: object
                                ephemeral:
                                  description: |-
                                    ephemeral represents a volume that is handled by a cluster storage driver.
                                    The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
                                    and deleted when the pod is removed.

                                    Use this if:
                                    a) the volume is only needed while the pod runs,
                                    b) features of normal volumes like restoring from snapshot or capacity
                                       tracking are needed,
                                    c) the storage driver is specified through a storage class, and
                                    d) the storage driver supports dynamic volume provisioning through
                                       a PersistentVolumeClaim (see EphemeralVolumeSource for more
                                       information on the connection between this volume type
                                       and PersistentVolumeClaim).

                                    Use PersistentVolumeClaim or one of the vendor-specific
                                    APIs for volumes that persist for longer than the lifecycle
                                    of an individual pod.

                                    Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to
                                    be used that way - see the documentation of the driver for
                                    more information.

                                    A pod can use both types of ephemeral volumes and
                                    persistent volumes at the same time.
                                  properties:
                                    volumeClaimTemplate:
                                      description: |-
                                        Will be used to create a stand-alone PVC to provision the volume.
                                        The pod in which this EphemeralVolumeSource is embedded will be the
                                        owner of the PVC, i.e. the PVC will be deleted together with the
                                        pod.  The name of the PVC will be `<pod name>-<volume name>` where
                                        `<volume name>` is the name from the `PodSpec.Volumes` array
                                        entry. Pod validation will reject the pod if the concatenated name
                                        is not valid for a PVC (for example, too long).

                                        An existing PVC with that name that is not owned by the pod
                                        will *not* be used for the pod to avoid using an unrelated
                                        volume by mistake. Starting the pod is then blocked until
                                        the unrelated PVC is removed. If such a pre-created PVC is
                                        meant to be used by the pod, the PVC has to updated with an
                                        owner reference to the pod once the pod exists. Normally
                                        this should not be necessary, but it may be useful when
                                        manually reconstructing a broken cluster.

                                        This field is read-only and no changes will be made by Kubernetes
                                        to the PVC after it has been created.

                                        Required, must not be nil.
                                      properties:
                                        metadata:
                                          description: |-
                                            May contain labels and annotations that will be copied into the PVC
                                            when creating it. No other fields are allowed and will be rejected during
                                            validation.
                                          type: object
                                        spec:
                                          description: |-
                                            The specification for the PersistentVolumeClaim. The entire content is
                                            copied unchanged into the PVC that gets created from this
                                            template. The same fields as in a PersistentVolumeClaim
                                            are also valid here.
                                          properties:
                                            accessModes:
                                              description: |-
                                                accessModes contains the desired access modes the volume should have.
                                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            dataSource:
                                              description: |-
                                                dataSource field can be used to specify either:
                                                * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
                                                * An existing PVC (PersistentVolumeClaim)
                                                If the provisioner or an external controller can support the specified data source,
                                                it will create a new volume based on the contents of the specified data source.
                                                When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
                                                and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
                                                If the namespace is specified, then dataSourceRef will not be copied to dataSource.
                                              properties:
                                                apiGroup:
                                                  description: |-
                                                    APIGroup is the group for the resource being referenced.
                                                    If APIGroup is not specified, the specified Kind must be in the core API group.
                                                    For any other third-party types, APIGroup is required.
                                                  type: string
                                                kind:
                                                  description: Kind is the type of resource
                                                    being referenced
                                                  type: string
                                                name:
                                                  description: Name is the name of resource
                                                    being referenced
                                                  type: string
                                              required:
                                              - kind
                                              - name
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            dataSourceRef:
                                              description: |-
                                                dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
                                                volume is desired. This may be any object from a non-empty API group (non
                                                core object) or a PersistentVolumeClaim object.
                                                When this field is specified, volume binding will only succeed if the type of
                                                the specified object matches some installed volume populator or dynamic
                                                provisioner.
                                                This field will replace the functionality of the dataSource field and as such
                                                if both fields are non-empty, they must have the same value. For backwards
                                                compatibility, when namespace isn't specified in dataSourceRef,
                                                both fields (dataSource and dataSourceRef) will be set to the same
                                                value automatically if one of them is empty and the other is non-empty.
                                                When namespace is specified in dataSourceRef,
                                                dataSource isn't set to the same value and must be empty.
                                                There are three important differences between dataSource and dataSourceRef:
                                                * While dataSource only allows two specific types of objects, dataSourceRef
                                                  allows any non-core object, as well as PersistentVolumeClaim objects.
                                                * While dataSource ignores disallowed values (dropping them), dataSourceRef
                                                  preserves all values, and generates an error if a disallowed value is
                                                  specified.
                                                * While dataSource only allows local objects, dataSourceRef allows objects
                                                  in any namespaces.
                                                (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
                                                (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                              properties:
                                                apiGroup:
                                                  description: |-
                                                    APIGroup is the group for the resource being referenced.
                                                    If APIGroup is not specified, the specified Kind must be in the core API group.
                                                    For any other third-party types, APIGroup is required.
                                                  type: string
                                                kind:
                                                  description: Kind is the type of resource
                                                    being referenced
                                                  type: string
                                                name:
                                                  description: Name is the name of resource
                                                    being referenced
                                                  type: string
                                                namespace:
                                                  description: |-
                                                    Namespace is the namespace of resource being referenced
                                                    Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
                                                    (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                                  type: string
                                              required:
                                              - kind
                                              - name
                                              type: object
                                            resources:
                                              description: |-
                                                resources represents the minimum resources the volume should have.
                                                Users are allowed to specify resource requirements
                                                that are lower than previous value but must still be higher than capacity recorded in the
                                                status field of the claim.
                                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
                                              properties:
                                                limits:
                                                  additionalProperties:
                                                    anyOf:
                                                    - type: integer
                                                    - type: string
                                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                    x-kubernetes-int-or-string: true
                                                  description: |-
                                                    Limits describes the maximum amount of compute resources allowed.
                                                    More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                                  type: object
                                                requests:
                                                  additionalProperties:
                                                    anyOf:
                                                    - type: integer
                                                    - type: string
                                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                    x-kubernetes-int-or-string: true
                                                  description: |-
                                                    Requests describes the minimum amount of compute resources required.
                                                    If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                                    otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                                    More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                                  type: object
                                              type: object
                                            selector:
                                              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.
                                                  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.
                                                        type: string
                                                      operator:
                                                        description: |-
                                                          operator represents a key's relationship to a set of values.
                                                          Valid operators are In, NotIn, Exists and DoesNotExist.
                                                        type: string
                                                      values:
                                                        description: |-
                                                          values is an array of string values. If the operator is In or NotIn,
                                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                          the values array must be empty. This array is replaced during a strategic
                                                          merge patch.
                                                        items:
                                                          type: string
                                                        type: array
                                                        x-kubernetes-list-type: atomic
                                                    required:
                                                    - key
                                                    - operator
                                                    type: object
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                                matchLabels:
                                                  additionalProperties:
                                                    type: string
                                                  description: |-
                                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                    map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                    operator is "In", and the values array contains only "value". The requirements are ANDed.
                                                  type: object
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            storageClassName:
                                              description: |-
                                                storageClassName is the name of the StorageClass required by the claim.
                                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
                                              type: string
                                            volumeAttributesClassName:
                                              description: |-
                                                volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
                                                If specified, the CSI driver will create or update the volume with the attributes defined
                                                in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
                                                it can be changed after the claim is created. An empty string or nil value indicates that no
                                                VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
                                                this field can be reset to its previous value (including nil) to cancel the modification.
                                                If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
                                                set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
                                                exists.
                                                More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
                                              type: string
                                            volumeMode:
                                              description: |-
                                                volumeMode defines what type of volume is required by the claim.
                                                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.
                                              type: string
                                          type: object
                                      required:
                                      - 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.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                      type: string
                                    lun:
                                      description: 'lun is Optional: FC target lun number'
                                      format: int32
                                      type: integer
                                    readOnly:
                                      description: |-
                                        readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    targetWWNs:
                                      description: 'targetWWNs is Optional: FC target
                                        worldwide names (WWNs)'
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    wwids:
                                      description: |-
                                        wwids Optional: FC volume world wide identifiers (wwids)
                                        Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                flexVolume:
                                  description: |-
                                    flexVolume represents a generic volume resource that is
                                    provisioned/attached using an exec based plugin.
                                    Deprecated: FlexVolume is deprecated. Consider using a CSIDriver instead.
                                  properties:
                                    driver:
                                      description: driver is the name of the driver
                                        to use for this volume.
                                      type: string
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script.
                                      type: string
                                    options:
                                      additionalProperties:
                                        type: string
                                      description: 'options is Optional: this field
                                        holds extra command options if any.'
                                      type: object
                                    readOnly:
                                      description: |-
                                        readOnly is Optional: defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef is Optional: secretRef is reference to the secret object containing
                                        sensitive information to pass to the plugin scripts. This may be
                                        empty if no secret object is specified. If the secret object
                                        contains more than one secret, all secrets are passed to the plugin
                                        scripts.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  required:
                                  - driver
                                  type: object
                                flocker:
                                  description: |-
                                    flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running.
                                    Deprecated: Flocker is deprecated and the in-tree flocker type is no longer supported.
                                  properties:
                                    datasetName:
                                      description: |-
                                        datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker
                                        should be considered as deprecated
                                      type: string
                                    datasetUUID:
                                      description: datasetUUID is the UUID of the dataset.
                                        This is unique identifier of a Flocker dataset
                                      type: string
                                  type: object
                                gcePersistentDisk:
                                  description: |-
                                    gcePersistentDisk represents a GCE Disk resource that is attached to a
                                    kubelet's host machine and then exposed to the pod.
                                    Deprecated: GCEPersistentDisk is deprecated. All operations for the in-tree
                                    gcePersistentDisk type are redirected to the pd.csi.storage.gke.io CSI driver.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is filesystem type of the volume that you want to mount.
                                        Tip: Ensure that the filesystem type is supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                      type: string
                                    partition:
                                      description: |-
                                        partition is the partition in the volume that you want to mount.
                                        If omitted, the default is to mount by volume name.
                                        Examples: For volume /dev/sda1, you specify the partition as "1".
                                        Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                      format: int32
                                      type: integer
                                    pdName:
                                      description: |-
                                        pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the ReadOnly setting in VolumeMounts.
                                        Defaults to false.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                      type: boolean
                                  required:
                                  - pdName
                                  type: object
                                gitRepo:
                                  description: |-
                                    gitRepo represents a git repository at a particular revision.
                                    Deprecated: GitRepo is deprecated. To provision a container with a git repo, mount an
                                    EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir
                                    into the Pod's container.
                                  properties:
                                    directory:
                                      description: |-
                                        directory is the target directory name.
                                        Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the
                                        git repository.  Otherwise, if specified, the volume will contain the git repository in
                                        the subdirectory with the given name.
                                      type: string
                                    repository:
                                      description: repository is the URL
                                      type: string
                                    revision:
                                      description: revision is the commit hash for the
                                        specified revision.
                                      type: string
                                  required:
                                  - repository
                                  type: object
                                glusterfs:
                                  description: |-
                                    glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.
                                    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.
                                      type: string
                                    path:
                                      description: |-
                                        path is the Glusterfs volume path.
                                        More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the Glusterfs volume to be mounted with read-only permissions.
                                        Defaults to false.
                                        More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                      type: boolean
                                  required:
                                  - endpoints
                                  - path
                                  type: object
                                hostPath:
                                  description: |-
                                    hostPath represents a pre-existing file or directory on the host
                                    machine that is directly exposed to the container. This is generally
                                    used for system agents or other privileged things that are allowed
                                    to see the host machine. Most containers will NOT need this.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                  properties:
                                    path:
                                      description: |-
                                        path of the directory on the host.
                                        If the path is a symlink, it will follow the link to the real path.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                      type: string
                                    type:
                                      description: |-
                                        type for HostPath Volume
                                        Defaults to ""
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                      type: string
                                  required:
                                  - path
                                  type: object
                                image:
                                  description: |-
                                    image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine.
                                    The volume is resolved at pod startup depending on which PullPolicy value is provided:

                                    - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
                                    - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
                                    - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.

                                    The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation.
                                    A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message.
                                    The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field.
                                    The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images.
                                    The volume will be mounted read-only (ro) and non-executable files (noexec).
                                    Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath) before 1.33.
                                    The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type.
                                  properties:
                                    pullPolicy:
                                      description: |-
                                        Policy for pulling OCI objects. Possible values are:
                                        Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.
                                        Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.
                                        IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.
                                        Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
                                      type: string
                                    reference:
                                      description: |-
                                        Required: Image or artifact reference to be used.
                                        Behaves in the same way as pod.spec.containers[*].image.
                                        Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets.
                                        More info: https://kubernetes.io/docs/concepts/containers/images
                                        This field is optional to allow higher level config management to default or override
                                        container images in workload controllers like Deployments and StatefulSets.
                                      type: string
                                  type: object
                                iscsi:
                                  description: |-
                                    iscsi represents an ISCSI Disk resource that is attached to a
                                    kubelet's host machine and then exposed to the pod.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi
                                  properties:
                                    chapAuthDiscovery:
                                      description: chapAuthDiscovery defines whether
                                        support iSCSI Discovery CHAP authentication
                                      type: boolean
                                    chapAuthSession:
                                      description: chapAuthSession defines whether support
                                        iSCSI Session CHAP authentication
                                      type: boolean
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type of the volume that you want to mount.
                                        Tip: Ensure that the filesystem type is supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
                                      type: string
                                    initiatorName:
                                      description: |-
                                        initiatorName is the custom iSCSI Initiator Name.
                                        If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface
                                        <target portal>:<volume name> will be created for the connection.
                                      type: string
                                    iqn:
                                      description: iqn is the target iSCSI Qualified
                                        Name.
                                      type: string
                                    iscsiInterface:
                                      default: default
                                      description: |-
                                        iscsiInterface is the interface Name that uses an iSCSI transport.
                                        Defaults to 'default' (tcp).
                                      type: string
                                    lun:
                                      description: lun represents iSCSI Target Lun number.
                                      format: int32
                                      type: integer
                                    portals:
                                      description: |-
                                        portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port
                                        is other than default (typically TCP ports 860 and 3260).
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    readOnly:
                                      description: |-
                                        readOnly here will force the ReadOnly setting in VolumeMounts.
                                        Defaults to false.
                                      type: boolean
                                    secretRef:
                                      description: secretRef is the CHAP Secret for
                                        iSCSI target and initiator authentication
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    targetPortal:
                                      description: |-
                                        targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port
                                        is other than default (typically TCP ports 860 and 3260).
                                      type: string
                                  required:
                                  - iqn
                                  - lun
                                  - targetPortal
                                  type: object
                                name:
                                  description: |-
                                    name of the volume.
                                    Must be a DNS_LABEL and unique within the pod.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                nfs:
                                  description: |-
                                    nfs represents an NFS mount on the host that shares a pod's lifetime
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                  properties:
                                    path:
                                      description: |-
                                        path that is exported by the NFS server.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the NFS export to be mounted with read-only permissions.
                                        Defaults to false.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                      type: boolean
                                    server:
                                      description: |-
                                        server is the hostname or IP address of the NFS server.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                      type: string
                                  required:
                                  - path
                                  - server
                                  type: object
                                persistentVolumeClaim:
                                  description: |-
                                    persistentVolumeClaimVolumeSource represents a reference to a
                                    PersistentVolumeClaim in the same namespace.
                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                  properties:
                                    claimName:
                                      description: |-
                                        claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.
                                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly Will force the ReadOnly setting in VolumeMounts.
                                        Default false.
                                      type: boolean
                                  required:
                                  - claimName
                                  type: object
                                photonPersistentDisk:
                                  description: |-
                                    photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine.
                                    Deprecated: PhotonPersistentDisk is deprecated and the in-tree photonPersistentDisk type is no longer supported.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        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
                                      type: string
                                  required:
                                  - pdID
                                  type: object
                                portworxVolume:
                                  description: |-
                                    portworxVolume represents a portworx volume attached and mounted on kubelets host machine.
                                    Deprecated: PortworxVolume is deprecated. All operations for the in-tree portworxVolume type
                                    are redirected to the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate
                                    is on.
                                  properties:
                                    fsType:
                                      description: |-
                                        fSType represents the filesystem type to mount
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified.
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    volumeID:
                                      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
                                  properties:
                                    defaultMode:
                                      description: |-
                                        defaultMode are the mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    sources:
                                      description: |-
                                        sources is the list of volume projections. Each entry in this list
                                        handles one source.
                                      items:
                                        description: |-
                                          Projection that may be projected along with other supported volume types.
                                          Exactly one of these fields must be set.
                                        properties:
                                          clusterTrustBundle:
                                            description: |-
                                              ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field
                                              of ClusterTrustBundle objects in an auto-updating file.

                                              Alpha, gated by the ClusterTrustBundleProjection feature gate.

                                              ClusterTrustBundle objects can either be selected by name, or by the
                                              combination of signer name and a label selector.

                                              Kubelet performs aggressive normalization of the PEM contents written
                                              into the pod filesystem.  Esoteric PEM features such as inter-block
                                              comments and block headers are stripped.  Certificates are deduplicated.
                                              The ordering of certificates within the file is arbitrary, and Kubelet
                                              may change the order over time.
                                            properties:
                                              labelSelector:
                                                description: |-
                                                  Select all ClusterTrustBundles that match this label selector.  Only has
                                                  effect if signerName is set.  Mutually-exclusive with name.  If unset,
                                                  interpreted as "match nothing".  If set but empty, interpreted as "match
                                                  everything".
                                                properties:
                                                  matchExpressions:
                                                    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.
                                                          type: string
                                                        operator:
                                                          description: |-
                                                            operator represents a key's relationship to a set of values.
                                                            Valid operators are In, NotIn, Exists and DoesNotExist.
                                                          type: string
                                                        values:
                                                          description: |-
                                                            values is an array of string values. If the operator is In or NotIn,
                                                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                            the values array must be empty. This array is replaced during a strategic
                                                            merge patch.
                                                          items:
                                                            type: string
                                                          type: array
                                                          x-kubernetes-list-type: atomic
                                                      required:
                                                      - key
                                                      - operator
                                                      type: object
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                  matchLabels:
                                                    additionalProperties:
                                                      type: string
                                                    description: |-
                                                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                                                    type: object
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              name:
                                                description: |-
                                                  Select a single ClusterTrustBundle by object name.  Mutually-exclusive
                                                  with signerName and labelSelector.
                                                type: string
                                              optional:
                                                description: |-
                                                  If true, don't block pod startup if the referenced ClusterTrustBundle(s)
                                                  aren't available.  If using name, then the named ClusterTrustBundle is
                                                  allowed not to exist.  If using signerName, then the combination of
                                                  signerName and labelSelector is allowed to match zero
                                                  ClusterTrustBundles.
                                                type: boolean
                                              path:
                                                description: Relative path from the
                                                  volume root to write the bundle.
                                                type: string
                                              signerName:
                                                description: |-
                                                  Select all ClusterTrustBundles that match this signer name.
                                                  Mutually-exclusive with name.  The contents of all selected
                                                  ClusterTrustBundles will be unified and deduplicated.
                                                type: string
                                            required:
                                            - path
                                            type: object
                                          configMap:
                                            description: configMap information about
                                              the configMap data to project
                                            properties:
                                              items:
                                                description: |-
                                                  items if unspecified, each key-value pair in the Data field of the referenced
                                                  ConfigMap will be projected into the volume as a file whose name is the
                                                  key and content is the value. If specified, the listed keys will be
                                                  projected into the specified paths, and unlisted keys will not be
                                                  present. If a key is specified which is not present in the ConfigMap,
                                                  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.
                                                  properties:
                                                    key:
                                                      description: key is the key to
                                                        project.
                                                      type: string
                                                    mode:
                                                      description: |-
                                                        mode is Optional: mode bits used to set permissions on this file.
                                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                        If not specified, the volume defaultMode will be used.
                                                        This might be in conflict with other options that affect the file
                                                        mode, like fsGroup, and the result can be other mode bits set.
                                                      format: int32
                                                      type: integer
                                                    path:
                                                      description: |-
                                                        path is the relative path of the file to map the key to.
                                                        May not be an absolute path.
                                                        May not contain the path element '..'.
                                                        May not start with the string '..'.
                                                      type: string
                                                  required:
                                                  - key
                                                  - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  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
                                                type: boolean
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          downwardAPI:
                                            description: downwardAPI information about
                                              the downwardAPI data to project
                                            properties:
                                              items:
                                                description: Items is a list of DownwardAPIVolume
                                                  file
                                                items:
                                                  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.'
                                                      properties:
                                                        apiVersion:
                                                          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.
                                                          type: string
                                                      required:
                                                      - fieldPath
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                    mode:
                                                      description: |-
                                                        Optional: mode bits used to set permissions on this file, must be an octal value
                                                        between 0000 and 0777 or a decimal value between 0 and 511.
                                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                        If not specified, the volume defaultMode will be used.
                                                        This might be in conflict with other options that affect the file
                                                        mode, like fsGroup, and the result can be other mode bits set.
                                                      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 ''..'''
                                                      type: string
                                                    resourceFieldRef:
                                                      description: |-
                                                        Selects a resource of the container: only resources limits and requests
                                                        (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                                      properties:
                                                        containerName:
                                                          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"
                                                          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'
                                                          type: string
                                                      required:
                                                      - resource
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                  required:
                                                  - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            type: object
                                          podCertificate:
                                            description: |-
                                              Projects an auto-rotating credential bundle (private key and certificate
                                              chain) that the pod can use either as a TLS client or server.

                                              Kubelet generates a private key and uses it to send a
                                              PodCertificateRequest to the named signer.  Once the signer approves the
                                              request and issues a certificate chain, Kubelet writes the key and
                                              certificate chain to the pod filesystem.  The pod does not start until
                                              certificates have been issued for each podCertificate projected volume
                                              source in its spec.

                                              Kubelet will begin trying to rotate the certificate at the time indicated
                                              by the signer using the PodCertificateRequest.Status.BeginRefreshAt
                                              timestamp.

                                              Kubelet can write a single file, indicated by the credentialBundlePath
                                              field, or separate files, indicated by the keyPath and
                                              certificateChainPath fields.

                                              The credential bundle is a single file in PEM format.  The first PEM
                                              entry is the private key (in PKCS#8 format), and the remaining PEM
                                              entries are the certificate chain issued by the signer (typically,
                                              signers will return their certificate chain in leaf-to-root order).

                                              Prefer using the credential bundle format, since your application code
                                              can read it atomically.  If you use keyPath and certificateChainPath,
                                              your application must make two separate file reads. If these coincide
                                              with a certificate rotation, it is possible that the private key and leaf
                                              certificate you read may not correspond to each other.  Your application
                                              will need to check for this condition, and re-read until they are
                                              consistent.

                                              The named signer controls chooses the format of the certificate it
                                              issues; consult the signer implementation's documentation to learn how to
                                              use the certificates it issues.
                                            properties:
                                              certificateChainPath:
                                                description: |-
                                                  Write the certificate chain at this path in the projected volume.

                                                  Most applications should use credentialBundlePath.  When using keyPath
                                                  and certificateChainPath, your application needs to check that the key
                                                  and leaf certificate are consistent, because it is possible to read the
                                                  files mid-rotation.
                                                type: string
                                              credentialBundlePath:
                                                description: |-
                                                  Write the credential bundle at this path in the projected volume.

                                                  The credential bundle is a single file that contains multiple PEM blocks.
                                                  The first PEM block is a PRIVATE KEY block, containing a PKCS#8 private
                                                  key.

                                                  The remaining blocks are CERTIFICATE blocks, containing the issued
                                                  certificate chain from the signer (leaf and any intermediates).

                                                  Using credentialBundlePath lets your Pod's application code make a single
                                                  atomic read that retrieves a consistent key and certificate chain.  If you
                                                  project them to separate files, your application code will need to
                                                  additionally check that the leaf certificate was issued to the key.
                                                type: string
                                              keyPath:
                                                description: |-
                                                  Write the key at this path in the projected volume.

                                                  Most applications should use credentialBundlePath.  When using keyPath
                                                  and certificateChainPath, your application needs to check that the key
                                                  and leaf certificate are consistent, because it is possible to read the
                                                  files mid-rotation.
                                                type: string
                                              keyType:
                                                description: |-
                                                  The type of keypair Kubelet will generate for the pod.

                                                  Valid values are "RSA3072", "RSA4096", "ECDSAP256", "ECDSAP384",
                                                  "ECDSAP521", and "ED25519".
                                                type: string
                                              maxExpirationSeconds:
                                                description: |-
                                                  maxExpirationSeconds is the maximum lifetime permitted for the
                                                  certificate.

                                                  Kubelet copies this value verbatim into the PodCertificateRequests it
                                                  generates for this projection.

                                                  If omitted, kube-apiserver will set it to 86400(24 hours). kube-apiserver
                                                  will reject values shorter than 3600 (1 hour).  The maximum allowable
                                                  value is 7862400 (91 days).

                                                  The signer implementation is then free to issue a certificate with any
                                                  lifetime *shorter* than MaxExpirationSeconds, but no shorter than 3600
                                                  seconds (1 hour).  This constraint is enforced by kube-apiserver.
                                                  `kubernetes.io` signers will never issue certificates with a lifetime
                                                  longer than 24 hours.
                                                format: int32
                                                type: integer
                                              signerName:
                                                description: Kubelet's generated CSRs
                                                  will be addressed to this signer.
                                                type: string
                                              userAnnotations:
                                                additionalProperties:
                                                  type: string
                                                description: |-
                                                  userAnnotations allow pod authors to pass additional information to
                                                  the signer implementation.  Kubernetes does not restrict or validate this
                                                  metadata in any way.

                                                  These values are copied verbatim into the `spec.unverifiedUserAnnotations` field of
                                                  the PodCertificateRequest objects that Kubelet creates.

                                                  Entries are subject to the same validation as object metadata annotations,
                                                  with the addition that all keys must be domain-prefixed. No restrictions
                                                  are placed on values, except an overall size limitation on the entire field.

                                                  Signers should document the keys and values they support. Signers should
                                                  deny requests that contain keys they do not recognize.
                                                type: object
                                            required:
                                            - keyType
                                            - signerName
                                            type: object
                                          secret:
                                            description: secret information about the
                                              secret data to project
                                            properties:
                                              items:
                                                description: |-
                                                  items if unspecified, each key-value pair in the Data field of the referenced
                                                  Secret will be projected into the volume as a file whose name is the
                                                  key and content is the value. If specified, the listed keys will be
                                                  projected into the specified paths, and unlisted keys will not be
                                                  present. If a key is specified which is not present in the Secret,
                                                  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.
                                                  properties:
                                                    key:
                                                      description: key is the key to
                                                        project.
                                                      type: string
                                                    mode:
                                                      description: |-
                                                        mode is Optional: mode bits used to set permissions on this file.
                                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                        If not specified, the volume defaultMode will be used.
                                                        This might be in conflict with other options that affect the file
                                                        mode, like fsGroup, and the result can be other mode bits set.
                                                      format: int32
                                                      type: integer
                                                    path:
                                                      description: |-
                                                        path is the relative path of the file to map the key to.
                                                        May not be an absolute path.
                                                        May not contain the path element '..'.
                                                        May not start with the string '..'.
                                                      type: string
                                                  required:
                                                  - key
                                                  - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  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
                                                type: boolean
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          serviceAccountToken:
                                            description: serviceAccountToken is information
                                              about the serviceAccountToken data to
                                              project
                                            properties:
                                              audience:
                                                description: |-
                                                  audience is the intended audience of the token. A recipient of a token
                                                  must identify itself with an identifier specified in the audience of the
                                                  token, and otherwise should reject the token. The audience defaults to the
                                                  identifier of the apiserver.
                                                type: string
                                              expirationSeconds:
                                                description: |-
                                                  expirationSeconds is the requested duration of validity of the service
                                                  account token. As the token approaches expiration, the kubelet volume
                                                  plugin will proactively rotate the service account token. The kubelet will
                                                  start trying to rotate the token if the token is older than 80 percent of
                                                  its time to live or if the token is older than 24 hours.Defaults to 1 hour
                                                  and must be at least 10 minutes.
                                                format: int64
                                                type: integer
                                              path:
                                                description: |-
                                                  path is the path relative to the mount point of the file to project the
                                                  token into.
                                                type: string
                                            required:
                                            - path
                                            type: object
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                quobyte:
                                  description: |-
                                    quobyte represents a Quobyte mount on the host that shares a pod's lifetime.
                                    Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.
                                  properties:
                                    group:
                                      description: |-
                                        group to map volume access to
                                        Default is no group
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the Quobyte volume to be mounted with read-only permissions.
                                        Defaults to false.
                                      type: boolean
                                    registry:
                                      description: |-
                                        registry represents a single or multiple Quobyte Registry services
                                        specified as a string as host:port pair (multiple entries are separated with commas)
                                        which acts as the central registry for volumes
                                      type: string
                                    tenant:
                                      description: |-
                                        tenant owning the given Quobyte volume in the Backend
                                        Used with dynamically provisioned Quobyte volumes, value is set by the plugin
                                      type: string
                                    user:
                                      description: |-
                                        user to map volume access to
                                        Defaults to serivceaccount user
                                      type: string
                                    volume:
                                      description: volume is a string that references
                                        an already created Quobyte volume by name.
                                      type: string
                                  required:
                                  - registry
                                  - volume
                                  type: object
                                rbd:
                                  description: |-
                                    rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
                                    Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type of the volume that you want to mount.
                                        Tip: Ensure that the filesystem type is supported by the host operating system.
                                        Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
                                      type: string
                                    image:
                                      description: |-
                                        image is the rados image name.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: string
                                    keyring:
                                      default: /etc/ceph/keyring
                                      description: |-
                                        keyring is the path to key ring for RBDUser.
                                        Default is /etc/ceph/keyring.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: string
                                    monitors:
                                      description: |-
                                        monitors is a collection of Ceph monitors.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    pool:
                                      default: rbd
                                      description: |-
                                        pool is the rados pool name.
                                        Default is rbd.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly here will force the ReadOnly setting in VolumeMounts.
                                        Defaults to false.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef is name of the authentication secret for RBDUser. If provided
                                        overrides keyring.
                                        Default is nil.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    user:
                                      default: admin
                                      description: |-
                                        user is the rados user name.
                                        Default is admin.
                                        More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                      type: string
                                  required:
                                  - image
                                  - monitors
                                  type: object
                                scaleIO:
                                  description: |-
                                    scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
                                    Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.
                                  properties:
                                    fsType:
                                      default: xfs
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs", "ntfs".
                                        Default is "xfs".
                                      type: string
                                    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.
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly Defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef references to the secret for ScaleIO user and other
                                        sensitive information. If this is not provided, Login operation will fail.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    sslEnabled:
                                      description: sslEnabled Flag enable/disable SSL
                                        communication with Gateway, default false
                                      type: boolean
                                    storageMode:
                                      default: ThinProvisioned
                                      description: |-
                                        storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
                                        Default is ThinProvisioned.
                                      type: string
                                    storagePool:
                                      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.
                                      type: string
                                    volumeName:
                                      description: |-
                                        volumeName is the name of a volume already created in the ScaleIO system
                                        that is associated with this volume source.
                                      type: string
                                  required:
                                  - gateway
                                  - secretRef
                                  - system
                                  type: object
                                secret:
                                  description: |-
                                    secret represents a secret that should populate this volume.
                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                                  properties:
                                    defaultMode:
                                      description: |-
                                        defaultMode is Optional: mode bits used to set permissions on created files by default.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values
                                        for mode bits. Defaults to 0644.
                                        Directories within the path are not affected by this setting.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    items:
                                      description: |-
                                        items If unspecified, each key-value pair in the Data field of the referenced
                                        Secret will be projected into the volume as a file whose name is the
                                        key and content is the value. If specified, the listed keys will be
                                        projected into the specified paths, and unlisted keys will not be
                                        present. If a key is specified which is not present in the Secret,
                                        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.
                                        properties:
                                          key:
                                            description: key is the key to project.
                                            type: string
                                          mode:
                                            description: |-
                                              mode is Optional: mode bits used to set permissions on this file.
                                              Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                              YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                              If not specified, the volume defaultMode will be used.
                                              This might be in conflict with other options that affect the file
                                              mode, like fsGroup, and the result can be other mode bits set.
                                            format: int32
                                            type: integer
                                          path:
                                            description: |-
                                              path is the relative path of the file to map the key to.
                                              May not be an absolute path.
                                              May not contain the path element '..'.
                                              May not start with the string '..'.
                                            type: string
                                        required:
                                        - key
                                        - path
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    optional:
                                      description: optional field specify whether the
                                        Secret or its keys must be defined
                                      type: boolean
                                    secretName:
                                      description: |-
                                        secretName is the name of the secret in the pod's namespace to use.
                                        More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                                      type: string
                                  type: object
                                storageos:
                                  description: |-
                                    storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
                                    Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is the filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                      type: string
                                    readOnly:
                                      description: |-
                                        readOnly defaults to false (read/write). ReadOnly here will force
                                        the ReadOnly setting in VolumeMounts.
                                      type: boolean
                                    secretRef:
                                      description: |-
                                        secretRef specifies the secret to use for obtaining the StorageOS API
                                        credentials.  If not specified, default values will be attempted.
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    volumeName:
                                      description: |-
                                        volumeName is the human-readable name of the StorageOS volume.  Volume
                                        names are only unique within a namespace.
                                      type: string
                                    volumeNamespace:
                                      description: |-
                                        volumeNamespace specifies the scope of the volume within StorageOS.  If no
                                        namespace is specified then the Pod's namespace will be used.  This allows the
                                        Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
                                        Set VolumeName to any name to override the default behaviour.
                                        Set to "default" if you are not using namespaces within StorageOS.
                                        Namespaces that do not pre-exist within StorageOS will be created.
                                      type: string
                                  type: object
                                vsphereVolume:
                                  description: |-
                                    vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine.
                                    Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type
                                    are redirected to the csi.vsphere.vmware.com CSI driver.
                                  properties:
                                    fsType:
                                      description: |-
                                        fsType is filesystem type to mount.
                                        Must be a filesystem type supported by the host operating system.
                                        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.
                                      type: string
                                    storagePolicyName:
                                      description: storagePolicyName is the storage
                                        Policy Based Management (SPBM) profile name.
                                      type: string
                                    volumePath:
                                      description: volumePath is the path that identifies
                                        vSphere volume vmdk
                                      type: string
                                  required:
                                  - volumePath
                                  type: object
                              required:
                              - name
                              type: object
                          required:
                          - mount
                          - volume
                          type: object
                        type: array
                    type: object
                  snapshotPolicy:
                    description: 'Select a policy for snapshot behavior: none, autodetect,
                      snapshot, sanpshotGroup'
                    enum:
                    - none
                    - volumeGroupSnapshot
                    - volumeSnapshot
                    type: string
                type: object
              log:
                description: OperatorLogSpec provide log related settings for the operator
                properties:
                  verbosity:
                    description: Operator's log level
                    maximum: 3
                    minimum: 0
                    type: integer
                type: object
            type: object
          status:
            description: OperatorConfigStatus defines the observed state of OperatorConfig
            type: object
        type: object
    served: true
    storage: false
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
    helm.sh/resource-policy: keep
  name: cephblockpoolradosnamespaces.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephBlockPoolRadosNamespace
    listKind: CephBlockPoolRadosNamespaceList
    plural: cephblockpoolradosnamespaces
    shortNames:
      - cephbprns
      - cephrns
    singular: cephblockpoolradosnamespace
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .status.phase
          name: Phase
          type: string
        - description: Name of the Ceph BlockPool
          jsonPath: .spec.blockPoolName
          name: BlockPool
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v1
      schema:
        openAPIV3Schema:
          description: CephBlockPoolRadosNamespace represents a Ceph BlockPool Rados Namespace
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: Spec represents the specification of a Ceph BlockPool Rados Namespace
              properties:
                blockPoolName:
                  description: |-
                    BlockPoolName is the name of Ceph BlockPool. Typically it's the name of
                    the CephBlockPool CR.
                  type: string
                  x-kubernetes-validations:
                    - message: blockPoolName is immutable
                      rule: self == oldSelf
                clusterID:
                  description: |-
                    ClusterID to be used for this RadosNamespace in the CSI configuration.
                    It must be unique among all Ceph clusters managed by Rook.
                    If not specified, the clusterID will be generated and can be found in the CR status.
                  maxLength: 36
                  minLength: 1
                  pattern: ^[a-zA-Z0-9_-]+$
                  type: string
                  x-kubernetes-validations:
                    - message: ClusterID is immutable
                      rule: self == oldSelf
                mirroring:
                  description: Mirroring configuration of CephBlockPoolRadosNamespace
                  properties:
                    mode:
                      description: Mode is the mirroring mode; either pool or image.
                      enum:
                        - ""
                        - pool
                        - image
                      type: string
                    remoteNamespace:
                      description: RemoteNamespace is the name of the CephBlockPoolRadosNamespace on the secondary cluster CephBlockPool
                      type: string
                    snapshotSchedules:
                      description: SnapshotSchedules is the scheduling of snapshot for mirrored images
                      items:
                        description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool
                        properties:
                          interval:
                            description: Interval represent the periodicity of the snapshot.
                            type: string
                          path:
                            description: Path is the path to snapshot, only valid for CephFS
                            type: string
                          startTime:
                            description: StartTime indicates when to start the snapshot
                            type: string
                        type: object
                      type: array
                  required:
                    - mode
                  type: object
                name:
                  description: The name of the CephBlockPoolRadosNamespaceSpec namespace. If not set, the default is the name of the CR.
                  type: string
                  x-kubernetes-validations:
                    - message: name is immutable
                      rule: self == oldSelf
              required:
                - blockPoolName
              type: object
            status:
              description: Status represents the status of a CephBlockPool Rados Namespace
              properties:
                conditions:
                  items:
                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.
                    properties:
                      lastHeartbeatTime:
                        format: date-time
                        type: string
                      lastTransitionTime:
                        format: date-time
                        type: string
                      message:
                        type: string
                      reason:
                        description: ConditionReason is a reason for a condition
                        type: string
                      status:
                        type: string
                      type:
                        description: ConditionType represent a resource's status
                        type: string
                    type: object
                  type: array
                info:
                  additionalProperties:
                    type: string
                  nullable: true
                  type: object
                mirroringInfo:
                  description: MirroringInfoSpec is the status of the pool/radosnamespace mirroring
                  properties:
                    details:
                      type: string
                    lastChanged:
                      type: string
                    lastChecked:
                      type: string
                    mode:
                      description: Mode is the mirroring mode
                      type: string
                    peers:
                      description: Peers are the list of peer sites connected to that cluster
                      items:
                        description: PeersSpec contains peer details
                        properties:
                          client_name:
                            description: ClientName is the CephX user used to connect to the peer
                            type: string
                          direction:
                            description: Direction is the peer mirroring direction
                            type: string
                          mirror_uuid:
                            description: MirrorUUID is the mirror UUID
                            type: string
                          site_name:
                            description: SiteName is the current site name
                            type: string
                          uuid:
                            description: UUID is the peer UUID
                            type: string
                        type: object
                      type: array
                    site_name:
                      description: SiteName is the current site name
                      type: string
                  type: object
                mirroringStatus:
                  description: MirroringStatusSpec is the status of the pool/radosNamespace mirroring
                  properties:
                    details:
                      description: Details contains potential status errors
                      type: string
                    lastChanged:
                      description: LastChanged is the last time time the status last changed
                      type: string
                    lastChecked:
                      description: LastChecked is the last time time the status was checked
                      type: string
                    summary:
                      description: Summary is the mirroring status summary
                      properties:
                        daemon_health:
                          description: DaemonHealth is the health of the mirroring daemon
                          type: string
                        group_health:
                          description: GroupHealth is the health of the mirrored image group
                          nullable: true
                          type: string
                        group_states:
                          description: GroupStates is the various state for all mirrored image groups
                          nullable: true
                          properties:
                            error:
                              description: Error is when the mirroring state is errored
                              type: integer
                            replaying:
                              description: Replaying is when the replay of the mirroring journal is on-going
                              type: integer
                            starting_replay:
                              description: StartingReplay is when the replay of the mirroring journal starts
                              type: integer
                            stopped:
                              description: Stopped is when the mirroring state is stopped
                              type: integer
                            stopping_replay:
                              description: StopReplaying is when the replay of the mirroring journal stops
                              type: integer
                            syncing:
                              description: Syncing is when the image is syncing
                              type: integer
                            unknown:
                              description: Unknown is when the mirroring state is unknown
                              type: integer
                          type: object
                        health:
                          description: Health is the mirroring health
                          type: string
                        image_health:
                          description: ImageHealth is the health of the mirrored image
                          type: string
                        image_states:
                          description: ImageStates is the various state for all mirrored images
                          nullable: true
                          properties:
                            error:
                              description: Error is when the mirroring state is errored
                              type: integer
                            replaying:
                              description: Replaying is when the replay of the mirroring journal is on-going
                              type: integer
                            starting_replay:
                              description: StartingReplay is when the replay of the mirroring journal starts
                              type: integer
                            stopped:
                              description: Stopped is when the mirroring state is stopped
                              type: integer
                            stopping_replay:
                              description: StopReplaying is when the replay of the mirroring journal stops
                              type: integer
                            syncing:
                              description: Syncing is when the image is syncing
                              type: integer
                            unknown:
                              description: Unknown is when the mirroring state is unknown
                              type: integer
                          type: object
                        states:
                          description: States is the various state for all mirrored images
                          nullable: true
                          properties:
                            error:
                              description: Error is when the mirroring state is errored
                              type: integer
                            replaying:
                              description: Replaying is when the replay of the mirroring journal is on-going
                              type: integer
                            starting_replay:
                              description: StartingReplay is when the replay of the mirroring journal starts
                              type: integer
                            stopped:
                              description: Stopped is when the mirroring state is stopped
                              type: integer
                            stopping_replay:
                              description: StopReplaying is when the replay of the mirroring journal stops
                              type: integer
                            syncing:
                              description: Syncing is when the image is syncing
                              type: integer
                            unknown:
                              description: Unknown is when the mirroring state is unknown
                              type: integer
                          type: object
                      type: object
                  type: object
                phase:
                  description: ConditionType represent a resource's status
                  type: string
                snapshotScheduleStatus:
                  description: SnapshotScheduleStatusSpec is the status of the snapshot schedule
                  properties:
                    details:
                      description: Details contains potential status errors
                      type: string
                    lastChanged:
                      description: LastChanged is the last time time the status last changed
                      type: string
                    lastChecked:
                      description: LastChecked is the last time time the status was checked
                      type: string
                    snapshotSchedules:
                      description: SnapshotSchedules is the list of snapshots scheduled
                      items:
                        description: SnapshotSchedulesSpec is the list of snapshot scheduled for images in a pool
                        properties:
                          image:
                            description: Image is the mirrored image
                            type: string
                          items:
                            description: Items is the list schedules times for a given snapshot
                            items:
                              description: SnapshotSchedule is a schedule
                              properties:
                                interval:
                                  description: Interval is the interval in which snapshots will be taken
                                  type: string
                                start_time:
                                  description: StartTime is the snapshot starting time
                                  type: string
                              type: object
                            type: array
                          namespace:
                            description: Namespace is the RADOS namespace the image is part of
                            type: string
                          pool:
                            description: Pool is the pool name
                            type: string
                        type: object
                      nullable: true
                      type: array
                  type: object
              type: object
              x-kubernetes-preserve-unknown-fields: true
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
    helm.sh/resource-policy: keep
  name: cephblockpools.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephBlockPool
    listKind: CephBlockPoolList
    plural: cephblockpools
    shortNames:
      - cephbp
    singular: cephblockpool
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .status.phase
          name: Phase
          type: string
        - jsonPath: .status.info.type
          name: Type
          type: string
        - jsonPath: .status.info.failureDomain
          name: FailureDomain
          type: string
        - jsonPath: .spec.replicated.size
          name: Replication
          priority: 1
          type: integer
        - jsonPath: .spec.erasureCoded.codingChunks
          name: EC-CodingChunks
          priority: 1
          type: integer
        - jsonPath: .spec.erasureCoded.dataChunks
          name: EC-DataChunks
          priority: 1
          type: integer
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v1
      schema:
        openAPIV3Schema:
          description: CephBlockPool represents a Ceph Storage Pool
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: |-
                NamedBlockPoolSpec allows a block pool to be created with a non-default name.
                This is more specific than the NamedPoolSpec so we get schema validation on the
                allowed pool names that can be specified.
              properties:
                application:
                  description: The application name to set on the pool. Only expected to be set for rgw pools.
                  type: string
                compressionMode:
                  description: |-
                    DEPRECATED: use Parameters instead, e.g., Parameters["compression_mode"] = "force"
                    The inline compression mode in Bluestore OSD to set to (options are: none, passive, aggressive, force)
                    Do NOT set a default value for kubebuilder as this will override the Parameters
                  enum:
                    - none
                    - passive
                    - aggressive
                    - force
                    - ""
                  nullable: true
                  type: string
                crushRoot:
                  description: The root of the crush hierarchy utilized by the pool
                  nullable: true
                  type: string
                deviceClass:
                  description: The device class the OSD should set to for use in the pool
                  nullable: true
                  type: string
                enableCrushUpdates:
                  description: Allow rook operator to change the pool CRUSH tunables once the pool is created
                  nullable: true
                  type: boolean
                enableRBDStats:
                  description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool
                  type: boolean
                erasureCoded:
                  description: The erasure code settings
                  properties:
                    algorithm:
                      description: |-
                        The algorithm for erasure coding.
                        If absent, defaults to the plugin specified in osd_pool_default_erasure_code_profile.
                      enum:
                        - isa
                        - jerasure
                      type: string
                    codingChunks:
                      description: |-
                        Number of coding chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
                        This is the number of OSDs that can be lost simultaneously before data cannot be recovered.
                      minimum: 0
                      type: integer
                    dataChunks:
                      description: |-
                        Number of data chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
                        The number of chunks required to recover an object when any single OSD is lost is the same
                        as dataChunks so be aware that the larger the number of data chunks, the higher the cost of recovery.
                      minimum: 0
                      type: integer
                  required:
                    - codingChunks
                    - dataChunks
                  type: object
                failureDomain:
                  description: 'The failure domain: osd/host/(region or zone if available) - technically also any type in the crush map'
                  type: string
                mirroring:
                  description: The mirroring settings
                  properties:
                    enabled:
                      description: Enabled whether this pool is mirrored or not
                      type: boolean
                    mode:
                      description: 'Mode is the mirroring mode: pool, image or init-only.'
                      enum:
                        - pool
                        - image
                        - init-only
                      type: string
                    peers:
                      description: Peers represents the peers spec
                      nullable: true
                      properties:
                        secretNames:
                          description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers
                          items:
                            type: string
                          type: array
                      type: object
                    snapshotSchedules:
                      description: SnapshotSchedules is the scheduling of snapshot for mirrored images/pools
                      items:
                        description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool
                        properties:
                          interval:
                            description: Interval represent the periodicity of the snapshot.
                            type: string
                          path:
                            description: Path is the path to snapshot, only valid for CephFS
                            type: string
                          startTime:
                            description: StartTime indicates when to start the snapshot
                            type: string
                        type: object
                      type: array
                  type: object
                name:
                  description: The desired name of the pool if different from the CephBlockPool CR name.
                  enum:
                    - .rgw.root
                    - .nfs
                    - .mgr
                  type: string
                parameters:
                  additionalProperties:
                    type: string
                  description: Parameters is a list of properties to enable on a given pool
                  nullable: true
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                quotas:
                  description: The quota settings
                  nullable: true
                  properties:
                    maxBytes:
                      description: |-
                        MaxBytes represents the quota in bytes
                        Deprecated in favor of MaxSize
                      format: int64
                      type: integer
                    maxObjects:
                      description: MaxObjects represents the quota in objects
                      format: int64
                      type: integer
                    maxSize:
                      description: MaxSize represents the quota in bytes as a string
                      pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE]i|[kMGTPE])?$
                      type: string
                  type: object
                replicated:
                  description: The replication settings
                  properties:
                    hybridStorage:
                      description: HybridStorage represents hybrid storage tier settings
                      nullable: true
                      properties:
                        primaryDeviceClass:
                          description: PrimaryDeviceClass represents high performance tier (for example SSD or NVME) for Primary OSD
                          minLength: 1
                          type: string
                        secondaryDeviceClass:
                          description: SecondaryDeviceClass represents low performance tier (for example HDDs) for remaining OSDs
                          minLength: 1
                          type: string
                      required:
                        - primaryDeviceClass
                        - secondaryDeviceClass
                      type: object
                    replicasPerFailureDomain:
                      description: ReplicasPerFailureDomain the number of replica in the specified failure domain
                      minimum: 1
                      type: integer
                    requireSafeReplicaSize:
                      description: RequireSafeReplicaSize if false allows you to set replica 1
                      type: boolean
                    size:
                      description: Size - Number of copies per object in a replicated storage pool, including the object itself (required for replicated pool type)
                      minimum: 0
                      type: integer
                    subFailureDomain:
                      description: SubFailureDomain the name of the sub-failure domain
                      type: string
                    targetSizeRatio:
                      description: TargetSizeRatio gives a hint (%) to Ceph in terms of expected consumption of the total cluster capacity
                      minimum: 0
                      type: number
                  required:
                    - size
                  type: object
                statusCheck:
                  description: The mirroring statusCheck
                  properties:
                    mirror:
                      description: HealthCheckSpec represents the health check of an object store bucket
                      nullable: true
                      properties:
                        disabled:
                          type: boolean
                        interval:
                          description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
                          type: string
                        timeout:
                          type: string
                      type: object
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
              type: object
            status:
              description: CephBlockPoolStatus represents the mirroring status of Ceph Storage Pool
              properties:
                cephx:
                  description: PeerTokenCephxStatus represents the cephx key rotation status for peer tokens
                  properties:
                    peerToken:
                      description: PeerToken shows the rotation status of the peer token associated with the `rbd-mirror-peer` user.
                      properties:
                        keyCephVersion:
                          description: |-
                            KeyCephVersion reports the Ceph version that created the current generation's keys. This is
                            same string format as reported by `CephCluster.status.version.version` to allow them to be
                            compared. E.g., `20.2.0-0`.
                            For all newly-created resources, this field set to the version of Ceph that created the key.
                            The special value "Uninitialized" indicates that keys are being created for the first time.
                            An empty string indicates that the version is unknown, as expected in brownfield deployments.
                          type: string
                        keyGeneration:
                          description: |-
                            KeyGeneration represents the CephX key generation for the last successful reconcile.
                            For all newly-created resources, this field is set to `1`.
                            When keys are rotated due to any rotation policy, the generation is incremented or updated to
                            the configured policy generation.
                            Generation `0` indicates that keys existed prior to the implementation of key tracking.
                          format: int32
                          type: integer
                      type: object
                  type: object
                conditions:
                  items:
                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.
                    properties:
                      lastHeartbeatTime:
                        format: date-time
                        type: string
                      lastTransitionTime:
                        format: date-time
                        type: string
                      message:
                        type: string
                      reason:
                        description: ConditionReason is a reason for a condition
                        type: string
                      status:
                        type: string
                      type:
                        description: ConditionType represent a resource's status
                        type: string
                    type: object
                  type: array
                info:
                  additionalProperties:
                    type: string
                  nullable: true
                  type: object
                mirroringInfo:
                  description: MirroringInfoSpec is the status of the pool/radosnamespace mirroring
                  properties:
                    details:
                      type: string
                    lastChanged:
                      type: string
                    lastChecked:
                      type: string
                    mode:
                      description: Mode is the mirroring mode
                      type: string
                    peers:
                      description: Peers are the list of peer sites connected to that cluster
                      items:
                        description: PeersSpec contains peer details
                        properties:
                          client_name:
                            description: ClientName is the CephX user used to connect to the peer
                            type: string
                          direction:
                            description: Direction is the peer mirroring direction
                            type: string
                          mirror_uuid:
                            description: MirrorUUID is the mirror UUID
                            type: string
                          site_name:
                            description: SiteName is the current site name
                            type: string
                          uuid:
                            description: UUID is the peer UUID
                            type: string
                        type: object
                      type: array
                    site_name:
                      description: SiteName is the current site name
                      type: string
                  type: object
                mirroringStatus:
                  description: MirroringStatusSpec is the status of the pool/radosNamespace mirroring
                  properties:
                    details:
                      description: Details contains potential status errors
                      type: string
                    lastChanged:
                      description: LastChanged is the last time time the status last changed
                      type: string
                    lastChecked:
                      description: LastChecked is the last time time the status was checked
                      type: string
                    summary:
                      description: Summary is the mirroring status summary
                      properties:
                        daemon_health:
                          description: DaemonHealth is the health of the mirroring daemon
                          type: string
                        group_health:
                          description: GroupHealth is the health of the mirrored image group
                          nullable: true
                          type: string
                        group_states:
                          description: GroupStates is the various state for all mirrored image groups
                          nullable: true
                          properties:
                            error:
                              description: Error is when the mirroring state is errored
                              type: integer
                            replaying:
                              description: Replaying is when the replay of the mirroring journal is on-going
                              type: integer
                            starting_replay:
                              description: StartingReplay is when the replay of the mirroring journal starts
                              type: integer
                            stopped:
                              description: Stopped is when the mirroring state is stopped
                              type: integer
                            stopping_replay:
                              description: StopReplaying is when the replay of the mirroring journal stops
                              type: integer
                            syncing:
                              description: Syncing is when the image is syncing
                              type: integer
                            unknown:
                              description: Unknown is when the mirroring state is unknown
                              type: integer
                          type: object
                        health:
                          description: Health is the mirroring health
                          type: string
                        image_health:
                          description: ImageHealth is the health of the mirrored image
                          type: string
                        image_states:
                          description: ImageStates is the various state for all mirrored images
                          nullable: true
                          properties:
                            error:
                              description: Error is when the mirroring state is errored
                              type: integer
                            replaying:
                              description: Replaying is when the replay of the mirroring journal is on-going
                              type: integer
                            starting_replay:
                              description: StartingReplay is when the replay of the mirroring journal starts
                              type: integer
                            stopped:
                              description: Stopped is when the mirroring state is stopped
                              type: integer
                            stopping_replay:
                              description: StopReplaying is when the replay of the mirroring journal stops
                              type: integer
                            syncing:
                              description: Syncing is when the image is syncing
                              type: integer
                            unknown:
                              description: Unknown is when the mirroring state is unknown
                              type: integer
                          type: object
                        states:
                          description: States is the various state for all mirrored images
                          nullable: true
                          properties:
                            error:
                              description: Error is when the mirroring state is errored
                              type: integer
                            replaying:
                              description: Replaying is when the replay of the mirroring journal is on-going
                              type: integer
                            starting_replay:
                              description: StartingReplay is when the replay of the mirroring journal starts
                              type: integer
                            stopped:
                              description: Stopped is when the mirroring state is stopped
                              type: integer
                            stopping_replay:
                              description: StopReplaying is when the replay of the mirroring journal stops
                              type: integer
                            syncing:
                              description: Syncing is when the image is syncing
                              type: integer
                            unknown:
                              description: Unknown is when the mirroring state is unknown
                              type: integer
                          type: object
                      type: object
                  type: object
                observedGeneration:
                  description: ObservedGeneration is the latest generation observed by the controller.
                  format: int64
                  type: integer
                phase:
                  description: ConditionType represent a resource's status
                  type: string
                poolID:
                  description: optional
                  type: integer
                snapshotScheduleStatus:
                  description: SnapshotScheduleStatusSpec is the status of the snapshot schedule
                  properties:
                    details:
                      description: Details contains potential status errors
                      type: string
                    lastChanged:
                      description: LastChanged is the last time time the status last changed
                      type: string
                    lastChecked:
                      description: LastChecked is the last time time the status was checked
                      type: string
                    snapshotSchedules:
                      description: SnapshotSchedules is the list of snapshots scheduled
                      items:
                        description: SnapshotSchedulesSpec is the list of snapshot scheduled for images in a pool
                        properties:
                          image:
                            description: Image is the mirrored image
                            type: string
                          items:
                            description: Items is the list schedules times for a given snapshot
                            items:
                              description: SnapshotSchedule is a schedule
                              properties:
                                interval:
                                  description: Interval is the interval in which snapshots will be taken
                                  type: string
                                start_time:
                                  description: StartTime is the snapshot starting time
                                  type: string
                              type: object
                            type: array
                          namespace:
                            description: Namespace is the RADOS namespace the image is part of
                            type: string
                          pool:
                            description: Pool is the pool name
                            type: string
                        type: object
                      nullable: true
                      type: array
                  type: object
              type: object
              x-kubernetes-preserve-unknown-fields: true
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
    helm.sh/resource-policy: keep
  name: cephbucketnotifications.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephBucketNotification
    listKind: CephBucketNotificationList
    plural: cephbucketnotifications
    shortNames:
      - cephbn
    singular: cephbucketnotification
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .status.phase
          name: Phase
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v1
      schema:
        openAPIV3Schema:
          description: CephBucketNotification represents a Bucket Notifications
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: BucketNotificationSpec represent the spec of a Bucket Notification
              properties:
                events:
                  description: List of events that should trigger the notification
                  items:
                    description: |-
                      BucketNotificationSpec represent the event type of the bucket notification
                      See: https://docs.ceph.com/en/latest/radosgw/s3-notification-compatibility/#event-types
                    enum:
                      - s3:ObjectCreated:*
                      - s3:ObjectCreated:Put
                      - s3:ObjectCreated:Post
                      - s3:ObjectCreated:Copy
                      - s3:ObjectCreated:CompleteMultipartUpload
                      - s3:ObjectRemoved:*
                      - s3:ObjectRemoved:Delete
                      - s3:ObjectRemoved:DeleteMarkerCreated
                      - s3:ObjectLifecycle:Expiration:Current
                      - s3:ObjectLifecycle:Expiration:NonCurrent
                      - s3:ObjectLifecycle:Expiration:DeleteMarker
                      - s3:ObjectLifecycle:Expiration:AbortMultipartUpload
                      - s3:ObjectLifecycle:Transition:Current
                      - s3:ObjectLifecycle:Transition:NonCurrent
                      - s3:LifecycleExpiration:*
                      - s3:LifecycleExpiration:Delete
                      - s3:LifecycleExpiration:DeleteMarkerCreated
                      - s3:LifecycleTransition
                      - s3:ObjectSynced:*
                      - s3:ObjectSynced:Create
                      - s3:ObjectSynced:Delete
                      - s3:ObjectSynced:DeletionMarkerCreated
                      - s3:Replication:*
                      - s3:Replication:Create
                      - s3:Replication:Delete
                      - s3:Replication:DeletionMarkerCreated
                      - s3:ObjectRestore:*
                      - s3:ObjectRestore:Post
                      - s3:ObjectRestore:Completed
                      - s3:ObjectRestore:Delete
                    type: string
                  type: array
                filter:
                  description: Spec of notification filter
                  properties:
                    keyFilters:
                      description: Filters based on the object's key
                      items:
                        description: NotificationKeyFilterRule represent a single key rule in the Notification Filter spec
                        properties:
                          name:
                            description: Name of the filter - prefix/suffix/regex
                            enum:
                              - prefix
                              - suffix
                              - regex
                            type: string
                          value:
                            description: Value to filter on
                            type: string
                        required:
                          - name
                          - value
                        type: object
                      type: array
                    metadataFilters:
                      description: Filters based on the object's metadata
                      items:
                        description: NotificationFilterRule represent a single rule in the Notification Filter spec
                        properties:
                          name:
                            description: Name of the metadata or tag
                            minLength: 1
                            type: string
                          value:
                            description: Value to filter on
                            type: string
                        required:
                          - name
                          - value
                        type: object
                      type: array
                    tagFilters:
                      description: Filters based on the object's tags
                      items:
                        description: NotificationFilterRule represent a single rule in the Notification Filter spec
                        properties:
                          name:
                            description: Name of the metadata or tag
                            minLength: 1
                            type: string
                          value:
                            description: Value to filter on
                            type: string
                        required:
                          - name
                          - value
                        type: object
                      type: array
                  type: object
                topic:
                  description: The name of the topic associated with this notification
                  minLength: 1
                  type: string
              required:
                - topic
              type: object
            status:
              description: Status represents the status of an object
              properties:
                conditions:
                  items:
                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.
                    properties:
                      lastHeartbeatTime:
                        format: date-time
                        type: string
                      lastTransitionTime:
                        format: date-time
                        type: string
                      message:
                        type: string
                      reason:
                        description: ConditionReason is a reason for a condition
                        type: string
                      status:
                        type: string
                      type:
                        description: ConditionType represent a resource's status
                        type: string
                    type: object
                  type: array
                observedGeneration:
                  description: ObservedGeneration is the latest generation observed by the controller.
                  format: int64
                  type: integer
                phase:
                  type: string
              type: object
              x-kubernetes-preserve-unknown-fields: true
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
    helm.sh/resource-policy: keep
  name: cephbuckettopics.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephBucketTopic
    listKind: CephBucketTopicList
    plural: cephbuckettopics
    shortNames:
      - cephbt
    singular: cephbuckettopic
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .status.phase
          name: Phase
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v1
      schema:
        openAPIV3Schema:
          description: CephBucketTopic represents a Ceph Object Topic for Bucket Notifications
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: BucketTopicSpec represent the spec of a Bucket Topic
              properties:
                endpoint:
                  description: Contains the endpoint spec of the topic
                  properties:
                    amqp:
                      description: Spec of AMQP endpoint
                      properties:
                        ackLevel:
                          default: broker
                          description: The ack level required for this topic (none/broker/routeable)
                          enum:
                            - none
                            - broker
                            - routeable
                          type: string
                        disableVerifySSL:
                          description: Indicate whether the server certificate is validated by the client or not
                          type: boolean
                        exchange:
                          description: Name of the exchange that is used to route messages based on topics
                          minLength: 1
                          type: string
                        uri:
                          description: The URI of the AMQP endpoint to push notification to
                          minLength: 1
                          type: string
                      required:
                        - exchange
                        - uri
                      type: object
                    http:
                      description: Spec of HTTP endpoint
                      properties:
                        disableVerifySSL:
                          description: Indicate whether the server certificate is validated by the client or not
                          type: boolean
                        sendCloudEvents:
                          description: 'Send the notifications with the CloudEvents header: https://github.com/cloudevents/spec/blob/main/cloudevents/adapters/aws-s3.md'
                          type: boolean
                        uri:
                          description: The URI of the HTTP endpoint to push notification to
                          minLength: 1
                          type: string
                      required:
                        - uri
                      type: object
                    kafka:
                      description: Spec of Kafka endpoint
                      properties:
                        ackLevel:
                          default: broker
                          description: The ack level required for this topic (none/broker)
                          enum:
                            - none
                            - broker
                          type: string
                        disableVerifySSL:
                          description: Indicate whether the server certificate is validated by the client or not
                          type: boolean
                        mechanism:
                          default: PLAIN
                          description: The authentication mechanism for this topic (PLAIN/SCRAM-SHA-512/SCRAM-SHA-256/GSSAPI/OAUTHBEARER)
                          enum:
                            - PLAIN
                            - SCRAM-SHA-512
                            - SCRAM-SHA-256
                            - GSSAPI
                            - OAUTHBEARER
                          type: string
                        passwordSecretRef:
                          description: The kafka password to use for authentication
                          properties:
                            key:
                              description: The key of the secret to select from.  Must be a valid secret key.
                              type: string
                            name:
                              default: ""
                              description: |-
                                Name of the referent.
                                This field is effectively required, but due to backwards compatibility is
                                allowed to be empty. Instances of this type with an empty value here are
                                almost certainly wrong.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must be defined
                              type: boolean
                          required:
                            - key
                          type: object
                          x-kubernetes-map-type: atomic
                        uri:
                          description: The URI of the Kafka endpoint to push notification to
                          minLength: 1
                          type: string
                        useSSL:
                          description: Indicate whether to use SSL when communicating with the broker
                          type: boolean
                        userSecretRef:
                          description: The kafka user name to use for authentication
                          properties:
                            key:
                              description: The key of the secret to select from.  Must be a valid secret key.
                              type: string
                            name:
                              default: ""
                              description: |-
                                Name of the referent.
                                This field is effectively required, but due to backwards compatibility is
                                allowed to be empty. Instances of this type with an empty value here are
                                almost certainly wrong.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                            optional:
                              description: Specify whether the Secret or its key must be defined
                              type: boolean
                          required:
                            - key
                          type: object
                          x-kubernetes-map-type: atomic
                      required:
                        - uri
                      type: object
                  type: object
                objectStoreName:
                  description: The name of the object store on which to define the topic
                  minLength: 1
                  type: string
                objectStoreNamespace:
                  description: The namespace of the object store on which to define the topic
                  minLength: 1
                  type: string
                opaqueData:
                  description: Data which is sent in each event
                  type: string
                persistent:
                  description: Indication whether notifications to this endpoint are persistent or not
                  type: boolean
              required:
                - endpoint
                - objectStoreName
                - objectStoreNamespace
              type: object
            status:
              description: BucketTopicStatus represents the Status of a CephBucketTopic
              properties:
                ARN:
                  description: The ARN of the topic generated by the RGW
                  nullable: true
                  type: string
                observedGeneration:
                  description: ObservedGeneration is the latest generation observed by the controller.
                  format: int64
                  type: integer
                phase:
                  type: string
                secrets:
                  items:
                    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
                      resourceVersion:
                        type: string
                      uid:
                        description: |-
                          UID is a type that holds unique ID values, including UUIDs.  Because we
                          don't ONLY use UUIDs, this is an alias to string.  Being a type captures
                          intent and helps make sure that UIDs and names do not get conflated.
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                  type: array
              type: object
              x-kubernetes-preserve-unknown-fields: true
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
    helm.sh/resource-policy: keep
  name: cephclients.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephClient
    listKind: CephClientList
    plural: cephclients
    shortNames:
      - cephcl
    singular: cephclient
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .status.phase
          name: Phase
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v1
      schema:
        openAPIV3Schema:
          description: CephClient represents a Ceph Client
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: Spec represents the specification of a Ceph Client
              properties:
                caps:
                  additionalProperties:
                    type: string
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                name:
                  type: string
                removeSecret:
                  description: |-
                    RemoveSecret indicates whether the current secret for this ceph client should be removed or not.
                    If true, the K8s secret will be deleted, but the cephx keyring will remain until the CR is deleted.
                  type: boolean
                secretName:
                  description: |-
                    SecretName is the name of the secret created for this ceph client.
                    If not specified, the default name is "rook-ceph-client-" as a prefix to the CR name.
                  type: string
                  x-kubernetes-validations:
                    - message: SecretName is immutable and cannot be changed
                      rule: self == oldSelf
                security:
                  description: Security represents security settings
                  properties:
                    cephx:
                      description: 'CephX configures CephX key settings. More: https://docs.ceph.com/en/latest/dev/cephx/'
                      properties:
                        keyGeneration:
                          description: |-
                            KeyGeneration specifies the desired CephX key generation. This is used when KeyRotationPolicy
                            is KeyGeneration and ignored for other policies. If this is set to greater than the current
                            key generation, relevant keys will be rotated, and the generation value will be updated to
                            this new value (generation values are not necessarily incremental, though that is the
                            intended use case). If this is set to less than or equal to the current key generation, keys
                            are not rotated.
                          format: int32
                          maximum: 4294967295
                          minimum: 0
                          type: integer
                          x-kubernetes-validations:
                            - message: keyGeneration cannot be decreased
                              rule: self >= oldSelf
                        keyRotationPolicy:
                          description: |-
                            KeyRotationPolicy controls if and when CephX keys are rotated after initial creation.
                            One of Disabled, or KeyGeneration. Default Disabled.
                          enum:
                            - ""
                            - Disabled
                            - KeyGeneration
                          type: string
                      type: object
                  type: object
              required:
                - caps
              type: object
            status:
              description: Status represents the status of a Ceph Client
              properties:
                cephx:
                  properties:
                    keyCephVersion:
                      description: |-
                        KeyCephVersion reports the Ceph version that created the current generation's keys. This is
                        same string format as reported by `CephCluster.status.version.version` to allow them to be
                        compared. E.g., `20.2.0-0`.
                        For all newly-created resources, this field set to the version of Ceph that created the key.
                        The special value "Uninitialized" indicates that keys are being created for the first time.
                        An empty string indicates that the version is unknown, as expected in brownfield deployments.
                      type: string
                    keyGeneration:
                      description: |-
                        KeyGeneration represents the CephX key generation for the last successful reconcile.
                        For all newly-created resources, this field is set to `1`.
                        When keys are rotated due to any rotation policy, the generation is incremented or updated to
                        the configured policy generation.
                        Generation `0` indicates that keys existed prior to the implementation of key tracking.
                      format: int32
                      type: integer
                  type: object
                info:
                  additionalProperties:
                    type: string
                  nullable: true
                  type: object
                observedGeneration:
                  description: ObservedGeneration is the latest generation observed by the controller.
                  format: int64
                  type: integer
                phase:
                  description: ConditionType represent a resource's status
                  type: string
              type: object
              x-kubernetes-preserve-unknown-fields: true
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
    helm.sh/resource-policy: keep
  name: cephclusters.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephCluster
    listKind: CephClusterList
    plural: cephclusters
    shortNames:
      - ceph
    singular: cephcluster
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - description: Directory used on the K8s nodes
          jsonPath: .spec.dataDirHostPath
          name: DataDirHostPath
          type: string
        - description: Number of MONs
          jsonPath: .spec.mon.count
          name: MonCount
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
        - jsonPath: .status.phase
          name: Phase
          type: string
        - description: Message
          jsonPath: .status.message
          name: Message
          type: string
        - description: Ceph Health
          jsonPath: .status.ceph.health
          name: Health
          type: string
        - jsonPath: .spec.external.enable
          name: External
          type: boolean
        - description: Ceph FSID
          jsonPath: .status.ceph.fsid
          name: FSID
          type: string
      name: v1
      schema:
        openAPIV3Schema:
          description: CephCluster is a Ceph storage cluster
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: ClusterSpec represents the specification of Ceph Cluster
              properties:
                annotations:
                  additionalProperties:
                    additionalProperties:
                      type: string
                    description: Annotations are annotations
                    type: object
                  description: The annotations-related configuration to add/set on each Pod related object.
                  nullable: true
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                cephConfig:
                  additionalProperties:
                    additionalProperties:
                      type: string
                    type: object
                  description: Ceph Config options
                  nullable: true
                  type: object
                cephConfigFromSecret:
                  additionalProperties:
                    additionalProperties:
                      description: SecretKeySelector selects a key of a Secret.
                      properties:
                        key:
                          description: The key of the secret to select from.  Must be a valid secret key.
                          type: string
                        name:
                          default: ""
                          description: |-
                            Name of the referent.
                            This field is effectively required, but due to backwards compatibility is
                            allowed to be empty. Instances of this type with an empty value here are
                            almost certainly wrong.
                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                          type: string
                        optional:
                          description: Specify whether the Secret or its key must be defined
                          type: boolean
                      required:
                        - key
                      type: object
                      x-kubernetes-map-type: atomic
                    type: object
                  description: CephConfigFromSecret works exactly like CephConfig but takes config value from Secret Key reference.
                  nullable: true
                  type: object
                cephVersion:
                  description: The version information that instructs Rook to orchestrate a particular version of Ceph.
                  nullable: true
                  properties:
                    allowUnsupported:
                      description: Whether to allow unsupported versions (do not set to true in production)
                      type: boolean
                    image:
                      description: |-
                        Image is the container image used to launch the ceph daemons, such as quay.io/ceph/ceph:<tag>
                        The full list of images can be found at https://quay.io/repository/ceph/ceph?tab=tags
                      type: string
                    imagePullPolicy:
                      description: |-
                        ImagePullPolicy describes a policy for if/when to pull a container image
                        One of Always, Never, IfNotPresent.
                      enum:
                        - IfNotPresent
                        - Always
                        - Never
                        - ""
                      type: string
                  type: object
                cleanupPolicy:
                  description: |-
                    Indicates user intent when deleting a cluster; blocks orchestration and should not be set if cluster
                    deletion is not imminent.
                  nullable: true
                  properties:
                    allowUninstallWithVolumes:
                      description: AllowUninstallWithVolumes defines whether we can proceed with the uninstall if they are RBD images still present
                      type: boolean
                    confirmation:
                      description: Confirmation represents the cleanup confirmation
                      nullable: true
                      pattern: ^$|^yes-really-destroy-data$
                      type: string
                    sanitizeDisks:
                      description: SanitizeDisks represents way we sanitize disks
                      nullable: true
                      properties:
                        dataSource:
                          description: DataSource is the data source to use to sanitize the disk with
                          enum:
                            - zero
                            - random
                          type: string
                        iteration:
                          description: Iteration is the number of pass to apply the sanitizing
                          format: int32
                          type: integer
                        method:
                          description: Method is the method we use to sanitize disks
                          enum:
                            - complete
                            - quick
                          type: string
                      type: object
                    wipeDevicesFromOtherClusters:
                      description: |-
                        WipeDevicesFromOtherClusters wipes the OSD disks belonging to other clusters. This is useful in scenarios where ceph cluster
                        was reinstalled but OSD disk still contains the metadata from previous ceph cluster.
                      type: boolean
                  type: object
                continueUpgradeAfterChecksEvenIfNotHealthy:
                  description: ContinueUpgradeAfterChecksEvenIfNotHealthy defines if an upgrade should continue even if PGs are not clean
                  type: boolean
                crashCollector:
                  description: A spec for the crash controller
                  nullable: true
                  properties:
                    daysToRetain:
                      description: DaysToRetain represents the number of days to retain crash until they get pruned
                      type: integer
                    disable:
                      description: Disable determines whether we should enable the crash collector
                      type: boolean
                  type: object
                csi:
                  description: CSI Driver Options applied per cluster.
                  properties:
                    cephfs:
                      description: CephFS defines CSI Driver settings for CephFS driver.
                      properties:
                        fuseMountOptions:
                          description: FuseMountOptions defines the mount options for ceph fuse mounter.
                          type: string
                        kernelMountOptions:
                          description: KernelMountOptions defines the mount options for kernel mounter.
                          type: string
                      type: object
                    readAffinity:
                      description: ReadAffinity defines the read affinity settings for CSI driver.
                      properties:
                        crushLocationLabels:
                          description: |-
                            CrushLocationLabels defines which node labels to use
                            as CRUSH location. This should correspond to the values set in
                            the CRUSH map.
                          items:
                            type: string
                          type: array
                        enabled:
                          description: Enables read affinity for CSI driver.
                          type: boolean
                      type: object
                    skipUserCreation:
                      description: |-
                        SkipUserCreation determines whether CSI users and their associated secrets should be skipped.
                        If set to true, the user must manually manage these secrets.
                      type: boolean
                  type: object
                dashboard:
                  description: Dashboard settings
                  nullable: true
                  properties:
                    enabled:
                      description: Enabled determines whether to enable the dashboard
                      type: boolean
                    port:
                      description: Port is the dashboard webserver port
                      maximum: 65535
                      minimum: 0
                      type: integer
                    prometheusEndpoint:
                      description: Endpoint for the Prometheus host
                      type: string
                    prometheusEndpointSSLVerify:
                      description: Whether to verify the ssl endpoint for prometheus. Set to false for a self-signed cert.
                      type: boolean
                    ssl:
                      description: SSL determines whether SSL should be used
                      type: boolean
                    urlPrefix:
                      description: URLPrefix is a prefix for all URLs to use the dashboard with a reverse proxy
                      type: string
                  type: object
                dataDirHostPath:
                  description: The path on the host where config and data can be persisted
                  pattern: ^/(\S+)
                  type: string
                  x-kubernetes-validations:
                    - message: DataDirHostPath is immutable
                      rule: self == oldSelf
                disruptionManagement:
                  description: A spec for configuring disruption management.
                  nullable: true
                  properties:
                    machineDisruptionBudgetNamespace:
                      description: Deprecated. Namespace to look for MDBs by the machineDisruptionBudgetController
                      type: string
                    manageMachineDisruptionBudgets:
                      description: Deprecated. This enables management of machinedisruptionbudgets.
                      type: boolean
                    managePodBudgets:
                      description: This enables management of poddisruptionbudgets
                      type: boolean
                    osdMaintenanceTimeout:
                      description: |-
                        OSDMaintenanceTimeout sets how many additional minutes the DOWN/OUT interval is for drained failure domains
                        it only works if managePodBudgets is true.
                        the default is 30 minutes
                      format: int64
                      type: integer
                    pgHealthCheckTimeout:
                      description: 'DEPRECATED: PGHealthCheckTimeout is no longer implemented'
                      format: int64
                      type: integer
                    pgHealthyRegex:
                      description: |-
                        PgHealthyRegex is the regular expression that is used to determine which PG states should be considered healthy.
                        The default is `^active(\+(clean|deep|scrubbing|snaptrim|snaptrim_wait))+$`
                      type: string
                  type: object
                external:
                  description: |-
                    Whether the Ceph Cluster is running external to this Kubernetes cluster
                    mon, mgr, osd, mds, and discover daemons will not be created for external clusters.
                  nullable: true
                  properties:
                    enable:
                      description: Enable determines whether external mode is enabled or not
                      type: boolean
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                healthCheck:
                  description: Internal daemon healthchecks and liveness probe
                  nullable: true
                  properties:
                    daemonHealth:
                      description: DaemonHealth is the health check for a given daemon
                      nullable: true
                      properties:
                        mon:
                          description: Monitor represents the health check settings for the Ceph monitor
                          nullable: true
                          properties:
                            disabled:
                              type: boolean
                            interval:
                              description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
                              type: string
                            timeout:
                              type: string
                          type: object
                        osd:
                          description: ObjectStorageDaemon represents the health check settings for the Ceph OSDs
                          nullable: true
                          properties:
                            disabled:
                              type: boolean
                            interval:
                              description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
                              type: string
                            timeout:
                              type: string
                          type: object
                        status:
                          description: Status represents the health check settings for the Ceph health
                          nullable: true
                          properties:
                            disabled:
                              type: boolean
                            interval:
                              description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
                              type: string
                            timeout:
                              type: string
                          type: object
                      type: object
                    livenessProbe:
                      additionalProperties:
                        description: ProbeSpec is a wrapper around Probe so it can be enabled or disabled for a Ceph daemon
                        properties:
                          disabled:
                            description: Disabled determines whether probe is disable or not
                            type: boolean
                          probe:
                            description: |-
                              Probe describes a health check to be performed against a container to determine whether it is
                              alive or ready to receive traffic.
                            properties:
                              exec:
                                description: Exec specifies a command to execute in the container.
                                properties:
                                  command:
                                    description: |-
                                      Command is the command line to execute inside the container, the working directory for the
                                      command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                      not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                      a shell, you need to explicitly call out to that shell.
                                      Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              failureThreshold:
                                description: |-
                                  Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                  Defaults to 3. Minimum value is 1.
                                format: int32
                                type: integer
                              grpc:
                                description: GRPC specifies a GRPC HealthCheckRequest.
                                properties:
                                  port:
                                    description: Port number of the gRPC service. Number must be in the range 1 to 65535.
                                    format: int32
                                    type: integer
                                  service:
                                    default: ""
                                    description: |-
                                      Service is the name of the service to place in the gRPC HealthCheckRequest
                                      (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                      If this is not specified, the default behavior is defined by gRPC.
                                    type: string
                                required:
                                  - port
                                type: object
                              httpGet:
                                description: HTTPGet specifies an HTTP GET request to perform.
                                properties:
                                  host:
                                    description: |-
                                      Host name to connect to, defaults to the pod IP. You probably want to set
                                      "Host" in httpHeaders instead.
                                    type: string
                                  httpHeaders:
                                    description: Custom headers to set in the request. HTTP allows repeated headers.
                                    items:
                                      description: HTTPHeader describes a custom header to be used in HTTP probes
                                      properties:
                                        name:
                                          description: |-
                                            The header field name.
                                            This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                          type: string
                                        value:
                                          description: The header field value
                                          type: string
                                      required:
                                        - name
                                        - value
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  path:
                                    description: Path to access on the HTTP server.
                                    type: string
                                  port:
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    description: |-
                                      Name or number of the port to access on the container.
                                      Number must be in the range 1 to 65535.
                                      Name must be an IANA_SVC_NAME.
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    description: |-
                                      Scheme to use for connecting to the host.
                                      Defaults to HTTP.
                                    type: string
                                required:
                                  - port
                                type: object
                              initialDelaySeconds:
                                description: |-
                                  Number of seconds after the container has started before liveness probes are initiated.
                                  More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                format: int32
                                type: integer
                              periodSeconds:
                                description: |-
                                  How often (in seconds) to perform the probe.
                                  Default to 10 seconds. Minimum value is 1.
                                format: int32
                                type: integer
                              successThreshold:
                                description: |-
                                  Minimum consecutive successes for the probe to be considered successful after having failed.
                                  Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                                format: int32
                                type: integer
                              tcpSocket:
                                description: TCPSocket specifies a connection to a TCP port.
                                properties:
                                  host:
                                    description: 'Optional: Host name to connect to, defaults to the pod IP.'
                                    type: string
                                  port:
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    description: |-
                                      Number or name of the port to access on the container.
                                      Number must be in the range 1 to 65535.
                                      Name must be an IANA_SVC_NAME.
                                    x-kubernetes-int-or-string: true
                                required:
                                  - port
                                type: object
                              terminationGracePeriodSeconds:
                                format: int64
                                type: integer
                              timeoutSeconds:
                                description: |-
                                  Number of seconds after which the probe times out.
                                  Defaults to 1 second. Minimum value is 1.
                                  More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                format: int32
                                type: integer
                            type: object
                        type: object
                      description: LivenessProbe allows changing the livenessProbe configuration for a given daemon
                      type: object
                    startupProbe:
                      additionalProperties:
                        description: ProbeSpec is a wrapper around Probe so it can be enabled or disabled for a Ceph daemon
                        properties:
                          disabled:
                            description: Disabled determines whether probe is disable or not
                            type: boolean
                          probe:
                            description: |-
                              Probe describes a health check to be performed against a container to determine whether it is
                              alive or ready to receive traffic.
                            properties:
                              exec:
                                description: Exec specifies a command to execute in the container.
                                properties:
                                  command:
                                    description: |-
                                      Command is the command line to execute inside the container, the working directory for the
                                      command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                      not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                      a shell, you need to explicitly call out to that shell.
                                      Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              failureThreshold:
                                description: |-
                                  Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                  Defaults to 3. Minimum value is 1.
                                format: int32
                                type: integer
                              grpc:
                                description: GRPC specifies a GRPC HealthCheckRequest.
                                properties:
                                  port:
                                    description: Port number of the gRPC service. Number must be in the range 1 to 65535.
                                    format: int32
                                    type: integer
                                  service:
                                    default: ""
                                    description: |-
                                      Service is the name of the service to place in the gRPC HealthCheckRequest
                                      (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                      If this is not specified, the default behavior is defined by gRPC.
                                    type: string
                                required:
                                  - port
                                type: object
                              httpGet:
                                description: HTTPGet specifies an HTTP GET request to perform.
                                properties:
                                  host:
                                    description: |-
                                      Host name to connect to, defaults to the pod IP. You probably want to set
                                      "Host" in httpHeaders instead.
                                    type: string
                                  httpHeaders:
                                    description: Custom headers to set in the request. HTTP allows repeated headers.
                                    items:
                                      description: HTTPHeader describes a custom header to be used in HTTP probes
                                      properties:
                                        name:
                                          description: |-
                                            The header field name.
                                            This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                          type: string
                                        value:
                                          description: The header field value
                                          type: string
                                      required:
                                        - name
                                        - value
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  path:
                                    description: Path to access on the HTTP server.
                                    type: string
                                  port:
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    description: |-
                                      Name or number of the port to access on the container.
                                      Number must be in the range 1 to 65535.
                                      Name must be an IANA_SVC_NAME.
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    description: |-
                                      Scheme to use for connecting to the host.
                                      Defaults to HTTP.
                                    type: string
                                required:
                                  - port
                                type: object
                              initialDelaySeconds:
                                description: |-
                                  Number of seconds after the container has started before liveness probes are initiated.
                                  More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                format: int32
                                type: integer
                              periodSeconds:
                                description: |-
                                  How often (in seconds) to perform the probe.
                                  Default to 10 seconds. Minimum value is 1.
                                format: int32
                                type: integer
                              successThreshold:
                                description: |-
                                  Minimum consecutive successes for the probe to be considered successful after having failed.
                                  Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                                format: int32
                                type: integer
                              tcpSocket:
                                description: TCPSocket specifies a connection to a TCP port.
                                properties:
                                  host:
                                    description: 'Optional: Host name to connect to, defaults to the pod IP.'
                                    type: string
                                  port:
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    description: |-
                                      Number or name of the port to access on the container.
                                      Number must be in the range 1 to 65535.
                                      Name must be an IANA_SVC_NAME.
                                    x-kubernetes-int-or-string: true
                                required:
                                  - port
                                type: object
                              terminationGracePeriodSeconds:
                                format: int64
                                type: integer
                              timeoutSeconds:
                                description: |-
                                  Number of seconds after which the probe times out.
                                  Defaults to 1 second. Minimum value is 1.
                                  More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                format: int32
                                type: integer
                            type: object
                        type: object
                      description: StartupProbe allows changing the startupProbe configuration for a given daemon
                      type: object
                  type: object
                labels:
                  additionalProperties:
                    additionalProperties:
                      type: string
                    description: Labels are label for a given daemons
                    type: object
                  description: The labels-related configuration to add/set on each Pod related object.
                  nullable: true
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                logCollector:
                  description: Logging represents loggings settings
                  nullable: true
                  properties:
                    enabled:
                      description: Enabled represents whether the log collector is enabled
                      type: boolean
                    maxLogSize:
                      anyOf:
                        - type: integer
                        - type: string
                      description: MaxLogSize is the maximum size of the log per ceph daemons. Must be at least 1M.
                      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.
                      pattern: ^$|^(hourly|daily|weekly|monthly|1h|24h|1d)$
                      type: string
                  type: object
                mgr:
                  description: A spec for mgr related options
                  nullable: true
                  properties:
                    allowMultiplePerNode:
                      description: AllowMultiplePerNode allows to run multiple managers on the same node (not recommended)
                      type: boolean
                    count:
                      description: Count is the number of manager daemons to run
                      maximum: 5
                      minimum: 0
                      type: integer
                    hostNetwork:
                      description: Whether host networking is enabled for the Ceph Mgr. If not set, the network settings from CephCluster.spec.networking will be applied.
                      type: boolean
                    modules:
                      description: Modules is the list of ceph manager modules to enable/disable
                      items:
                        description: Module represents mgr modules that the user wants to enable or disable
                        properties:
                          enabled:
                            description: Enabled determines whether a module should be enabled or not
                            type: boolean
                          name:
                            description: Name is the name of the ceph manager module
                            type: string
                          settings:
                            description: Settings to further configure the module
                            properties:
                              balancerMode:
                                description: BalancerMode sets the `balancer` module with different modes like `upmap`, `crush-compact` etc
                                enum:
                                  - ""
                                  - crush-compat
                                  - upmap
                                  - read
                                  - upmap-read
                                type: string
                            type: object
                        type: object
                      nullable: true
                      type: array
                  type: object
                mon:
                  description: A spec for mon related options
                  nullable: true
                  properties:
                    allowMultiplePerNode:
                      description: AllowMultiplePerNode determines if we can run multiple monitors on the same node (not recommended)
                      type: boolean
                    count:
                      description: Count is the number of Ceph monitors
                      maximum: 9
                      minimum: 0
                      type: integer
                    externalMonIDs:
                      description: |-
                        ExternalMonIDs - optional list of monitor IDs which are deployed externally and not managed by Rook.
                        If set, Rook will not remove mons with given IDs from quorum.
                        This parameter is used only for local Rook cluster running in normal mode
                        and will be ignored if external or stretched mode is used.
                        leading
                      items:
                        type: string
                      type: array
                    failureDomainLabel:
                      type: string
                    stretchCluster:
                      description: StretchCluster is the stretch cluster specification
                      properties:
                        failureDomainLabel:
                          description: 'FailureDomainLabel the failure domain name (e,g: zone)'
                          type: string
                        subFailureDomain:
                          description: SubFailureDomain is the failure domain within a zone
                          type: string
                        zones:
                          description: Zones is the list of zones
                          items:
                            description: MonZoneSpec represents the specification of a zone in a Ceph Cluster
                            properties:
                              arbiter:
                                description: Arbiter determines if the zone contains the arbiter used for stretch cluster mode
                                type: boolean
                              name:
                                description: Name is the name of the zone
                                type: string
                              volumeClaimTemplate:
                                description: VolumeClaimTemplate is the PVC template
                                properties:
                                  metadata:
                                    description: |-
                                      Standard object's metadata.
                                      More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
                                    properties:
                                      annotations:
                                        additionalProperties:
                                          type: string
                                        type: object
                                      finalizers:
                                        items:
                                          type: string
                                        type: array
                                      labels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                      name:
                                        type: string
                                      namespace:
                                        type: string
                                    type: object
                                  spec:
                                    description: |-
                                      spec defines the desired characteristics of a volume requested by a pod author.
                                      More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                    properties:
                                      accessModes:
                                        description: |-
                                          accessModes contains the desired access modes the volume should have.
                                          More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      dataSource:
                                        description: |-
                                          dataSource field can be used to specify either:
                                          * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
                                          * An existing PVC (PersistentVolumeClaim)
                                          If the provisioner or an external controller can support the specified data source,
                                          it will create a new volume based on the contents of the specified data source.
                                          When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
                                          and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
                                          If the namespace is specified, then dataSourceRef will not be copied to dataSource.
                                        properties:
                                          apiGroup:
                                            description: |-
                                              APIGroup is the group for the resource being referenced.
                                              If APIGroup is not specified, the specified Kind must be in the core API group.
                                              For any other third-party types, APIGroup is required.
                                            type: string
                                          kind:
                                            description: Kind is the type of resource being referenced
                                            type: string
                                          name:
                                            description: Name is the name of resource being referenced
                                            type: string
                                        required:
                                          - kind
                                          - name
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      dataSourceRef:
                                        description: |-
                                          dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
                                          volume is desired. This may be any object from a non-empty API group (non
                                          core object) or a PersistentVolumeClaim object.
                                          When this field is specified, volume binding will only succeed if the type of
                                          the specified object matches some installed volume populator or dynamic
                                          provisioner.
                                          This field will replace the functionality of the dataSource field and as such
                                          if both fields are non-empty, they must have the same value. For backwards
                                          compatibility, when namespace isn't specified in dataSourceRef,
                                          both fields (dataSource and dataSourceRef) will be set to the same
                                          value automatically if one of them is empty and the other is non-empty.
                                          When namespace is specified in dataSourceRef,
                                          dataSource isn't set to the same value and must be empty.
                                          There are three important differences between dataSource and dataSourceRef:
                                          * While dataSource only allows two specific types of objects, dataSourceRef
                                            allows any non-core object, as well as PersistentVolumeClaim objects.
                                          * While dataSource ignores disallowed values (dropping them), dataSourceRef
                                            preserves all values, and generates an error if a disallowed value is
                                            specified.
                                          * While dataSource only allows local objects, dataSourceRef allows objects
                                            in any namespaces.
                                          (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
                                          (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                        properties:
                                          apiGroup:
                                            description: |-
                                              APIGroup is the group for the resource being referenced.
                                              If APIGroup is not specified, the specified Kind must be in the core API group.
                                              For any other third-party types, APIGroup is required.
                                            type: string
                                          kind:
                                            description: Kind is the type of resource being referenced
                                            type: string
                                          name:
                                            description: Name is the name of resource being referenced
                                            type: string
                                          namespace:
                                            description: |-
                                              Namespace is the namespace of resource being referenced
                                              Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
                                              (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                            type: string
                                        required:
                                          - kind
                                          - name
                                        type: object
                                      resources:
                                        description: |-
                                          resources represents the minimum resources the volume should have.
                                          Users are allowed to specify resource requirements
                                          that are lower than previous value but must still be higher than capacity recorded in the
                                          status field of the claim.
                                          More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
                                        properties:
                                          limits:
                                            additionalProperties:
                                              anyOf:
                                                - type: integer
                                                - type: string
                                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                              x-kubernetes-int-or-string: true
                                            description: |-
                                              Limits describes the maximum amount of compute resources allowed.
                                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                            type: object
                                          requests:
                                            additionalProperties:
                                              anyOf:
                                                - type: integer
                                                - type: string
                                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                              x-kubernetes-int-or-string: true
                                            description: |-
                                              Requests describes the minimum amount of compute resources required.
                                              If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                              otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                            type: object
                                        type: object
                                      selector:
                                        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.
                                            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.
                                                  type: string
                                                operator:
                                                  description: |-
                                                    operator represents a key's relationship to a set of values.
                                                    Valid operators are In, NotIn, Exists and DoesNotExist.
                                                  type: string
                                                values:
                                                  description: |-
                                                    values is an array of string values. If the operator is In or NotIn,
                                                    the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                    the values array must be empty. This array is replaced during a strategic
                                                    merge patch.
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                                - key
                                                - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            description: |-
                                              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                              map is equivalent to an element of matchExpressions, whose key field is "key", the
                                              operator is "In", and the values array contains only "value". The requirements are ANDed.
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      storageClassName:
                                        description: |-
                                          storageClassName is the name of the StorageClass required by the claim.
                                          More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
                                        type: string
                                      volumeAttributesClassName:
                                        description: |-
                                          volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
                                          If specified, the CSI driver will create or update the volume with the attributes defined
                                          in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
                                          it can be changed after the claim is created. An empty string or nil value indicates that no
                                          VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
                                          this field can be reset to its previous value (including nil) to cancel the modification.
                                          If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
                                          set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
                                          exists.
                                          More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
                                        type: string
                                      volumeMode:
                                        description: |-
                                          volumeMode defines what type of volume is required by the claim.
                                          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.
                                        type: string
                                    type: object
                                type: object
                                x-kubernetes-preserve-unknown-fields: true
                            type: object
                          nullable: true
                          type: array
                      type: object
                    volumeClaimTemplate:
                      description: VolumeClaimTemplate is the PVC definition
                      properties:
                        metadata:
                          description: |-
                            Standard object's metadata.
                            More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
                          properties:
                            annotations:
                              additionalProperties:
                                type: string
                              type: object
                            finalizers:
                              items:
                                type: string
                              type: array
                            labels:
                              additionalProperties:
                                type: string
                              type: object
                            name:
                              type: string
                            namespace:
                              type: string
                          type: object
                        spec:
                          description: |-
                            spec defines the desired characteristics of a volume requested by a pod author.
                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                          properties:
                            accessModes:
                              description: |-
                                accessModes contains the desired access modes the volume should have.
                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                            dataSource:
                              description: |-
                                dataSource field can be used to specify either:
                                * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
                                * An existing PVC (PersistentVolumeClaim)
                                If the provisioner or an external controller can support the specified data source,
                                it will create a new volume based on the contents of the specified data source.
                                When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
                                and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
                                If the namespace is specified, then dataSourceRef will not be copied to dataSource.
                              properties:
                                apiGroup:
                                  description: |-
                                    APIGroup is the group for the resource being referenced.
                                    If APIGroup is not specified, the specified Kind must be in the core API group.
                                    For any other third-party types, APIGroup is required.
                                  type: string
                                kind:
                                  description: Kind is the type of resource being referenced
                                  type: string
                                name:
                                  description: Name is the name of resource being referenced
                                  type: string
                              required:
                                - kind
                                - name
                              type: object
                              x-kubernetes-map-type: atomic
                            dataSourceRef:
                              description: |-
                                dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
                                volume is desired. This may be any object from a non-empty API group (non
                                core object) or a PersistentVolumeClaim object.
                                When this field is specified, volume binding will only succeed if the type of
                                the specified object matches some installed volume populator or dynamic
                                provisioner.
                                This field will replace the functionality of the dataSource field and as such
                                if both fields are non-empty, they must have the same value. For backwards
                                compatibility, when namespace isn't specified in dataSourceRef,
                                both fields (dataSource and dataSourceRef) will be set to the same
                                value automatically if one of them is empty and the other is non-empty.
                                When namespace is specified in dataSourceRef,
                                dataSource isn't set to the same value and must be empty.
                                There are three important differences between dataSource and dataSourceRef:
                                * While dataSource only allows two specific types of objects, dataSourceRef
                                  allows any non-core object, as well as PersistentVolumeClaim objects.
                                * While dataSource ignores disallowed values (dropping them), dataSourceRef
                                  preserves all values, and generates an error if a disallowed value is
                                  specified.
                                * While dataSource only allows local objects, dataSourceRef allows objects
                                  in any namespaces.
                                (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
                                (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                              properties:
                                apiGroup:
                                  description: |-
                                    APIGroup is the group for the resource being referenced.
                                    If APIGroup is not specified, the specified Kind must be in the core API group.
                                    For any other third-party types, APIGroup is required.
                                  type: string
                                kind:
                                  description: Kind is the type of resource being referenced
                                  type: string
                                name:
                                  description: Name is the name of resource being referenced
                                  type: string
                                namespace:
                                  description: |-
                                    Namespace is the namespace of resource being referenced
                                    Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
                                    (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                  type: string
                              required:
                                - kind
                                - name
                              type: object
                            resources:
                              description: |-
                                resources represents the minimum resources the volume should have.
                                Users are allowed to specify resource requirements
                                that are lower than previous value but must still be higher than capacity recorded in the
                                status field of the claim.
                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
                              properties:
                                limits:
                                  additionalProperties:
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                    x-kubernetes-int-or-string: true
                                  description: |-
                                    Limits describes the maximum amount of compute resources allowed.
                                    More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                  type: object
                                requests:
                                  additionalProperties:
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                    x-kubernetes-int-or-string: true
                                  description: |-
                                    Requests describes the minimum amount of compute resources required.
                                    If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                    otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                    More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                  type: object
                              type: object
                            selector:
                              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.
                                  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.
                                        type: string
                                      operator:
                                        description: |-
                                          operator represents a key's relationship to a set of values.
                                          Valid operators are In, NotIn, Exists and DoesNotExist.
                                        type: string
                                      values:
                                        description: |-
                                          values is an array of string values. If the operator is In or NotIn,
                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                          the values array must be empty. This array is replaced during a strategic
                                          merge patch.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    required:
                                      - key
                                      - operator
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                matchLabels:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                    map is equivalent to an element of matchExpressions, whose key field is "key", the
                                    operator is "In", and the values array contains only "value". The requirements are ANDed.
                                  type: object
                              type: object
                              x-kubernetes-map-type: atomic
                            storageClassName:
                              description: |-
                                storageClassName is the name of the StorageClass required by the claim.
                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
                              type: string
                            volumeAttributesClassName:
                              description: |-
                                volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
                                If specified, the CSI driver will create or update the volume with the attributes defined
                                in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
                                it can be changed after the claim is created. An empty string or nil value indicates that no
                                VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
                                this field can be reset to its previous value (including nil) to cancel the modification.
                                If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
                                set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
                                exists.
                                More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
                              type: string
                            volumeMode:
                              description: |-
                                volumeMode defines what type of volume is required by the claim.
                                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.
                              type: string
                          type: object
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    zones:
                      description: Zones are specified when we want to provide zonal awareness to mons
                      items:
                        description: MonZoneSpec represents the specification of a zone in a Ceph Cluster
                        properties:
                          arbiter:
                            description: Arbiter determines if the zone contains the arbiter used for stretch cluster mode
                            type: boolean
                          name:
                            description: Name is the name of the zone
                            type: string
                          volumeClaimTemplate:
                            description: VolumeClaimTemplate is the PVC template
                            properties:
                              metadata:
                                description: |-
                                  Standard object's metadata.
                                  More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
                                properties:
                                  annotations:
                                    additionalProperties:
                                      type: string
                                    type: object
                                  finalizers:
                                    items:
                                      type: string
                                    type: array
                                  labels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                  name:
                                    type: string
                                  namespace:
                                    type: string
                                type: object
                              spec:
                                description: |-
                                  spec defines the desired characteristics of a volume requested by a pod author.
                                  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                properties:
                                  accessModes:
                                    description: |-
                                      accessModes contains the desired access modes the volume should have.
                                      More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  dataSource:
                                    description: |-
                                      dataSource field can be used to specify either:
                                      * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
                                      * An existing PVC (PersistentVolumeClaim)
                                      If the provisioner or an external controller can support the specified data source,
                                      it will create a new volume based on the contents of the specified data source.
                                      When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
                                      and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
                                      If the namespace is specified, then dataSourceRef will not be copied to dataSource.
                                    properties:
                                      apiGroup:
                                        description: |-
                                          APIGroup is the group for the resource being referenced.
                                          If APIGroup is not specified, the specified Kind must be in the core API group.
                                          For any other third-party types, APIGroup is required.
                                        type: string
                                      kind:
                                        description: Kind is the type of resource being referenced
                                        type: string
                                      name:
                                        description: Name is the name of resource being referenced
                                        type: string
                                    required:
                                      - kind
                                      - name
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  dataSourceRef:
                                    description: |-
                                      dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
                                      volume is desired. This may be any object from a non-empty API group (non
                                      core object) or a PersistentVolumeClaim object.
                                      When this field is specified, volume binding will only succeed if the type of
                                      the specified object matches some installed volume populator or dynamic
                                      provisioner.
                                      This field will replace the functionality of the dataSource field and as such
                                      if both fields are non-empty, they must have the same value. For backwards
                                      compatibility, when namespace isn't specified in dataSourceRef,
                                      both fields (dataSource and dataSourceRef) will be set to the same
                                      value automatically if one of them is empty and the other is non-empty.
                                      When namespace is specified in dataSourceRef,
                                      dataSource isn't set to the same value and must be empty.
                                      There are three important differences between dataSource and dataSourceRef:
                                      * While dataSource only allows two specific types of objects, dataSourceRef
                                        allows any non-core object, as well as PersistentVolumeClaim objects.
                                      * While dataSource ignores disallowed values (dropping them), dataSourceRef
                                        preserves all values, and generates an error if a disallowed value is
                                        specified.
                                      * While dataSource only allows local objects, dataSourceRef allows objects
                                        in any namespaces.
                                      (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
                                      (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                    properties:
                                      apiGroup:
                                        description: |-
                                          APIGroup is the group for the resource being referenced.
                                          If APIGroup is not specified, the specified Kind must be in the core API group.
                                          For any other third-party types, APIGroup is required.
                                        type: string
                                      kind:
                                        description: Kind is the type of resource being referenced
                                        type: string
                                      name:
                                        description: Name is the name of resource being referenced
                                        type: string
                                      namespace:
                                        description: |-
                                          Namespace is the namespace of resource being referenced
                                          Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
                                          (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                        type: string
                                    required:
                                      - kind
                                      - name
                                    type: object
                                  resources:
                                    description: |-
                                      resources represents the minimum resources the volume should have.
                                      Users are allowed to specify resource requirements
                                      that are lower than previous value but must still be higher than capacity recorded in the
                                      status field of the claim.
                                      More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
                                    properties:
                                      limits:
                                        additionalProperties:
                                          anyOf:
                                            - type: integer
                                            - type: string
                                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                          x-kubernetes-int-or-string: true
                                        description: |-
                                          Limits describes the maximum amount of compute resources allowed.
                                          More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                        type: object
                                      requests:
                                        additionalProperties:
                                          anyOf:
                                            - type: integer
                                            - type: string
                                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                          x-kubernetes-int-or-string: true
                                        description: |-
                                          Requests describes the minimum amount of compute resources required.
                                          If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                          otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                          More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                        type: object
                                    type: object
                                  selector:
                                    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.
                                        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.
                                              type: string
                                            operator:
                                              description: |-
                                                operator represents a key's relationship to a set of values.
                                                Valid operators are In, NotIn, Exists and DoesNotExist.
                                              type: string
                                            values:
                                              description: |-
                                                values is an array of string values. If the operator is In or NotIn,
                                                the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                the values array must be empty. This array is replaced during a strategic
                                                merge patch.
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        description: |-
                                          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                          map is equivalent to an element of matchExpressions, whose key field is "key", the
                                          operator is "In", and the values array contains only "value". The requirements are ANDed.
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  storageClassName:
                                    description: |-
                                      storageClassName is the name of the StorageClass required by the claim.
                                      More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
                                    type: string
                                  volumeAttributesClassName:
                                    description: |-
                                      volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
                                      If specified, the CSI driver will create or update the volume with the attributes defined
                                      in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
                                      it can be changed after the claim is created. An empty string or nil value indicates that no
                                      VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
                                      this field can be reset to its previous value (including nil) to cancel the modification.
                                      If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
                                      set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
                                      exists.
                                      More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
                                    type: string
                                  volumeMode:
                                    description: |-
                                      volumeMode defines what type of volume is required by the claim.
                                      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.
                                    type: string
                                type: object
                            type: object
                            x-kubernetes-preserve-unknown-fields: true
                        type: object
                      type: array
                  type: object
                  x-kubernetes-validations:
                    - message: zones must be less than or equal to count
                      rule: '!has(self.zones) || (has(self.zones) && (size(self.zones) <= self.count))'
                    - message: stretchCluster zones must be equal to 3
                      rule: '!has(self.stretchCluster) || (has(self.stretchCluster) && (size(self.stretchCluster.zones) > 0) && (size(self.stretchCluster.zones) == 3))'
                monitoring:
                  description: Prometheus based Monitoring settings
                  nullable: true
                  properties:
                    enabled:
                      description: |-
                        Enabled determines whether to create the prometheus rules for the ceph cluster. If true, the prometheus
                        types must exist or the creation will fail. Default is false.
                      type: boolean
                    exporter:
                      description: Ceph exporter configuration
                      properties:
                        hostNetwork:
                          description: Whether host networking is enabled for CephExporter. If not set, the network settings from CephCluster.spec.networking will be applied.
                          nullable: true
                          type: boolean
                        perfCountersPrioLimit:
                          default: 5
                          description: Only performance counters greater than or equal to this option are fetched
                          format: int64
                          type: integer
                        port:
                          description: Port is the listening port of the ceph-exporter process. Defaults to 9926.
                          format: int32
                          maximum: 65535
                          minimum: 1
                          type: integer
                        statsPeriodSeconds:
                          default: 5
                          description: Time to wait before sending requests again to exporter server (seconds)
                          format: int64
                          type: integer
                      type: object
                    externalMgrEndpoints:
                      description: ExternalMgrEndpoints points to an existing Ceph prometheus exporter endpoint
                      items:
                        description: |-
                          EndpointAddress is a tuple that describes single IP address.
                          Deprecated: This API is deprecated in v1.33+.
                        properties:
                          hostname:
                            description: The Hostname of this endpoint
                            type: string
                          ip:
                            description: |-
                              The IP of this endpoint.
                              May not be loopback (127.0.0.0/8 or ::1), link-local (169.254.0.0/16 or fe80::/10),
                              or link-local multicast (224.0.0.0/24 or ff02::/16).
                            type: string
                          nodeName:
                            description: 'Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.'
                            type: string
                          targetRef:
                            description: Reference to object providing the endpoint.
                            properties:
                              apiVersion:
                                description: API version of the referent.
                                type: string
                              fieldPath:
                                description: |-
                                  If referring to a piece of an object instead of an entire object, this string
                                  should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                                  For example, if the object reference is to a container within a pod, this would take on a value like:
                                  "spec.containers{name}" (where "name" refers to the name of the container that triggered
                                  the event) or if no container name is specified "spec.containers[2]" (container with
                                  index 2 in this pod). This syntax is chosen only to have some well-defined way of
                                  referencing a part of an object.
                                type: string
                              kind:
                                description: |-
                                  Kind of the referent.
                                  More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                                type: string
                              name:
                                description: |-
                                  Name of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                type: string
                              namespace:
                                description: |-
                                  Namespace of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                                type: string
                              resourceVersion:
                                description: |-
                                  Specific resourceVersion to which this reference is made, if any.
                                  More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
                                type: string
                              uid:
                                description: |-
                                  UID of the referent.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                                type: string
                            type: object
                            x-kubernetes-map-type: atomic
                        required:
                          - ip
                        type: object
                        x-kubernetes-map-type: atomic
                      nullable: true
                      type: array
                    externalMgrPrometheusPort:
                      description: ExternalMgrPrometheusPort Prometheus exporter port
                      maximum: 65535
                      minimum: 0
                      type: integer
                    interval:
                      description: Interval determines prometheus scrape interval
                      type: string
                    metricsDisabled:
                      description: |-
                        Whether to disable the metrics reported by Ceph. If false, the prometheus mgr module and Ceph exporter are enabled.
                        If true, the prometheus mgr module and Ceph exporter are both disabled. Default is false.
                      type: boolean
                    port:
                      description: Port is the prometheus server port
                      maximum: 65535
                      minimum: 0
                      type: integer
                  type: object
                network:
                  description: Network related configuration
                  nullable: true
                  properties:
                    addressRanges:
                      description: |-
                        AddressRanges specify a list of CIDRs that Rook will apply to Ceph's 'public_network' and/or
                        'cluster_network' configurations. This config section may be used for the "host" or "multus"
                        network providers.
                      nullable: true
                      properties:
                        cluster:
                          description: Cluster defines a list of CIDRs to use for Ceph cluster network communication.
                          items:
                            description: |-
                              An IPv4 or IPv6 network CIDR.

                              This naive kubebuilder regex provides immediate feedback for some typos and for a common problem
                              case where the range spec is forgotten (e.g., /24). Rook does in-depth validation in code.
                            pattern: ^[0-9a-fA-F:.]{2,}\/[0-9]{1,3}$
                            type: string
                          type: array
                        public:
                          description: Public defines a list of CIDRs to use for Ceph public network communication.
                          items:
                            description: |-
                              An IPv4 or IPv6 network CIDR.

                              This naive kubebuilder regex provides immediate feedback for some typos and for a common problem
                              case where the range spec is forgotten (e.g., /24). Rook does in-depth validation in code.
                            pattern: ^[0-9a-fA-F:.]{2,}\/[0-9]{1,3}$
                            type: string
                          type: array
                      type: object
                    connections:
                      description: |-
                        Settings for network connections such as compression and encryption across the
                        wire.
                      nullable: true
                      properties:
                        compression:
                          description: Compression settings for the network connections.
                          nullable: true
                          properties:
                            enabled:
                              description: |-
                                Whether to compress the data in transit across the wire.
                                The default is not set.
                              type: boolean
                          type: object
                        encryption:
                          description: Encryption settings for the network connections.
                          nullable: true
                          properties:
                            enabled:
                              description: |-
                                Whether to encrypt the data in transit across the wire to prevent eavesdropping
                                the data on the network. The default is not set. Even if encryption is not enabled,
                                clients still establish a strong initial authentication for the connection
                                and data integrity is still validated with a crc check. When encryption is enabled,
                                all communication between clients and Ceph daemons, or between Ceph daemons will
                                be encrypted.
                              type: boolean
                          type: object
                        requireMsgr2:
                          description: |-
                            Whether to require msgr2 (port 3300) even if compression or encryption are not enabled.
                            If true, the msgr1 port (6789) will be disabled.
                            Requires a kernel that supports msgr2 (kernel 5.11 or CentOS 8.4 or newer).
                          type: boolean
                      type: object
                    dualStack:
                      description: DualStack determines whether Ceph daemons should listen on both IPv4 and IPv6
                      type: boolean
                    hostNetwork:
                      description: |-
                        HostNetwork to enable host network.
                        If host networking is enabled or disabled on a running cluster, then the operator will automatically fail over all the mons to
                        apply the new network settings.
                      type: boolean
                    ipFamily:
                      description: IPFamily is the single stack IPv6 or IPv4 protocol
                      enum:
                        - IPv4
                        - IPv6
                      nullable: true
                      type: string
                    multiClusterService:
                      description: Enable multiClusterService to export the Services between peer clusters
                      properties:
                        clusterID:
                          description: |-
                            ClusterID uniquely identifies a cluster. It is used as a prefix to nslookup exported
                            services. For example: <clusterid>.<svc>.<ns>.svc.clusterset.local
                          type: string
                        enabled:
                          description: |-
                            Enable multiClusterService to export the mon and OSD services to peer cluster.
                            Ensure that peer clusters are connected using an MCS API compatible application,
                            like Globalnet Submariner.
                          type: boolean
                      type: object
                    provider:
                      description: |-
                        Provider is what provides network connectivity to the cluster e.g. "host" or "multus".
                        If the Provider is updated from being empty to "host" on a running cluster, then the operator will automatically fail over all the mons to apply the "host" network settings.
                      enum:
                        - ""
                        - host
                        - multus
                      nullable: true
                      type: string
                      x-kubernetes-validations:
                        - message: network provider must be disabled (reverted to empty string) before a new provider is enabled
                          rule: self == '' || oldSelf == '' || self == oldSelf
                    selectors:
                      additionalProperties:
                        type: string
                      description: |-
                        Selectors define NetworkAttachmentDefinitions to be used for Ceph public and/or cluster
                        networks when the "multus" network provider is used. This config section is not used for
                        other network providers.

                        Valid keys are "public" and "cluster". Refer to Ceph networking documentation for more:
                        https://docs.ceph.com/en/latest/rados/configuration/network-config-ref/

                        Refer to Multus network annotation documentation for help selecting values:
                        https://github.com/k8snetworkplumbingwg/multus-cni/blob/master/docs/how-to-use.md#run-pod-with-network-annotation

                        Rook will make a best-effort attempt to automatically detect CIDR address ranges for given
                        network attachment definitions. Rook's methods are robust but may be imprecise for
                        sufficiently complicated networks. Rook's auto-detection process obtains a new IP address
                        lease for each CephCluster reconcile. If Rook fails to detect, incorrectly detects, only
                        partially detects, or if underlying networks do not support reusing old IP addresses, it is
                        best to use the 'addressRanges' config section to specify CIDR ranges for the Ceph cluster.

                        As a contrived example, one can use a theoretical Kubernetes-wide network for Ceph client
                        traffic and a theoretical Rook-only network for Ceph replication traffic as shown:
                          selectors:
                            public: "default/cluster-fast-net"
                            cluster: "rook-ceph/ceph-backend-net"
                      nullable: true
                      type: object
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                  x-kubernetes-validations:
                    - message: at least one network selector must be specified when using multus
                      rule: '!has(self.provider) || (self.provider != ''multus'' || (self.provider == ''multus'' && size(self.selectors) > 0))'
                    - message: the legacy hostNetwork setting can only be set if the network.provider is set to the empty string
                      rule: '!has(self.hostNetwork) || self.hostNetwork == false || !has(self.provider) || self.provider == ""'
                placement:
                  additionalProperties:
                    properties:
                      nodeAffinity:
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                preference:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                          - key
                                          - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchFields:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                          - key
                                          - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                  x-kubernetes-map-type: atomic
                                weight:
                                  format: int32
                                  type: integer
                              required:
                                - preference
                                - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            properties:
                              nodeSelectorTerms:
                                items:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                          - key
                                          - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchFields:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                          - key
                                          - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                  x-kubernetes-map-type: atomic
                                type: array
                                x-kubernetes-list-type: atomic
                            required:
                              - nodeSelectorTerms
                            type: object
                            x-kubernetes-map-type: atomic
                        type: object
                      podAffinity:
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                podAffinityTerm:
                                  properties:
                                    labelSelector:
                                      properties:
                                        matchExpressions:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              operator:
                                                type: string
                                              values:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                              - key
                                              - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      properties:
                                        matchExpressions:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              operator:
                                                type: string
                                              values:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                              - key
                                              - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      type: string
                                  required:
                                    - topologyKey
                                  type: object
                                weight:
                                  format: int32
                                  type: integer
                              required:
                                - podAffinityTerm
                                - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                labelSelector:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                          - key
                                          - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                matchLabelKeys:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                mismatchLabelKeys:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                namespaceSelector:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                          - key
                                          - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                namespaces:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                topologyKey:
                                  type: string
                              required:
                                - topologyKey
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                        type: object
                      podAntiAffinity:
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                podAffinityTerm:
                                  properties:
                                    labelSelector:
                                      properties:
                                        matchExpressions:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              operator:
                                                type: string
                                              values:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                              - key
                                              - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      properties:
                                        matchExpressions:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              operator:
                                                type: string
                                              values:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                              - key
                                              - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      type: string
                                  required:
                                    - topologyKey
                                  type: object
                                weight:
                                  format: int32
                                  type: integer
                              required:
                                - podAffinityTerm
                                - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                labelSelector:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                          - key
                                          - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                matchLabelKeys:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                mismatchLabelKeys:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                namespaceSelector:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                          - key
                                          - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                namespaces:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                topologyKey:
                                  type: string
                              required:
                                - topologyKey
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                        type: object
                      tolerations:
                        items:
                          properties:
                            effect:
                              type: string
                            key:
                              type: string
                            operator:
                              type: string
                            tolerationSeconds:
                              format: int64
                              type: integer
                            value:
                              type: string
                          type: object
                        type: array
                      topologySpreadConstraints:
                        items:
                          properties:
                            labelSelector:
                              properties:
                                matchExpressions:
                                  items:
                                    properties:
                                      key:
                                        type: string
                                      operator:
                                        type: string
                                      values:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    required:
                                      - key
                                      - operator
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                matchLabels:
                                  additionalProperties:
                                    type: string
                                  type: object
                              type: object
                              x-kubernetes-map-type: atomic
                            matchLabelKeys:
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                            maxSkew:
                              format: int32
                              type: integer
                            minDomains:
                              format: int32
                              type: integer
                            nodeAffinityPolicy:
                              type: string
                            nodeTaintsPolicy:
                              type: string
                            topologyKey:
                              type: string
                            whenUnsatisfiable:
                              type: string
                          required:
                            - maxSkew
                            - topologyKey
                            - whenUnsatisfiable
                          type: object
                        type: array
                    type: object
                  nullable: true
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                priorityClassNames:
                  additionalProperties:
                    type: string
                  description: PriorityClassNames sets priority classes on components
                  nullable: true
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                removeOSDsIfOutAndSafeToRemove:
                  description: Remove the OSD that is out and safe to remove only if this option is true
                  type: boolean
                resources:
                  additionalProperties:
                    description: ResourceRequirements describes the compute resource requirements.
                    properties:
                      claims:
                        description: |-
                          Claims lists the names of resources, defined in spec.resourceClaims,
                          that are used by this container.

                          This field depends on the
                          DynamicResourceAllocation feature gate.

                          This field is immutable. It can only be set for containers.
                        items:
                          description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                          properties:
                            name:
                              description: |-
                                Name must match the name of one entry in pod.spec.resourceClaims of
                                the Pod where this field is used. It makes that resource available
                                inside a container.
                              type: string
                            request:
                              description: |-
                                Request is the name chosen for a request in the referenced claim.
                                If empty, everything from the claim is made available, otherwise
                                only the result of this request.
                              type: string
                          required:
                            - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                          - name
                        x-kubernetes-list-type: map
                      limits:
                        additionalProperties:
                          anyOf:
                            - type: integer
                            - type: string
                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                          x-kubernetes-int-or-string: true
                        description: |-
                          Limits describes the maximum amount of compute resources allowed.
                          More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                        type: object
                      requests:
                        additionalProperties:
                          anyOf:
                            - type: integer
                            - type: string
                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                          x-kubernetes-int-or-string: true
                        description: |-
                          Requests describes the minimum amount of compute resources required.
                          If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                          otherwise to an implementation-defined value. Requests cannot exceed Limits.
                          More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                        type: object
                    type: object
                  description: Resources set resource requests and limits
                  nullable: true
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                security:
                  description: Security represents security settings
                  nullable: true
                  properties:
                    cephx:
                      description: 'CephX configures CephX key settings. More: https://docs.ceph.com/en/latest/dev/cephx/'
                      properties:
                        csi:
                          description: |-
                            CSI configures CephX key rotation settings for the Ceph-CSI daemons in the current Kubernetes cluster.
                            CSI key rotation can affect existing PV connections, so take care when exercising this option.
                          properties:
                            keepPriorKeyCountMax:
                              description: |-
                                KeepPriorKeyCountMax tells Rook how many prior keys to keep active.
                                Generally, this would be set to 1 to allow for a migration period for applications.
                                If desired, set this to 0 to delete prior keys after migration.
                                This config only applies to prior keys that already exist.
                                If PriorKeyCount is set to 2 while only a single key currently exists, only a single prior key will be kept,
                                and the reported status will only indicate the actual number of prior keys,
                                not necessarily a reflection of PriorKeyCount config here.
                              maximum: 10
                              minimum: 0
                              type: integer
                            keyGeneration:
                              description: |-
                                KeyGeneration specifies the desired CephX key generation. This is used when KeyRotationPolicy
                                is KeyGeneration and ignored for other policies. If this is set to greater than the current
                                key generation, relevant keys will be rotated, and the generation value will be updated to
                                this new value (generation values are not necessarily incremental, though that is the
                                intended use case). If this is set to less than or equal to the current key generation, keys
                                are not rotated.
                              format: int32
                              maximum: 4294967295
                              minimum: 0
                              type: integer
                              x-kubernetes-validations:
                                - message: keyGeneration cannot be decreased
                                  rule: self >= oldSelf
                            keyRotationPolicy:
                              description: |-
                                KeyRotationPolicy controls if and when CephX keys are rotated after initial creation.
                                One of Disabled, or KeyGeneration. Default Disabled.
                              enum:
                                - ""
                                - Disabled
                                - KeyGeneration
                              type: string
                          type: object
                        daemon:
                          description: |-
                            Daemon configures CephX key settings for local Ceph daemons managed by Rook and part of the
                            Ceph cluster. Daemon CephX keys can be rotated without affecting client connections.
                          properties:
                            keyGeneration:
                              description: |-
                                KeyGeneration specifies the desired CephX key generation. This is used when KeyRotationPolicy
                                is KeyGeneration and ignored for other policies. If this is set to greater than the current
                                key generation, relevant keys will be rotated, and the generation value will be updated to
                                this new value (generation values are not necessarily incremental, though that is the
                                intended use case). If this is set to less than or equal to the current key generation, keys
                                are not rotated.
                              format: int32
                              maximum: 4294967295
                              minimum: 0
                              type: integer
                              x-kubernetes-validations:
                                - message: keyGeneration cannot be decreased
                                  rule: self >= oldSelf
                            keyRotationPolicy:
                              description: |-
                                KeyRotationPolicy controls if and when CephX keys are rotated after initial creation.
                                One of Disabled, or KeyGeneration. Default Disabled.
                              enum:
                                - ""
                                - Disabled
                                - KeyGeneration
                              type: string
                          type: object
                        rbdMirrorPeer:
                          description: |-
                            RBDMirrorPeer configures CephX key settings of the `rbd-mirror-peer` user that is used for creating
                            bootstrap peer token used connect peer clusters. Rotating the `rbd-mirror-peer` user key will update
                            the mirror peer token.
                            Rotation will affect any existing peers connected to this cluster, so take care when exercising this option.
                          properties:
                            keyGeneration:
                              description: |-
                                KeyGeneration specifies the desired CephX key generation. This is used when KeyRotationPolicy
                                is KeyGeneration and ignored for other policies. If this is set to greater than the current
                                key generation, relevant keys will be rotated, and the generation value will be updated to
                                this new value (generation values are not necessarily incremental, though that is the
                                intended use case). If this is set to less than or equal to the current key generation, keys
                                are not rotated.
                              format: int32
                              maximum: 4294967295
                              minimum: 0
                              type: integer
                              x-kubernetes-validations:
                                - message: keyGeneration cannot be decreased
                                  rule: self >= oldSelf
                            keyRotationPolicy:
                              description: |-
                                KeyRotationPolicy controls if and when CephX keys are rotated after initial creation.
                                One of Disabled, or KeyGeneration. Default Disabled.
                              enum:
                                - ""
                                - Disabled
                                - KeyGeneration
                              type: string
                          type: object
                      type: object
                    keyRotation:
                      description: KeyRotation defines options for rotation of OSD disk encryption keys.
                      nullable: true
                      properties:
                        enabled:
                          default: false
                          description: Enabled represents whether the key rotation is enabled.
                          type: boolean
                        schedule:
                          description: Schedule represents the cron schedule for key rotation.
                          type: string
                      type: object
                    kms:
                      description: KeyManagementService is the main Key Management option
                      nullable: true
                      properties:
                        connectionDetails:
                          additionalProperties:
                            type: string
                          description: ConnectionDetails contains the KMS connection details (address, port etc)
                          nullable: true
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                        tokenSecretName:
                          description: TokenSecretName is the kubernetes secret containing the KMS token
                          type: string
                      type: object
                  type: object
                skipUpgradeChecks:
                  description: SkipUpgradeChecks defines if an upgrade should be forced even if one of the check fails
                  type: boolean
                storage:
                  description: A spec for available storage in the cluster and how it should be used
                  nullable: true
                  properties:
                    allowDeviceClassUpdate:
                      description: Whether to allow updating the device class after the OSD is initially provisioned
                      type: boolean
                    allowOsdCrushWeightUpdate:
                      description: |-
                        Whether Rook will resize the OSD CRUSH weight when the OSD PVC size is increased.
                        This allows cluster data to be rebalanced to make most effective use of new OSD space.
                        The default is false since data rebalancing can cause temporary cluster slowdown.
                      type: boolean
                    backfillFullRatio:
                      description: BackfillFullRatio is the ratio at which the cluster is too full for backfill. Backfill will be disabled if above this threshold. Default is 0.90.
                      maximum: 1
                      minimum: 0
                      nullable: true
                      type: number
                    config:
                      additionalProperties:
                        type: string
                      nullable: true
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    deviceFilter:
                      description: A regular expression to allow more fine-grained selection of devices on nodes across the cluster
                      type: string
                    devicePathFilter:
                      description: A regular expression to allow more fine-grained selection of devices with path names
                      type: string
                    devices:
                      description: List of devices to use as storage devices
                      items:
                        description: Device represents a disk to use in the cluster
                        properties:
                          config:
                            additionalProperties:
                              type: string
                            nullable: true
                            type: object
                            x-kubernetes-preserve-unknown-fields: true
                          fullpath:
                            type: string
                          name:
                            type: string
                        type: object
                      nullable: true
                      type: array
                      x-kubernetes-preserve-unknown-fields: true
                    flappingRestartIntervalHours:
                      description: |-
                        FlappingRestartIntervalHours defines the time for which the OSD pods, that failed with zero exit code, will sleep before restarting.
                        This is needed for OSD flapping where OSD daemons are marked down more than 5 times in 600 seconds by Ceph.
                        Preventing the OSD pods to restart immediately in such scenarios will prevent Rook from marking OSD as `up` and thus
                        peering of the PGs mapped to the OSD.
                        User needs to manually restart the OSD pod if they manage to fix the underlying OSD flapping issue before the restart interval.
                        The sleep will be disabled if this interval is set to 0.
                      type: integer
                    fullRatio:
                      description: FullRatio is the ratio at which the cluster is considered full and ceph will stop accepting writes. Default is 0.95.
                      maximum: 1
                      minimum: 0
                      nullable: true
                      type: number
                    migration:
                      description: Migration handles the OSD migration
                      properties:
                        confirmation:
                          description: |-
                            A user confirmation to migrate the OSDs. It destroys each OSD one at a time, cleans up the backing disk
                            and prepares OSD with same ID on that disk
                          pattern: ^$|^yes-really-migrate-osds$
                          type: string
                      type: object
                    nearFullRatio:
                      description: NearFullRatio is the ratio at which the cluster is considered nearly full and will raise a ceph health warning. Default is 0.85.
                      maximum: 1
                      minimum: 0
                      nullable: true
                      type: number
                    nodes:
                      items:
                        description: Node is a storage nodes
                        properties:
                          config:
                            additionalProperties:
                              type: string
                            nullable: true
                            type: object
                            x-kubernetes-preserve-unknown-fields: true
                          deviceFilter:
                            description: A regular expression to allow more fine-grained selection of devices on nodes across the cluster
                            type: string
                          devicePathFilter:
                            description: A regular expression to allow more fine-grained selection of devices with path names
                            type: string
                          devices:
                            description: List of devices to use as storage devices
                            items:
                              description: Device represents a disk to use in the cluster
                              properties:
                                config:
                                  additionalProperties:
                                    type: string
                                  nullable: true
                                  type: object
                                  x-kubernetes-preserve-unknown-fields: true
                                fullpath:
                                  type: string
                                name:
                                  type: string
                              type: object
                            nullable: true
                            type: array
                            x-kubernetes-preserve-unknown-fields: true
                          name:
                            type: string
                          resources:
                            description: ResourceRequirements describes the compute resource requirements.
                            nullable: true
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                    - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                  - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                            x-kubernetes-preserve-unknown-fields: true
                          useAllDevices:
                            description: Whether to consume all the storage devices found on a machine
                            type: boolean
                          volumeClaimTemplates:
                            description: PersistentVolumeClaims to use as storage
                            items:
                              description: VolumeClaimTemplate is a simplified version of K8s corev1's PVC. It has no type meta or status.
                              properties:
                                metadata:
                                  description: |-
                                    Standard object's metadata.
                                    More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
                                  properties:
                                    annotations:
                                      additionalProperties:
                                        type: string
                                      type: object
                                    finalizers:
                                      items:
                                        type: string
                                      type: array
                                    labels:
                                      additionalProperties:
                                        type: string
                                      type: object
                                    name:
                                      type: string
                                    namespace:
                                      type: string
                                  type: object
                                spec:
                                  description: |-
                                    spec defines the desired characteristics of a volume requested by a pod author.
                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                  properties:
                                    accessModes:
                                      description: |-
                                        accessModes contains the desired access modes the volume should have.
                                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    dataSource:
                                      description: |-
                                        dataSource field can be used to specify either:
                                        * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
                                        * An existing PVC (PersistentVolumeClaim)
                                        If the provisioner or an external controller can support the specified data source,
                                        it will create a new volume based on the contents of the specified data source.
                                        When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
                                        and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
                                        If the namespace is specified, then dataSourceRef will not be copied to dataSource.
                                      properties:
                                        apiGroup:
                                          description: |-
                                            APIGroup is the group for the resource being referenced.
                                            If APIGroup is not specified, the specified Kind must be in the core API group.
                                            For any other third-party types, APIGroup is required.
                                          type: string
                                        kind:
                                          description: Kind is the type of resource being referenced
                                          type: string
                                        name:
                                          description: Name is the name of resource being referenced
                                          type: string
                                      required:
                                        - kind
                                        - name
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    dataSourceRef:
                                      description: |-
                                        dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
                                        volume is desired. This may be any object from a non-empty API group (non
                                        core object) or a PersistentVolumeClaim object.
                                        When this field is specified, volume binding will only succeed if the type of
                                        the specified object matches some installed volume populator or dynamic
                                        provisioner.
                                        This field will replace the functionality of the dataSource field and as such
                                        if both fields are non-empty, they must have the same value. For backwards
                                        compatibility, when namespace isn't specified in dataSourceRef,
                                        both fields (dataSource and dataSourceRef) will be set to the same
                                        value automatically if one of them is empty and the other is non-empty.
                                        When namespace is specified in dataSourceRef,
                                        dataSource isn't set to the same value and must be empty.
                                        There are three important differences between dataSource and dataSourceRef:
                                        * While dataSource only allows two specific types of objects, dataSourceRef
                                          allows any non-core object, as well as PersistentVolumeClaim objects.
                                        * While dataSource ignores disallowed values (dropping them), dataSourceRef
                                          preserves all values, and generates an error if a disallowed value is
                                          specified.
                                        * While dataSource only allows local objects, dataSourceRef allows objects
                                          in any namespaces.
                                        (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
                                        (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                      properties:
                                        apiGroup:
                                          description: |-
                                            APIGroup is the group for the resource being referenced.
                                            If APIGroup is not specified, the specified Kind must be in the core API group.
                                            For any other third-party types, APIGroup is required.
                                          type: string
                                        kind:
                                          description: Kind is the type of resource being referenced
                                          type: string
                                        name:
                                          description: Name is the name of resource being referenced
                                          type: string
                                        namespace:
                                          description: |-
                                            Namespace is the namespace of resource being referenced
                                            Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
                                            (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                          type: string
                                      required:
                                        - kind
                                        - name
                                      type: object
                                    resources:
                                      description: |-
                                        resources represents the minimum resources the volume should have.
                                        Users are allowed to specify resource requirements
                                        that are lower than previous value but must still be higher than capacity recorded in the
                                        status field of the claim.
                                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
                                      properties:
                                        limits:
                                          additionalProperties:
                                            anyOf:
                                              - type: integer
                                              - type: string
                                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                            x-kubernetes-int-or-string: true
                                          description: |-
                                            Limits describes the maximum amount of compute resources allowed.
                                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                          type: object
                                        requests:
                                          additionalProperties:
                                            anyOf:
                                              - type: integer
                                              - type: string
                                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                            x-kubernetes-int-or-string: true
                                          description: |-
                                            Requests describes the minimum amount of compute resources required.
                                            If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                            otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                          type: object
                                      type: object
                                    selector:
                                      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.
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                              - key
                                              - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    storageClassName:
                                      description: |-
                                        storageClassName is the name of the StorageClass required by the claim.
                                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
                                      type: string
                                    volumeAttributesClassName:
                                      description: |-
                                        volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
                                        If specified, the CSI driver will create or update the volume with the attributes defined
                                        in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
                                        it can be changed after the claim is created. An empty string or nil value indicates that no
                                        VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
                                        this field can be reset to its previous value (including nil) to cancel the modification.
                                        If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
                                        set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
                                        exists.
                                        More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
                                      type: string
                                    volumeMode:
                                      description: |-
                                        volumeMode defines what type of volume is required by the claim.
                                        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.
                                      type: string
                                  type: object
                              type: object
                            type: array
                        type: object
                      nullable: true
                      type: array
                    onlyApplyOSDPlacement:
                      type: boolean
                    osdMaxUpdatesInParallel:
                      description: The maximum number of OSDs to update in parallel.
                      format: int32
                      minimum: 1
                      type: integer
                    scheduleAlways:
                      description: Whether to always schedule OSDs on a node even if the node is not currently scheduleable or ready
                      type: boolean
                    storageClassDeviceSets:
                      items:
                        description: StorageClassDeviceSet is a storage class device set
                        properties:
                          config:
                            additionalProperties:
                              type: string
                            description: Provider-specific device configuration
                            nullable: true
                            type: object
                            x-kubernetes-preserve-unknown-fields: true
                          count:
                            description: Count is the number of devices in this set
                            minimum: 1
                            type: integer
                          encrypted:
                            description: Whether to encrypt the deviceSet
                            type: boolean
                          name:
                            description: Name is a unique identifier for the set
                            type: string
                          placement:
                            nullable: true
                            properties:
                              nodeAffinity:
                                properties:
                                  preferredDuringSchedulingIgnoredDuringExecution:
                                    items:
                                      properties:
                                        preference:
                                          properties:
                                            matchExpressions:
                                              items:
                                                properties:
                                                  key:
                                                    type: string
                                                  operator:
                                                    type: string
                                                  values:
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                  - key
                                                  - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchFields:
                                              items:
                                                properties:
                                                  key:
                                                    type: string
                                                  operator:
                                                    type: string
                                                  values:
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                  - key
                                                  - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        weight:
                                          format: int32
                                          type: integer
                                      required:
                                        - preference
                                        - weight
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  requiredDuringSchedulingIgnoredDuringExecution:
                                    properties:
                                      nodeSelectorTerms:
                                        items:
                                          properties:
                                            matchExpressions:
                                              items:
                                                properties:
                                                  key:
                                                    type: string
                                                  operator:
                                                    type: string
                                                  values:
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                  - key
                                                  - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchFields:
                                              items:
                                                properties:
                                                  key:
                                                    type: string
                                                  operator:
                                                    type: string
                                                  values:
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                  - key
                                                  - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    required:
                                      - nodeSelectorTerms
                                    type: object
                                    x-kubernetes-map-type: atomic
                                type: object
                              podAffinity:
                                properties:
                                  preferredDuringSchedulingIgnoredDuringExecution:
                                    items:
                                      properties:
                                        podAffinityTerm:
                                          properties:
                                            labelSelector:
                                              properties:
                                                matchExpressions:
                                                  items:
                                                    properties:
                                                      key:
                                                        type: string
                                                      operator:
                                                        type: string
                                                      values:
                                                        items:
                                                          type: string
                                                        type: array
                                                        x-kubernetes-list-type: atomic
                                                    required:
                                                      - key
                                                      - operator
                                                    type: object
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                                matchLabels:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            matchLabelKeys:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            mismatchLabelKeys:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            namespaceSelector:
                                              properties:
                                                matchExpressions:
                                                  items:
                                                    properties:
                                                      key:
                                                        type: string
                                                      operator:
                                                        type: string
                                                      values:
                                                        items:
                                                          type: string
                                                        type: array
                                                        x-kubernetes-list-type: atomic
                                                    required:
                                                      - key
                                                      - operator
                                                    type: object
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                                matchLabels:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            namespaces:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            topologyKey:
                                              type: string
                                          required:
                                            - topologyKey
                                          type: object
                                        weight:
                                          format: int32
                                          type: integer
                                      required:
                                        - podAffinityTerm
                                        - weight
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  requiredDuringSchedulingIgnoredDuringExecution:
                                    items:
                                      properties:
                                        labelSelector:
                                          properties:
                                            matchExpressions:
                                              items:
                                                properties:
                                                  key:
                                                    type: string
                                                  operator:
                                                    type: string
                                                  values:
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                  - key
                                                  - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        matchLabelKeys:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        mismatchLabelKeys:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        namespaceSelector:
                                          properties:
                                            matchExpressions:
                                              items:
                                                properties:
                                                  key:
                                                    type: string
                                                  operator:
                                                    type: string
                                                  values:
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                  - key
                                                  - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        namespaces:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        topologyKey:
                                          type: string
                                      required:
                                        - topologyKey
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              podAntiAffinity:
                                properties:
                                  preferredDuringSchedulingIgnoredDuringExecution:
                                    items:
                                      properties:
                                        podAffinityTerm:
                                          properties:
                                            labelSelector:
                                              properties:
                                                matchExpressions:
                                                  items:
                                                    properties:
                                                      key:
                                                        type: string
                                                      operator:
                                                        type: string
                                                      values:
                                                        items:
                                                          type: string
                                                        type: array
                                                        x-kubernetes-list-type: atomic
                                                    required:
                                                      - key
                                                      - operator
                                                    type: object
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                                matchLabels:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            matchLabelKeys:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            mismatchLabelKeys:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            namespaceSelector:
                                              properties:
                                                matchExpressions:
                                                  items:
                                                    properties:
                                                      key:
                                                        type: string
                                                      operator:
                                                        type: string
                                                      values:
                                                        items:
                                                          type: string
                                                        type: array
                                                        x-kubernetes-list-type: atomic
                                                    required:
                                                      - key
                                                      - operator
                                                    type: object
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                                matchLabels:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            namespaces:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            topologyKey:
                                              type: string
                                          required:
                                            - topologyKey
                                          type: object
                                        weight:
                                          format: int32
                                          type: integer
                                      required:
                                        - podAffinityTerm
                                        - weight
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  requiredDuringSchedulingIgnoredDuringExecution:
                                    items:
                                      properties:
                                        labelSelector:
                                          properties:
                                            matchExpressions:
                                              items:
                                                properties:
                                                  key:
                                                    type: string
                                                  operator:
                                                    type: string
                                                  values:
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                  - key
                                                  - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        matchLabelKeys:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        mismatchLabelKeys:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        namespaceSelector:
                                          properties:
                                            matchExpressions:
                                              items:
                                                properties:
                                                  key:
                                                    type: string
                                                  operator:
                                                    type: string
                                                  values:
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                  - key
                                                  - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        namespaces:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        topologyKey:
                                          type: string
                                      required:
                                        - topologyKey
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              tolerations:
                                items:
                                  properties:
                                    effect:
                                      type: string
                                    key:
                                      type: string
                                    operator:
                                      type: string
                                    tolerationSeconds:
                                      format: int64
                                      type: integer
                                    value:
                                      type: string
                                  type: object
                                type: array
                              topologySpreadConstraints:
                                items:
                                  properties:
                                    labelSelector:
                                      properties:
                                        matchExpressions:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              operator:
                                                type: string
                                              values:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                              - key
                                              - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    maxSkew:
                                      format: int32
                                      type: integer
                                    minDomains:
                                      format: int32
                                      type: integer
                                    nodeAffinityPolicy:
                                      type: string
                                    nodeTaintsPolicy:
                                      type: string
                                    topologyKey:
                                      type: string
                                    whenUnsatisfiable:
                                      type: string
                                  required:
                                    - maxSkew
                                    - topologyKey
                                    - whenUnsatisfiable
                                  type: object
                                type: array
                            type: object
                            x-kubernetes-preserve-unknown-fields: true
                          portable:
                            description: Portable represents OSD portability across the hosts
                            type: boolean
                          preparePlacement:
                            nullable: true
                            properties:
                              nodeAffinity:
                                properties:
                                  preferredDuringSchedulingIgnoredDuringExecution:
                                    items:
                                      properties:
                                        preference:
                                          properties:
                                            matchExpressions:
                                              items:
                                                properties:
                                                  key:
                                                    type: string
                                                  operator:
                                                    type: string
                                                  values:
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                  - key
                                                  - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchFields:
                                              items:
                                                properties:
                                                  key:
                                                    type: string
                                                  operator:
                                                    type: string
                                                  values:
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                  - key
                                                  - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        weight:
                                          format: int32
                                          type: integer
                                      required:
                                        - preference
                                        - weight
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  requiredDuringSchedulingIgnoredDuringExecution:
                                    properties:
                                      nodeSelectorTerms:
                                        items:
                                          properties:
                                            matchExpressions:
                                              items:
                                                properties:
                                                  key:
                                                    type: string
                                                  operator:
                                                    type: string
                                                  values:
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                  - key
                                                  - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchFields:
                                              items:
                                                properties:
                                                  key:
                                                    type: string
                                                  operator:
                                                    type: string
                                                  values:
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                  - key
                                                  - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    required:
                                      - nodeSelectorTerms
                                    type: object
                                    x-kubernetes-map-type: atomic
                                type: object
                              podAffinity:
                                properties:
                                  preferredDuringSchedulingIgnoredDuringExecution:
                                    items:
                                      properties:
                                        podAffinityTerm:
                                          properties:
                                            labelSelector:
                                              properties:
                                                matchExpressions:
                                                  items:
                                                    properties:
                                                      key:
                                                        type: string
                                                      operator:
                                                        type: string
                                                      values:
                                                        items:
                                                          type: string
                                                        type: array
                                                        x-kubernetes-list-type: atomic
                                                    required:
                                                      - key
                                                      - operator
                                                    type: object
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                                matchLabels:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            matchLabelKeys:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            mismatchLabelKeys:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            namespaceSelector:
                                              properties:
                                                matchExpressions:
                                                  items:
                                                    properties:
                                                      key:
                                                        type: string
                                                      operator:
                                                        type: string
                                                      values:
                                                        items:
                                                          type: string
                                                        type: array
                                                        x-kubernetes-list-type: atomic
                                                    required:
                                                      - key
                                                      - operator
                                                    type: object
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                                matchLabels:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            namespaces:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            topologyKey:
                                              type: string
                                          required:
                                            - topologyKey
                                          type: object
                                        weight:
                                          format: int32
                                          type: integer
                                      required:
                                        - podAffinityTerm
                                        - weight
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  requiredDuringSchedulingIgnoredDuringExecution:
                                    items:
                                      properties:
                                        labelSelector:
                                          properties:
                                            matchExpressions:
                                              items:
                                                properties:
                                                  key:
                                                    type: string
                                                  operator:
                                                    type: string
                                                  values:
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                  - key
                                                  - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        matchLabelKeys:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        mismatchLabelKeys:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        namespaceSelector:
                                          properties:
                                            matchExpressions:
                                              items:
                                                properties:
                                                  key:
                                                    type: string
                                                  operator:
                                                    type: string
                                                  values:
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                  - key
                                                  - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        namespaces:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        topologyKey:
                                          type: string
                                      required:
                                        - topologyKey
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              podAntiAffinity:
                                properties:
                                  preferredDuringSchedulingIgnoredDuringExecution:
                                    items:
                                      properties:
                                        podAffinityTerm:
                                          properties:
                                            labelSelector:
                                              properties:
                                                matchExpressions:
                                                  items:
                                                    properties:
                                                      key:
                                                        type: string
                                                      operator:
                                                        type: string
                                                      values:
                                                        items:
                                                          type: string
                                                        type: array
                                                        x-kubernetes-list-type: atomic
                                                    required:
                                                      - key
                                                      - operator
                                                    type: object
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                                matchLabels:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            matchLabelKeys:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            mismatchLabelKeys:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            namespaceSelector:
                                              properties:
                                                matchExpressions:
                                                  items:
                                                    properties:
                                                      key:
                                                        type: string
                                                      operator:
                                                        type: string
                                                      values:
                                                        items:
                                                          type: string
                                                        type: array
                                                        x-kubernetes-list-type: atomic
                                                    required:
                                                      - key
                                                      - operator
                                                    type: object
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                                matchLabels:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            namespaces:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            topologyKey:
                                              type: string
                                          required:
                                            - topologyKey
                                          type: object
                                        weight:
                                          format: int32
                                          type: integer
                                      required:
                                        - podAffinityTerm
                                        - weight
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  requiredDuringSchedulingIgnoredDuringExecution:
                                    items:
                                      properties:
                                        labelSelector:
                                          properties:
                                            matchExpressions:
                                              items:
                                                properties:
                                                  key:
                                                    type: string
                                                  operator:
                                                    type: string
                                                  values:
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                  - key
                                                  - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        matchLabelKeys:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        mismatchLabelKeys:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        namespaceSelector:
                                          properties:
                                            matchExpressions:
                                              items:
                                                properties:
                                                  key:
                                                    type: string
                                                  operator:
                                                    type: string
                                                  values:
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                  - key
                                                  - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        namespaces:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        topologyKey:
                                          type: string
                                      required:
                                        - topologyKey
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              tolerations:
                                items:
                                  properties:
                                    effect:
                                      type: string
                                    key:
                                      type: string
                                    operator:
                                      type: string
                                    tolerationSeconds:
                                      format: int64
                                      type: integer
                                    value:
                                      type: string
                                  type: object
                                type: array
                              topologySpreadConstraints:
                                items:
                                  properties:
                                    labelSelector:
                                      properties:
                                        matchExpressions:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              operator:
                                                type: string
                                              values:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                              - key
                                              - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    maxSkew:
                                      format: int32
                                      type: integer
                                    minDomains:
                                      format: int32
                                      type: integer
                                    nodeAffinityPolicy:
                                      type: string
                                    nodeTaintsPolicy:
                                      type: string
                                    topologyKey:
                                      type: string
                                    whenUnsatisfiable:
                                      type: string
                                  required:
                                    - maxSkew
                                    - topologyKey
                                    - whenUnsatisfiable
                                  type: object
                                type: array
                            type: object
                            x-kubernetes-preserve-unknown-fields: true
                          resources:
                            description: ResourceRequirements describes the compute resource requirements.
                            nullable: true
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This field depends on the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                    - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                  - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                            x-kubernetes-preserve-unknown-fields: true
                          schedulerName:
                            description: Scheduler name for OSD pod placement
                            type: string
                          tuneDeviceClass:
                            description: TuneSlowDeviceClass Tune the OSD when running on a slow Device Class
                            type: boolean
                          tuneFastDeviceClass:
                            description: TuneFastDeviceClass Tune the OSD when running on a fast Device Class
                            type: boolean
                          volumeClaimTemplates:
                            description: VolumeClaimTemplates is a list of PVC templates for the underlying storage devices
                            items:
                              description: VolumeClaimTemplate is a simplified version of K8s corev1's PVC. It has no type meta or status.
                              properties:
                                metadata:
                                  description: |-
                                    Standard object's metadata.
                                    More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
                                  properties:
                                    annotations:
                                      additionalProperties:
                                        type: string
                                      type: object
                                      x-kubernetes-preserve-unknown-fields: true
                                    finalizers:
                                      items:
                                        type: string
                                      type: array
                                    labels:
                                      additionalProperties:
                                        type: string
                                      type: object
                                    name:
                                      type: string
                                    namespace:
                                      type: string
                                  type: object
                                spec:
                                  description: |-
                                    spec defines the desired characteristics of a volume requested by a pod author.
                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                  properties:
                                    accessModes:
                                      description: |-
                                        accessModes contains the desired access modes the volume should have.
                                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    dataSource:
                                      description: |-
                                        dataSource field can be used to specify either:
                                        * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
                                        * An existing PVC (PersistentVolumeClaim)
                                        If the provisioner or an external controller can support the specified data source,
                                        it will create a new volume based on the contents of the specified data source.
                                        When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
                                        and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
                                        If the namespace is specified, then dataSourceRef will not be copied to dataSource.
                                      properties:
                                        apiGroup:
                                          description: |-
                                            APIGroup is the group for the resource being referenced.
                                            If APIGroup is not specified, the specified Kind must be in the core API group.
                                            For any other third-party types, APIGroup is required.
                                          type: string
                                        kind:
                                          description: Kind is the type of resource being referenced
                                          type: string
                                        name:
                                          description: Name is the name of resource being referenced
                                          type: string
                                      required:
                                        - kind
                                        - name
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    dataSourceRef:
                                      description: |-
                                        dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
                                        volume is desired. This may be any object from a non-empty API group (non
                                        core object) or a PersistentVolumeClaim object.
                                        When this field is specified, volume binding will only succeed if the type of
                                        the specified object matches some installed volume populator or dynamic
                                        provisioner.
                                        This field will replace the functionality of the dataSource field and as such
                                        if both fields are non-empty, they must have the same value. For backwards
                                        compatibility, when namespace isn't specified in dataSourceRef,
                                        both fields (dataSource and dataSourceRef) will be set to the same
                                        value automatically if one of them is empty and the other is non-empty.
                                        When namespace is specified in dataSourceRef,
                                        dataSource isn't set to the same value and must be empty.
                                        There are three important differences between dataSource and dataSourceRef:
                                        * While dataSource only allows two specific types of objects, dataSourceRef
                                          allows any non-core object, as well as PersistentVolumeClaim objects.
                                        * While dataSource ignores disallowed values (dropping them), dataSourceRef
                                          preserves all values, and generates an error if a disallowed value is
                                          specified.
                                        * While dataSource only allows local objects, dataSourceRef allows objects
                                          in any namespaces.
                                        (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
                                        (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                      properties:
                                        apiGroup:
                                          description: |-
                                            APIGroup is the group for the resource being referenced.
                                            If APIGroup is not specified, the specified Kind must be in the core API group.
                                            For any other third-party types, APIGroup is required.
                                          type: string
                                        kind:
                                          description: Kind is the type of resource being referenced
                                          type: string
                                        name:
                                          description: Name is the name of resource being referenced
                                          type: string
                                        namespace:
                                          description: |-
                                            Namespace is the namespace of resource being referenced
                                            Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
                                            (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                          type: string
                                      required:
                                        - kind
                                        - name
                                      type: object
                                    resources:
                                      description: |-
                                        resources represents the minimum resources the volume should have.
                                        Users are allowed to specify resource requirements
                                        that are lower than previous value but must still be higher than capacity recorded in the
                                        status field of the claim.
                                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
                                      properties:
                                        limits:
                                          additionalProperties:
                                            anyOf:
                                              - type: integer
                                              - type: string
                                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                            x-kubernetes-int-or-string: true
                                          description: |-
                                            Limits describes the maximum amount of compute resources allowed.
                                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                          type: object
                                        requests:
                                          additionalProperties:
                                            anyOf:
                                              - type: integer
                                              - type: string
                                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                            x-kubernetes-int-or-string: true
                                          description: |-
                                            Requests describes the minimum amount of compute resources required.
                                            If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                            otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                          type: object
                                      type: object
                                    selector:
                                      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.
                                          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.
                                                type: string
                                              operator:
                                                description: |-
                                                  operator represents a key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists and DoesNotExist.
                                                type: string
                                              values:
                                                description: |-
                                                  values is an array of string values. If the operator is In or NotIn,
                                                  the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                  the values array must be empty. This array is replaced during a strategic
                                                  merge patch.
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                              - key
                                              - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: |-
                                            matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions, whose key field is "key", the
                                            operator is "In", and the values array contains only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    storageClassName:
                                      description: |-
                                        storageClassName is the name of the StorageClass required by the claim.
                                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
                                      type: string
                                    volumeAttributesClassName:
                                      description: |-
                                        volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
                                        If specified, the CSI driver will create or update the volume with the attributes defined
                                        in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
                                        it can be changed after the claim is created. An empty string or nil value indicates that no
                                        VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
                                        this field can be reset to its previous value (including nil) to cancel the modification.
                                        If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
                                        set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
                                        exists.
                                        More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
                                      type: string
                                    volumeMode:
                                      description: |-
                                        volumeMode defines what type of volume is required by the claim.
                                        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.
                                      type: string
                                  type: object
                              type: object
                            type: array
                        required:
                          - count
                          - name
                          - volumeClaimTemplates
                        type: object
                      nullable: true
                      type: array
                    store:
                      description: OSDStore is the backend storage type used for creating the OSDs
                      properties:
                        type:
                          description: Type of backend storage to be used while creating OSDs. If empty, then bluestore will be used
                          enum:
                            - bluestore
                            - bluestore-rdr
                          type: string
                        updateStore:
                          description: |-
                            UpdateStore updates the backend store for existing OSDs. It destroys each OSD one at a time, cleans up the backing disk
                            and prepares same OSD on that disk
                          pattern: ^$|^yes-really-update-store$
                          type: string
                      type: object
                    useAllDevices:
                      description: Whether to consume all the storage devices found on a machine
                      type: boolean
                    useAllNodes:
                      type: boolean
                    volumeClaimTemplates:
                      description: PersistentVolumeClaims to use as storage
                      items:
                        description: VolumeClaimTemplate is a simplified version of K8s corev1's PVC. It has no type meta or status.
                        properties:
                          metadata:
                            description: |-
                              Standard object's metadata.
                              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
                            properties:
                              annotations:
                                additionalProperties:
                                  type: string
                                type: object
                              finalizers:
                                items:
                                  type: string
                                type: array
                              labels:
                                additionalProperties:
                                  type: string
                                type: object
                              name:
                                type: string
                              namespace:
                                type: string
                            type: object
                          spec:
                            description: |-
                              spec defines the desired characteristics of a volume requested by a pod author.
                              More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                            properties:
                              accessModes:
                                description: |-
                                  accessModes contains the desired access modes the volume should have.
                                  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              dataSource:
                                description: |-
                                  dataSource field can be used to specify either:
                                  * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
                                  * An existing PVC (PersistentVolumeClaim)
                                  If the provisioner or an external controller can support the specified data source,
                                  it will create a new volume based on the contents of the specified data source.
                                  When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
                                  and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
                                  If the namespace is specified, then dataSourceRef will not be copied to dataSource.
                                properties:
                                  apiGroup:
                                    description: |-
                                      APIGroup is the group for the resource being referenced.
                                      If APIGroup is not specified, the specified Kind must be in the core API group.
                                      For any other third-party types, APIGroup is required.
                                    type: string
                                  kind:
                                    description: Kind is the type of resource being referenced
                                    type: string
                                  name:
                                    description: Name is the name of resource being referenced
                                    type: string
                                required:
                                  - kind
                                  - name
                                type: object
                                x-kubernetes-map-type: atomic
                              dataSourceRef:
                                description: |-
                                  dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
                                  volume is desired. This may be any object from a non-empty API group (non
                                  core object) or a PersistentVolumeClaim object.
                                  When this field is specified, volume binding will only succeed if the type of
                                  the specified object matches some installed volume populator or dynamic
                                  provisioner.
                                  This field will replace the functionality of the dataSource field and as such
                                  if both fields are non-empty, they must have the same value. For backwards
                                  compatibility, when namespace isn't specified in dataSourceRef,
                                  both fields (dataSource and dataSourceRef) will be set to the same
                                  value automatically if one of them is empty and the other is non-empty.
                                  When namespace is specified in dataSourceRef,
                                  dataSource isn't set to the same value and must be empty.
                                  There are three important differences between dataSource and dataSourceRef:
                                  * While dataSource only allows two specific types of objects, dataSourceRef
                                    allows any non-core object, as well as PersistentVolumeClaim objects.
                                  * While dataSource ignores disallowed values (dropping them), dataSourceRef
                                    preserves all values, and generates an error if a disallowed value is
                                    specified.
                                  * While dataSource only allows local objects, dataSourceRef allows objects
                                    in any namespaces.
                                  (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
                                  (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                properties:
                                  apiGroup:
                                    description: |-
                                      APIGroup is the group for the resource being referenced.
                                      If APIGroup is not specified, the specified Kind must be in the core API group.
                                      For any other third-party types, APIGroup is required.
                                    type: string
                                  kind:
                                    description: Kind is the type of resource being referenced
                                    type: string
                                  name:
                                    description: Name is the name of resource being referenced
                                    type: string
                                  namespace:
                                    description: |-
                                      Namespace is the namespace of resource being referenced
                                      Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
                                      (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                    type: string
                                required:
                                  - kind
                                  - name
                                type: object
                              resources:
                                description: |-
                                  resources represents the minimum resources the volume should have.
                                  Users are allowed to specify resource requirements
                                  that are lower than previous value but must still be higher than capacity recorded in the
                                  status field of the claim.
                                  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
                                properties:
                                  limits:
                                    additionalProperties:
                                      anyOf:
                                        - type: integer
                                        - type: string
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                    description: |-
                                      Limits describes the maximum amount of compute resources allowed.
                                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                    type: object
                                  requests:
                                    additionalProperties:
                                      anyOf:
                                        - type: integer
                                        - type: string
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                    description: |-
                                      Requests describes the minimum amount of compute resources required.
                                      If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                      otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                    type: object
                                type: object
                              selector:
                                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.
                                    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.
                                          type: string
                                        operator:
                                          description: |-
                                            operator represents a key's relationship to a set of values.
                                            Valid operators are In, NotIn, Exists and DoesNotExist.
                                          type: string
                                        values:
                                          description: |-
                                            values is an array of string values. If the operator is In or NotIn,
                                            the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                            the values array must be empty. This array is replaced during a strategic
                                            merge patch.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    description: |-
                                      matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                      map is equivalent to an element of matchExpressions, whose key field is "key", the
                                      operator is "In", and the values array contains only "value". The requirements are ANDed.
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              storageClassName:
                                description: |-
                                  storageClassName is the name of the StorageClass required by the claim.
                                  More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
                                type: string
                              volumeAttributesClassName:
                                description: |-
                                  volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
                                  If specified, the CSI driver will create or update the volume with the attributes defined
                                  in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
                                  it can be changed after the claim is created. An empty string or nil value indicates that no
                                  VolumeAttributesClass will be applied to the claim. If the claim enters an Infeasible error state,
                                  this field can be reset to its previous value (including nil) to cancel the modification.
                                  If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
                                  set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
                                  exists.
                                  More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
                                type: string
                              volumeMode:
                                description: |-
                                  volumeMode defines what type of volume is required by the claim.
                                  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.
                                type: string
                            type: object
                        type: object
                      type: array
                  type: object
                upgradeOSDRequiresHealthyPGs:
                  description: |-
                    UpgradeOSDRequiresHealthyPGs defines if OSD upgrade requires PGs are clean. If set to `true` OSD upgrade process won't start until PGs are healthy.
                    This configuration will be ignored if `skipUpgradeChecks` is `true`.
                    Default is false.
                  type: boolean
                waitTimeoutForHealthyOSDInMinutes:
                  description: |-
                    WaitTimeoutForHealthyOSDInMinutes defines the time the operator would wait before an OSD can be stopped for upgrade or restart.
                    If the timeout exceeds and OSD is not ok to stop, then the operator would skip upgrade for the current OSD and proceed with the next one
                    if `continueUpgradeAfterChecksEvenIfNotHealthy` is `false`. If `continueUpgradeAfterChecksEvenIfNotHealthy` is `true`, then operator would
                    continue with the upgrade of an OSD even if its not ok to stop after the timeout. This timeout won't be applied if `skipUpgradeChecks` is `true`.
                    The default wait timeout is 10 minutes.
                  format: int64
                  type: integer
              type: object
            status:
              description: ClusterStatus represents the status of a Ceph cluster
              nullable: true
              properties:
                ceph:
                  description: CephStatus is the details health of a Ceph Cluster
                  properties:
                    capacity:
                      description: Capacity is the capacity information of a Ceph Cluster
                      properties:
                        bytesAvailable:
                          format: int64
                          type: integer
                        bytesTotal:
                          format: int64
                          type: integer
                        bytesUsed:
                          format: int64
                          type: integer
                        lastUpdated:
                          type: string
                      type: object
                    details:
                      additionalProperties:
                        description: CephHealthMessage represents the health message of a Ceph Cluster
                        properties:
                          message:
                            type: string
                          severity:
                            type: string
                        required:
                          - message
                          - severity
                        type: object
                      type: object
                    fsid:
                      type: string
                    health:
                      type: string
                    lastChanged:
                      type: string
                    lastChecked:
                      type: string
                    previousHealth:
                      type: string
                    versions:
                      description: CephDaemonsVersions show the current ceph version for different ceph daemons
                      properties:
                        cephfs-mirror:
                          additionalProperties:
                            type: integer
                          description: CephFSMirror shows CephFSMirror Ceph version
                          type: object
                        mds:
                          additionalProperties:
                            type: integer
                          description: Mds shows Mds Ceph version
                          type: object
                        mgr:
                          additionalProperties:
                            type: integer
                          description: Mgr shows Mgr Ceph version
                          type: object
                        mon:
                          additionalProperties:
                            type: integer
                          description: Mon shows Mon Ceph version
                          type: object
                        osd:
                          additionalProperties:
                            type: integer
                          description: Osd shows Osd Ceph version
                          type: object
                        overall:
                          additionalProperties:
                            type: integer
                          description: Overall shows overall Ceph version
                          type: object
                        rbd-mirror:
                          additionalProperties:
                            type: integer
                          description: RbdMirror shows RbdMirror Ceph version
                          type: object
                        rgw:
                          additionalProperties:
                            type: integer
                          description: Rgw shows Rgw Ceph version
                          type: object
                      type: object
                  type: object
                cephx:
                  description: ClusterCephxStatus defines the cephx key rotation status of various daemons on the cephCluster resource
                  properties:
                    admin:
                      description: Admin shows the CephX key status for the client.admin key
                      properties:
                        keyCephVersion:
                          description: |-
                            KeyCephVersion reports the Ceph version that created the current generation's keys. This is
                            same string format as reported by `CephCluster.status.version.version` to allow them to be
                            compared. E.g., `20.2.0-0`.
                            For all newly-created resources, this field set to the version of Ceph that created the key.
                            The special value "Uninitialized" indicates that keys are being created for the first time.
                            An empty string indicates that the version is unknown, as expected in brownfield deployments.
                          type: string
                        keyGeneration:
                          description: |-
                            KeyGeneration represents the CephX key generation for the last successful reconcile.
                            For all newly-created resources, this field is set to `1`.
                            When keys are rotated due to any rotation policy, the generation is incremented or updated to
                            the configured policy generation.
                            Generation `0` indicates that keys existed prior to the implementation of key tracking.
                          format: int32
                          type: integer
                      type: object
                    cephExporter:
                      description: Ceph Exporter represents the cephx key rotation status of the ceph exporter daemon
                      properties:
                        keyCephVersion:
                          description: |-
                            KeyCephVersion reports the Ceph version that created the current generation's keys. This is
                            same string format as reported by `CephCluster.status.version.version` to allow them to be
                            compared. E.g., `20.2.0-0`.
                            For all newly-created resources, this field set to the version of Ceph that created the key.
                            The special value "Uninitialized" indicates that keys are being created for the first time.
                            An empty string indicates that the version is unknown, as expected in brownfield deployments.
                          type: string
                        keyGeneration:
                          description: |-
                            KeyGeneration represents the CephX key generation for the last successful reconcile.
                            For all newly-created resources, this field is set to `1`.
                            When keys are rotated due to any rotation policy, the generation is incremented or updated to
                            the configured policy generation.
                            Generation `0` indicates that keys existed prior to the implementation of key tracking.
                          format: int32
                          type: integer
                      type: object
                    crashCollector:
                      description: Crash Collector represents the cephx key rotation status of the crash collector daemon
                      properties:
                        keyCephVersion:
                          description: |-
                            KeyCephVersion reports the Ceph version that created the current generation's keys. This is
                            same string format as reported by `CephCluster.status.version.version` to allow them to be
                            compared. E.g., `20.2.0-0`.
                            For all newly-created resources, this field set to the version of Ceph that created the key.
                            The special value "Uninitialized" indicates that keys are being created for the first time.
                            An empty string indicates that the version is unknown, as expected in brownfield deployments.
                          type: string
                        keyGeneration:
                          description: |-
                            KeyGeneration represents the CephX key generation for the last successful reconcile.
                            For all newly-created resources, this field is set to `1`.
                            When keys are rotated due to any rotation policy, the generation is incremented or updated to
                            the configured policy generation.
                            Generation `0` indicates that keys existed prior to the implementation of key tracking.
                          format: int32
                          type: integer
                      type: object
                    csi:
                      description: CSI shows the CephX key status for Ceph-CSI components.
                      properties:
                        keyCephVersion:
                          description: |-
                            KeyCephVersion reports the Ceph version that created the current generation's keys. This is
                            same string format as reported by `CephCluster.status.version.version` to allow them to be
                            compared. E.g., `20.2.0-0`.
                            For all newly-created resources, this field set to the version of Ceph that created the key.
                            The special value "Uninitialized" indicates that keys are being created for the first time.
                            An empty string indicates that the version is unknown, as expected in brownfield deployments.
                          type: string
                        keyGeneration:
                          description: |-
                            KeyGeneration represents the CephX key generation for the last successful reconcile.
                            For all newly-created resources, this field is set to `1`.
                            When keys are rotated due to any rotation policy, the generation is incremented or updated to
                            the configured policy generation.
                            Generation `0` indicates that keys existed prior to the implementation of key tracking.
                          format: int32
                          type: integer
                        priorKeyCount:
                          description: PriorKeyCount reports the number of prior-generation CephX keys that remain active for the related component
                          type: integer
                      type: object
                    mgr:
                      description: Mgr represents the cephx key rotation status of the ceph manager daemon
                      properties:
                        keyCephVersion:
                          description: |-
                            KeyCephVersion reports the Ceph version that created the current generation's keys. This is
                            same string format as reported by `CephCluster.status.version.version` to allow them to be
                            compared. E.g., `20.2.0-0`.
                            For all newly-created resources, this field set to the version of Ceph that created the key.
                            The special value "Uninitialized" indicates that keys are being created for the first time.
                            An empty string indicates that the version is unknown, as expected in brownfield deployments.
                          type: string
                        keyGeneration:
                          description: |-
                            KeyGeneration represents the CephX key generation for the last successful reconcile.
                            For all newly-created resources, this field is set to `1`.
                            When keys are rotated due to any rotation policy, the generation is incremented or updated to
                            the configured policy generation.
                            Generation `0` indicates that keys existed prior to the implementation of key tracking.
                          format: int32
                          type: integer
                      type: object
                    mon:
                      description: Mon represents the CephX key status of the Monitor daemons
                      properties:
                        keyCephVersion:
                          description: |-
                            KeyCephVersion reports the Ceph version that created the current generation's keys. This is
                            same string format as reported by `CephCluster.status.version.version` to allow them to be
                            compared. E.g., `20.2.0-0`.
                            For all newly-created resources, this field set to the version of Ceph that created the key.
                            The special value "Uninitialized" indicates that keys are being created for the first time.
                            An empty string indicates that the version is unknown, as expected in brownfield deployments.
                          type: string
                        keyGeneration:
                          description: |-
                            KeyGeneration represents the CephX key generation for the last successful reconcile.
                            For all newly-created resources, this field is set to `1`.
                            When keys are rotated due to any rotation policy, the generation is incremented or updated to
                            the configured policy generation.
                            Generation `0` indicates that keys existed prior to the implementation of key tracking.
                          format: int32
                          type: integer
                      type: object
                    osd:
                      description: OSD shows the CephX key status of of OSDs
                      properties:
                        keyCephVersion:
                          description: |-
                            KeyCephVersion reports the Ceph version that created the current generation's keys. This is
                            same string format as reported by `CephCluster.status.version.version` to allow them to be
                            compared. E.g., `20.2.0-0`.
                            For all newly-created resources, this field set to the version of Ceph that created the key.
                            The special value "Uninitialized" indicates that keys are being created for the first time.
                            An empty string indicates that the version is unknown, as expected in brownfield deployments.
                          type: string
                        keyGeneration:
                          description: |-
                            KeyGeneration represents the CephX key generation for the last successful reconcile.
                            For all newly-created resources, this field is set to `1`.
                            When keys are rotated due to any rotation policy, the generation is incremented or updated to
                            the configured policy generation.
                            Generation `0` indicates that keys existed prior to the implementation of key tracking.
                          format: int32
                          type: integer
                      type: object
                    rbdMirrorPeer:
                      description: RBDMirrorPeer represents the cephx key rotation status of the `rbd-mirror-peer` user
                      properties:
                        keyCephVersion:
                          description: |-
                            KeyCephVersion reports the Ceph version that created the current generation's keys. This is
                            same string format as reported by `CephCluster.status.version.version` to allow them to be
                            compared. E.g., `20.2.0-0`.
                            For all newly-created resources, this field set to the version of Ceph that created the key.
                            The special value "Uninitialized" indicates that keys are being created for the first time.
                            An empty string indicates that the version is unknown, as expected in brownfield deployments.
                          type: string
                        keyGeneration:
                          description: |-
                            KeyGeneration represents the CephX key generation for the last successful reconcile.
                            For all newly-created resources, this field is set to `1`.
                            When keys are rotated due to any rotation policy, the generation is incremented or updated to
                            the configured policy generation.
                            Generation `0` indicates that keys existed prior to the implementation of key tracking.
                          format: int32
                          type: integer
                      type: object
                  type: object
                conditions:
                  items:
                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.
                    properties:
                      lastHeartbeatTime:
                        format: date-time
                        type: string
                      lastTransitionTime:
                        format: date-time
                        type: string
                      message:
                        type: string
                      reason:
                        description: ConditionReason is a reason for a condition
                        type: string
                      status:
                        type: string
                      type:
                        description: ConditionType represent a resource's status
                        type: string
                    type: object
                  type: array
                message:
                  type: string
                observedGeneration:
                  description: ObservedGeneration is the latest generation observed by the controller.
                  format: int64
                  type: integer
                phase:
                  description: ConditionType represent a resource's status
                  type: string
                state:
                  description: ClusterState represents the state of a Ceph Cluster
                  type: string
                storage:
                  description: CephStorage represents flavors of Ceph Cluster Storage
                  properties:
                    deprecatedOSDs:
                      additionalProperties:
                        items:
                          type: integer
                        type: array
                      type: object
                    deviceClasses:
                      items:
                        description: DeviceClasses represents device classes of a Ceph Cluster
                        properties:
                          name:
                            type: string
                        type: object
                      type: array
                    osd:
                      description: OSDStatus represents OSD status of the ceph Cluster
                      properties:
                        migrationStatus:
                          description: MigrationStatus status represents the current status of any OSD migration.
                          properties:
                            pending:
                              type: integer
                          type: object
                        storeType:
                          additionalProperties:
                            type: integer
                          description: StoreType is a mapping between the OSD backend stores and number of OSDs using these stores
                          type: object
                      type: object
                  type: object
                version:
                  description: ClusterVersion represents the version of a Ceph Cluster
                  properties:
                    image:
                      type: string
                    version:
                      type: string
                  type: object
              type: object
              x-kubernetes-preserve-unknown-fields: true
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
    helm.sh/resource-policy: keep
  name: cephcosidrivers.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephCOSIDriver
    listKind: CephCOSIDriverList
    plural: cephcosidrivers
    shortNames:
      - cephcosi
    singular: cephcosidriver
  scope: Namespaced
  versions:
    - name: v1
      schema:
        openAPIV3Schema:
          description: CephCOSIDriver represents the CRD for the Ceph COSI Driver Deployment
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: Spec represents the specification of a Ceph COSI Driver
              properties:
                deploymentStrategy:
                  description: DeploymentStrategy is the strategy to use to deploy the COSI driver.
                  enum:
                    - Never
                    - Auto
                    - Always
                  type: string
                image:
                  description: Image is the container image to run the Ceph COSI driver
                  type: string
                objectProvisionerImage:
                  description: ObjectProvisionerImage is the container image to run the COSI driver sidecar
                  type: string
                placement:
                  properties:
                    nodeAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              preference:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchFields:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                                x-kubernetes-map-type: atomic
                              weight:
                                format: int32
                                type: integer
                            required:
                              - preference
                              - weight
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        requiredDuringSchedulingIgnoredDuringExecution:
                          properties:
                            nodeSelectorTerms:
                              items:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchFields:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                                x-kubernetes-map-type: atomic
                              type: array
                              x-kubernetes-list-type: atomic
                          required:
                            - nodeSelectorTerms
                          type: object
                          x-kubernetes-map-type: atomic
                      type: object
                    podAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              podAffinityTerm:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    type: string
                                required:
                                  - topologyKey
                                type: object
                              weight:
                                format: int32
                                type: integer
                            required:
                              - podAffinityTerm
                              - weight
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        requiredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              labelSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              matchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              mismatchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              namespaceSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              namespaces:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              topologyKey:
                                type: string
                            required:
                              - topologyKey
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                      type: object
                    podAntiAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              podAffinityTerm:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    type: string
                                required:
                                  - topologyKey
                                type: object
                              weight:
                                format: int32
                                type: integer
                            required:
                              - podAffinityTerm
                              - weight
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        requiredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              labelSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              matchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              mismatchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              namespaceSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              namespaces:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              topologyKey:
                                type: string
                            required:
                              - topologyKey
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                      type: object
                    tolerations:
                      items:
                        properties:
                          effect:
                            type: string
                          key:
                            type: string
                          operator:
                            type: string
                          tolerationSeconds:
                            format: int64
                            type: integer
                          value:
                            type: string
                        type: object
                      type: array
                    topologySpreadConstraints:
                      items:
                        properties:
                          labelSelector:
                            properties:
                              matchExpressions:
                                items:
                                  properties:
                                    key:
                                      type: string
                                    operator:
                                      type: string
                                    values:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  required:
                                    - key
                                    - operator
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              matchLabels:
                                additionalProperties:
                                  type: string
                                type: object
                            type: object
                            x-kubernetes-map-type: atomic
                          matchLabelKeys:
                            items:
                              type: string
                            type: array
                            x-kubernetes-list-type: atomic
                          maxSkew:
                            format: int32
                            type: integer
                          minDomains:
                            format: int32
                            type: integer
                          nodeAffinityPolicy:
                            type: string
                          nodeTaintsPolicy:
                            type: string
                          topologyKey:
                            type: string
                          whenUnsatisfiable:
                            type: string
                        required:
                          - maxSkew
                          - topologyKey
                          - whenUnsatisfiable
                        type: object
                      type: array
                  type: object
                resources:
                  description: Resources is the resource requirements for the COSI driver
                  properties:
                    claims:
                      description: |-
                        Claims lists the names of resources, defined in spec.resourceClaims,
                        that are used by this container.

                        This field depends on the
                        DynamicResourceAllocation feature gate.

                        This field is immutable. It can only be set for containers.
                      items:
                        description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                        properties:
                          name:
                            description: |-
                              Name must match the name of one entry in pod.spec.resourceClaims of
                              the Pod where this field is used. It makes that resource available
                              inside a container.
                            type: string
                          request:
                            description: |-
                              Request is the name chosen for a request in the referenced claim.
                              If empty, everything from the claim is made available, otherwise
                              only the result of this request.
                            type: string
                        required:
                          - name
                        type: object
                      type: array
                      x-kubernetes-list-map-keys:
                        - name
                      x-kubernetes-list-type: map
                    limits:
                      additionalProperties:
                        anyOf:
                          - type: integer
                          - type: string
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                      description: |-
                        Limits describes the maximum amount of compute resources allowed.
                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                      type: object
                    requests:
                      additionalProperties:
                        anyOf:
                          - type: integer
                          - type: string
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                      description: |-
                        Requests describes the minimum amount of compute resources required.
                        If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                        otherwise to an implementation-defined value. Requests cannot exceed Limits.
                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                      type: object
                  type: object
              type: object
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
    helm.sh/resource-policy: keep
  name: cephfilesystemmirrors.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephFilesystemMirror
    listKind: CephFilesystemMirrorList
    plural: cephfilesystemmirrors
    shortNames:
      - cephfsm
    singular: cephfilesystemmirror
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .status.phase
          name: Phase
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v1
      schema:
        openAPIV3Schema:
          description: CephFilesystemMirror is the Ceph Filesystem Mirror object definition
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: FilesystemMirroringSpec is the filesystem mirroring specification
              properties:
                annotations:
                  additionalProperties:
                    type: string
                  description: The annotations-related configuration to add/set on each Pod related object.
                  nullable: true
                  type: object
                labels:
                  additionalProperties:
                    type: string
                  description: The labels-related configuration to add/set on each Pod related object.
                  nullable: true
                  type: object
                placement:
                  nullable: true
                  properties:
                    nodeAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              preference:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchFields:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                                x-kubernetes-map-type: atomic
                              weight:
                                format: int32
                                type: integer
                            required:
                              - preference
                              - weight
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        requiredDuringSchedulingIgnoredDuringExecution:
                          properties:
                            nodeSelectorTerms:
                              items:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchFields:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                                x-kubernetes-map-type: atomic
                              type: array
                              x-kubernetes-list-type: atomic
                          required:
                            - nodeSelectorTerms
                          type: object
                          x-kubernetes-map-type: atomic
                      type: object
                    podAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              podAffinityTerm:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    type: string
                                required:
                                  - topologyKey
                                type: object
                              weight:
                                format: int32
                                type: integer
                            required:
                              - podAffinityTerm
                              - weight
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        requiredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              labelSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              matchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              mismatchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              namespaceSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              namespaces:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              topologyKey:
                                type: string
                            required:
                              - topologyKey
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                      type: object
                    podAntiAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              podAffinityTerm:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    type: string
                                required:
                                  - topologyKey
                                type: object
                              weight:
                                format: int32
                                type: integer
                            required:
                              - podAffinityTerm
                              - weight
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        requiredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              labelSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              matchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              mismatchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              namespaceSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              namespaces:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              topologyKey:
                                type: string
                            required:
                              - topologyKey
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                      type: object
                    tolerations:
                      items:
                        properties:
                          effect:
                            type: string
                          key:
                            type: string
                          operator:
                            type: string
                          tolerationSeconds:
                            format: int64
                            type: integer
                          value:
                            type: string
                        type: object
                      type: array
                    topologySpreadConstraints:
                      items:
                        properties:
                          labelSelector:
                            properties:
                              matchExpressions:
                                items:
                                  properties:
                                    key:
                                      type: string
                                    operator:
                                      type: string
                                    values:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  required:
                                    - key
                                    - operator
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              matchLabels:
                                additionalProperties:
                                  type: string
                                type: object
                            type: object
                            x-kubernetes-map-type: atomic
                          matchLabelKeys:
                            items:
                              type: string
                            type: array
                            x-kubernetes-list-type: atomic
                          maxSkew:
                            format: int32
                            type: integer
                          minDomains:
                            format: int32
                            type: integer
                          nodeAffinityPolicy:
                            type: string
                          nodeTaintsPolicy:
                            type: string
                          topologyKey:
                            type: string
                          whenUnsatisfiable:
                            type: string
                        required:
                          - maxSkew
                          - topologyKey
                          - whenUnsatisfiable
                        type: object
                      type: array
                  type: object
                priorityClassName:
                  description: PriorityClassName sets priority class on the cephfs-mirror pods
                  type: string
                resources:
                  description: The resource requirements for the cephfs-mirror pods
                  nullable: true
                  properties:
                    claims:
                      description: |-
                        Claims lists the names of resources, defined in spec.resourceClaims,
                        that are used by this container.

                        This field depends on the
                        DynamicResourceAllocation feature gate.

                        This field is immutable. It can only be set for containers.
                      items:
                        description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                        properties:
                          name:
                            description: |-
                              Name must match the name of one entry in pod.spec.resourceClaims of
                              the Pod where this field is used. It makes that resource available
                              inside a container.
                            type: string
                          request:
                            description: |-
                              Request is the name chosen for a request in the referenced claim.
                              If empty, everything from the claim is made available, otherwise
                              only the result of this request.
                            type: string
                        required:
                          - name
                        type: object
                      type: array
                      x-kubernetes-list-map-keys:
                        - name
                      x-kubernetes-list-type: map
                    limits:
                      additionalProperties:
                        anyOf:
                          - type: integer
                          - type: string
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                      description: |-
                        Limits describes the maximum amount of compute resources allowed.
                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                      type: object
                    requests:
                      additionalProperties:
                        anyOf:
                          - type: integer
                          - type: string
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                      description: |-
                        Requests describes the minimum amount of compute resources required.
                        If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                        otherwise to an implementation-defined value. Requests cannot exceed Limits.
                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                      type: object
                  type: object
              type: object
            status:
              description: FileMirrorStatus represents the status of the FileSystem mirror resource
              properties:
                cephx:
                  properties:
                    daemon:
                      description: Daemon shows the CephX key status for local Ceph daemons associated with this resources.
                      properties:
                        keyCephVersion:
                          description: |-
                            KeyCephVersion reports the Ceph version that created the current generation's keys. This is
                            same string format as reported by `CephCluster.status.version.version` to allow them to be
                            compared. E.g., `20.2.0-0`.
                            For all newly-created resources, this field set to the version of Ceph that created the key.
                            The special value "Uninitialized" indicates that keys are being created for the first time.
                            An empty string indicates that the version is unknown, as expected in brownfield deployments.
                          type: string
                        keyGeneration:
                          description: |-
                            KeyGeneration represents the CephX key generation for the last successful reconcile.
                            For all newly-created resources, this field is set to `1`.
                            When keys are rotated due to any rotation policy, the generation is incremented or updated to
                            the configured policy generation.
                            Generation `0` indicates that keys existed prior to the implementation of key tracking.
                          format: int32
                          type: integer
                      type: object
                  type: object
                conditions:
                  items:
                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.
                    properties:
                      lastHeartbeatTime:
                        format: date-time
                        type: string
                      lastTransitionTime:
                        format: date-time
                        type: string
                      message:
                        type: string
                      reason:
                        description: ConditionReason is a reason for a condition
                        type: string
                      status:
                        type: string
                      type:
                        description: ConditionType represent a resource's status
                        type: string
                    type: object
                  type: array
                observedGeneration:
                  description: ObservedGeneration is the latest generation observed by the controller.
                  format: int64
                  type: integer
                phase:
                  type: string
              type: object
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
    helm.sh/resource-policy: keep
  name: cephfilesystems.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephFilesystem
    listKind: CephFilesystemList
    plural: cephfilesystems
    shortNames:
      - cephfs
    singular: cephfilesystem
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - description: Number of desired active MDS daemons
          jsonPath: .spec.metadataServer.activeCount
          name: ActiveMDS
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
        - jsonPath: .status.phase
          name: Phase
          type: string
      name: v1
      schema:
        openAPIV3Schema:
          description: CephFilesystem represents a Ceph Filesystem
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: FilesystemSpec represents the spec of a file system
              properties:
                dataPools:
                  description: The data pool settings, with optional predefined pool name.
                  items:
                    description: NamedPoolSpec represents the named ceph pool spec
                    properties:
                      application:
                        description: The application name to set on the pool. Only expected to be set for rgw pools.
                        type: string
                      compressionMode:
                        description: |-
                          DEPRECATED: use Parameters instead, e.g., Parameters["compression_mode"] = "force"
                          The inline compression mode in Bluestore OSD to set to (options are: none, passive, aggressive, force)
                          Do NOT set a default value for kubebuilder as this will override the Parameters
                        enum:
                          - none
                          - passive
                          - aggressive
                          - force
                          - ""
                        nullable: true
                        type: string
                      crushRoot:
                        description: The root of the crush hierarchy utilized by the pool
                        nullable: true
                        type: string
                      deviceClass:
                        description: The device class the OSD should set to for use in the pool
                        nullable: true
                        type: string
                      enableCrushUpdates:
                        description: Allow rook operator to change the pool CRUSH tunables once the pool is created
                        nullable: true
                        type: boolean
                      enableRBDStats:
                        description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool
                        type: boolean
                      erasureCoded:
                        description: The erasure code settings
                        properties:
                          algorithm:
                            description: |-
                              The algorithm for erasure coding.
                              If absent, defaults to the plugin specified in osd_pool_default_erasure_code_profile.
                            enum:
                              - isa
                              - jerasure
                            type: string
                          codingChunks:
                            description: |-
                              Number of coding chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
                              This is the number of OSDs that can be lost simultaneously before data cannot be recovered.
                            minimum: 0
                            type: integer
                          dataChunks:
                            description: |-
                              Number of data chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
                              The number of chunks required to recover an object when any single OSD is lost is the same
                              as dataChunks so be aware that the larger the number of data chunks, the higher the cost of recovery.
                            minimum: 0
                            type: integer
                        required:
                          - codingChunks
                          - dataChunks
                        type: object
                      failureDomain:
                        description: 'The failure domain: osd/host/(region or zone if available) - technically also any type in the crush map'
                        type: string
                      mirroring:
                        description: The mirroring settings
                        properties:
                          enabled:
                            description: Enabled whether this pool is mirrored or not
                            type: boolean
                          mode:
                            description: 'Mode is the mirroring mode: pool, image or init-only.'
                            enum:
                              - pool
                              - image
                              - init-only
                            type: string
                          peers:
                            description: Peers represents the peers spec
                            nullable: true
                            properties:
                              secretNames:
                                description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers
                                items:
                                  type: string
                                type: array
                            type: object
                          snapshotSchedules:
                            description: SnapshotSchedules is the scheduling of snapshot for mirrored images/pools
                            items:
                              description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool
                              properties:
                                interval:
                                  description: Interval represent the periodicity of the snapshot.
                                  type: string
                                path:
                                  description: Path is the path to snapshot, only valid for CephFS
                                  type: string
                                startTime:
                                  description: StartTime indicates when to start the snapshot
                                  type: string
                              type: object
                            type: array
                        type: object
                      name:
                        description: Name of the pool
                        type: string
                      parameters:
                        additionalProperties:
                          type: string
                        description: Parameters is a list of properties to enable on a given pool
                        nullable: true
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      quotas:
                        description: The quota settings
                        nullable: true
                        properties:
                          maxBytes:
                            description: |-
                              MaxBytes represents the quota in bytes
                              Deprecated in favor of MaxSize
                            format: int64
                            type: integer
                          maxObjects:
                            description: MaxObjects represents the quota in objects
                            format: int64
                            type: integer
                          maxSize:
                            description: MaxSize represents the quota in bytes as a string
                            pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE]i|[kMGTPE])?$
                            type: string
                        type: object
                      replicated:
                        description: The replication settings
                        properties:
                          hybridStorage:
                            description: HybridStorage represents hybrid storage tier settings
                            nullable: true
                            properties:
                              primaryDeviceClass:
                                description: PrimaryDeviceClass represents high performance tier (for example SSD or NVME) for Primary OSD
                                minLength: 1
                                type: string
                              secondaryDeviceClass:
                                description: SecondaryDeviceClass represents low performance tier (for example HDDs) for remaining OSDs
                                minLength: 1
                                type: string
                            required:
                              - primaryDeviceClass
                              - secondaryDeviceClass
                            type: object
                          replicasPerFailureDomain:
                            description: ReplicasPerFailureDomain the number of replica in the specified failure domain
                            minimum: 1
                            type: integer
                          requireSafeReplicaSize:
                            description: RequireSafeReplicaSize if false allows you to set replica 1
                            type: boolean
                          size:
                            description: Size - Number of copies per object in a replicated storage pool, including the object itself (required for replicated pool type)
                            minimum: 0
                            type: integer
                          subFailureDomain:
                            description: SubFailureDomain the name of the sub-failure domain
                            type: string
                          targetSizeRatio:
                            description: TargetSizeRatio gives a hint (%) to Ceph in terms of expected consumption of the total cluster capacity
                            minimum: 0
                            type: number
                        required:
                          - size
                        type: object
                      statusCheck:
                        description: The mirroring statusCheck
                        properties:
                          mirror:
                            description: HealthCheckSpec represents the health check of an object store bucket
                            nullable: true
                            properties:
                              disabled:
                                type: boolean
                              interval:
                                description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
                                type: string
                              timeout:
                                type: string
                            type: object
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                    type: object
                  nullable: true
                  type: array
                metadataPool:
                  description: The metadata pool settings
                  nullable: true
                  properties:
                    application:
                      description: The application name to set on the pool. Only expected to be set for rgw pools.
                      type: string
                    compressionMode:
                      description: |-
                        DEPRECATED: use Parameters instead, e.g., Parameters["compression_mode"] = "force"
                        The inline compression mode in Bluestore OSD to set to (options are: none, passive, aggressive, force)
                        Do NOT set a default value for kubebuilder as this will override the Parameters
                      enum:
                        - none
                        - passive
                        - aggressive
                        - force
                        - ""
                      nullable: true
                      type: string
                    crushRoot:
                      description: The root of the crush hierarchy utilized by the pool
                      nullable: true
                      type: string
                    deviceClass:
                      description: The device class the OSD should set to for use in the pool
                      nullable: true
                      type: string
                    enableCrushUpdates:
                      description: Allow rook operator to change the pool CRUSH tunables once the pool is created
                      nullable: true
                      type: boolean
                    enableRBDStats:
                      description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool
                      type: boolean
                    erasureCoded:
                      description: The erasure code settings
                      properties:
                        algorithm:
                          description: |-
                            The algorithm for erasure coding.
                            If absent, defaults to the plugin specified in osd_pool_default_erasure_code_profile.
                          enum:
                            - isa
                            - jerasure
                          type: string
                        codingChunks:
                          description: |-
                            Number of coding chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
                            This is the number of OSDs that can be lost simultaneously before data cannot be recovered.
                          minimum: 0
                          type: integer
                        dataChunks:
                          description: |-
                            Number of data chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
                            The number of chunks required to recover an object when any single OSD is lost is the same
                            as dataChunks so be aware that the larger the number of data chunks, the higher the cost of recovery.
                          minimum: 0
                          type: integer
                      required:
                        - codingChunks
                        - dataChunks
                      type: object
                    failureDomain:
                      description: 'The failure domain: osd/host/(region or zone if available) - technically also any type in the crush map'
                      type: string
                    mirroring:
                      description: The mirroring settings
                      properties:
                        enabled:
                          description: Enabled whether this pool is mirrored or not
                          type: boolean
                        mode:
                          description: 'Mode is the mirroring mode: pool, image or init-only.'
                          enum:
                            - pool
                            - image
                            - init-only
                          type: string
                        peers:
                          description: Peers represents the peers spec
                          nullable: true
                          properties:
                            secretNames:
                              description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers
                              items:
                                type: string
                              type: array
                          type: object
                        snapshotSchedules:
                          description: SnapshotSchedules is the scheduling of snapshot for mirrored images/pools
                          items:
                            description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool
                            properties:
                              interval:
                                description: Interval represent the periodicity of the snapshot.
                                type: string
                              path:
                                description: Path is the path to snapshot, only valid for CephFS
                                type: string
                              startTime:
                                description: StartTime indicates when to start the snapshot
                                type: string
                            type: object
                          type: array
                      type: object
                    name:
                      description: Name of the pool
                      type: string
                    parameters:
                      additionalProperties:
                        type: string
                      description: Parameters is a list of properties to enable on a given pool
                      nullable: true
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    quotas:
                      description: The quota settings
                      nullable: true
                      properties:
                        maxBytes:
                          description: |-
                            MaxBytes represents the quota in bytes
                            Deprecated in favor of MaxSize
                          format: int64
                          type: integer
                        maxObjects:
                          description: MaxObjects represents the quota in objects
                          format: int64
                          type: integer
                        maxSize:
                          description: MaxSize represents the quota in bytes as a string
                          pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE]i|[kMGTPE])?$
                          type: string
                      type: object
                    replicated:
                      description: The replication settings
                      properties:
                        hybridStorage:
                          description: HybridStorage represents hybrid storage tier settings
                          nullable: true
                          properties:
                            primaryDeviceClass:
                              description: PrimaryDeviceClass represents high performance tier (for example SSD or NVME) for Primary OSD
                              minLength: 1
                              type: string
                            secondaryDeviceClass:
                              description: SecondaryDeviceClass represents low performance tier (for example HDDs) for remaining OSDs
                              minLength: 1
                              type: string
                          required:
                            - primaryDeviceClass
                            - secondaryDeviceClass
                          type: object
                        replicasPerFailureDomain:
                          description: ReplicasPerFailureDomain the number of replica in the specified failure domain
                          minimum: 1
                          type: integer
                        requireSafeReplicaSize:
                          description: RequireSafeReplicaSize if false allows you to set replica 1
                          type: boolean
                        size:
                          description: Size - Number of copies per object in a replicated storage pool, including the object itself (required for replicated pool type)
                          minimum: 0
                          type: integer
                        subFailureDomain:
                          description: SubFailureDomain the name of the sub-failure domain
                          type: string
                        targetSizeRatio:
                          description: TargetSizeRatio gives a hint (%) to Ceph in terms of expected consumption of the total cluster capacity
                          minimum: 0
                          type: number
                      required:
                        - size
                      type: object
                    statusCheck:
                      description: The mirroring statusCheck
                      properties:
                        mirror:
                          description: HealthCheckSpec represents the health check of an object store bucket
                          nullable: true
                          properties:
                            disabled:
                              type: boolean
                            interval:
                              description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
                              type: string
                            timeout:
                              type: string
                          type: object
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                  type: object
                metadataServer:
                  description: The mds pod info
                  properties:
                    activeCount:
                      description: The number of metadata servers that are active. The remaining servers in the cluster will be in standby mode.
                      format: int32
                      maximum: 50
                      minimum: 1
                      type: integer
                    activeStandby:
                      description: |-
                        Whether each active MDS instance will have an active standby with a warm metadata cache for faster failover.
                        If false, standbys will still be available, but will not have a warm metadata cache.
                      type: boolean
                    annotations:
                      additionalProperties:
                        type: string
                      description: The annotations-related configuration to add/set on each Pod related object.
                      nullable: true
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    cacheMemoryLimitFactor:
                      description: |-
                        CacheMemoryLimitFactor is the factor applied to the memory limit to determine the MDS cache memory limit.
                        MDS cache memory limit should be set to 50-60% of RAM reserved for the MDS container.
                        MDS uses approximately 125% of the value of mds_cache_memory_limit in RAM.
                        This factor is applied when resources.limits.memory is set.
                      maximum: 1
                      minimum: 0
                      type: number
                    cacheMemoryRequestFactor:
                      description: |-
                        CacheMemoryRequestFactor is the factor applied to the memory request to determine the MDS cache memory limit.
                        This factor is applied when resources.requests.memory is set and resources.limits.memory is not set.
                      maximum: 1
                      minimum: 0
                      type: number
                    labels:
                      additionalProperties:
                        type: string
                      description: The labels-related configuration to add/set on each Pod related object.
                      nullable: true
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    livenessProbe:
                      description: ProbeSpec is a wrapper around Probe so it can be enabled or disabled for a Ceph daemon
                      properties:
                        disabled:
                          description: Disabled determines whether probe is disable or not
                          type: boolean
                        probe:
                          description: |-
                            Probe describes a health check to be performed against a container to determine whether it is
                            alive or ready to receive traffic.
                          properties:
                            exec:
                              description: Exec specifies a command to execute in the container.
                              properties:
                                command:
                                  description: |-
                                    Command is the command line to execute inside the container, the working directory for the
                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                    a shell, you need to explicitly call out to that shell.
                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              description: |-
                                Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                Defaults to 3. Minimum value is 1.
                              format: int32
                              type: integer
                            grpc:
                              description: GRPC specifies a GRPC HealthCheckRequest.
                              properties:
                                port:
                                  description: Port number of the gRPC service. Number must be in the range 1 to 65535.
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  description: |-
                                    Service is the name of the service to place in the gRPC HealthCheckRequest
                                    (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                    If this is not specified, the default behavior is defined by gRPC.
                                  type: string
                              required:
                                - port
                              type: object
                            httpGet:
                              description: HTTPGet specifies an HTTP GET request to perform.
                              properties:
                                host:
                                  description: |-
                                    Host name to connect to, defaults to the pod IP. You probably want to set
                                    "Host" in httpHeaders instead.
                                  type: string
                                httpHeaders:
                                  description: Custom headers to set in the request. HTTP allows repeated headers.
                                  items:
                                    description: HTTPHeader describes a custom header to be used in HTTP probes
                                    properties:
                                      name:
                                        description: |-
                                          The header field name.
                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                        type: string
                                      value:
                                        description: The header field value
                                        type: string
                                    required:
                                      - name
                                      - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  description: Path to access on the HTTP server.
                                  type: string
                                port:
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  description: |-
                                    Name or number of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  description: |-
                                    Scheme to use for connecting to the host.
                                    Defaults to HTTP.
                                  type: string
                              required:
                                - port
                              type: object
                            initialDelaySeconds:
                              description: |-
                                Number of seconds after the container has started before liveness probes are initiated.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                            periodSeconds:
                              description: |-
                                How often (in seconds) to perform the probe.
                                Default to 10 seconds. Minimum value is 1.
                              format: int32
                              type: integer
                            successThreshold:
                              description: |-
                                Minimum consecutive successes for the probe to be considered successful after having failed.
                                Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                              format: int32
                              type: integer
                            tcpSocket:
                              description: TCPSocket specifies a connection to a TCP port.
                              properties:
                                host:
                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'
                                  type: string
                                port:
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  description: |-
                                    Number or name of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                              required:
                                - port
                              type: object
                            terminationGracePeriodSeconds:
                              format: int64
                              type: integer
                            timeoutSeconds:
                              description: |-
                                Number of seconds after which the probe times out.
                                Defaults to 1 second. Minimum value is 1.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                          type: object
                      type: object
                    placement:
                      nullable: true
                      properties:
                        nodeAffinity:
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  preference:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchFields:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  weight:
                                    format: int32
                                    type: integer
                                required:
                                  - preference
                                  - weight
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            requiredDuringSchedulingIgnoredDuringExecution:
                              properties:
                                nodeSelectorTerms:
                                  items:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchFields:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  type: array
                                  x-kubernetes-list-type: atomic
                              required:
                                - nodeSelectorTerms
                              type: object
                              x-kubernetes-map-type: atomic
                          type: object
                        podAffinity:
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  podAffinityTerm:
                                    properties:
                                      labelSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                                - key
                                                - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      matchLabelKeys:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      mismatchLabelKeys:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      namespaceSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                                - key
                                                - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      namespaces:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      topologyKey:
                                        type: string
                                    required:
                                      - topologyKey
                                    type: object
                                  weight:
                                    format: int32
                                    type: integer
                                required:
                                  - podAffinityTerm
                                  - weight
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            requiredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    type: string
                                required:
                                  - topologyKey
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                          type: object
                        podAntiAffinity:
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  podAffinityTerm:
                                    properties:
                                      labelSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                                - key
                                                - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      matchLabelKeys:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      mismatchLabelKeys:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      namespaceSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                                - key
                                                - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      namespaces:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      topologyKey:
                                        type: string
                                    required:
                                      - topologyKey
                                    type: object
                                  weight:
                                    format: int32
                                    type: integer
                                required:
                                  - podAffinityTerm
                                  - weight
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            requiredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    type: string
                                required:
                                  - topologyKey
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                          type: object
                        tolerations:
                          items:
                            properties:
                              effect:
                                type: string
                              key:
                                type: string
                              operator:
                                type: string
                              tolerationSeconds:
                                format: int64
                                type: integer
                              value:
                                type: string
                            type: object
                          type: array
                        topologySpreadConstraints:
                          items:
                            properties:
                              labelSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              matchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              maxSkew:
                                format: int32
                                type: integer
                              minDomains:
                                format: int32
                                type: integer
                              nodeAffinityPolicy:
                                type: string
                              nodeTaintsPolicy:
                                type: string
                              topologyKey:
                                type: string
                              whenUnsatisfiable:
                                type: string
                            required:
                              - maxSkew
                              - topologyKey
                              - whenUnsatisfiable
                            type: object
                          type: array
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    priorityClassName:
                      description: PriorityClassName sets priority classes on components
                      type: string
                    resources:
                      description: The resource requirements for the mds pods
                      nullable: true
                      properties:
                        claims:
                          description: |-
                            Claims lists the names of resources, defined in spec.resourceClaims,
                            that are used by this container.

                            This field depends on the
                            DynamicResourceAllocation feature gate.

                            This field is immutable. It can only be set for containers.
                          items:
                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                            properties:
                              name:
                                description: |-
                                  Name must match the name of one entry in pod.spec.resourceClaims of
                                  the Pod where this field is used. It makes that resource available
                                  inside a container.
                                type: string
                              request:
                                description: |-
                                  Request is the name chosen for a request in the referenced claim.
                                  If empty, everything from the claim is made available, otherwise
                                  only the result of this request.
                                type: string
                            required:
                              - name
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                            - name
                          x-kubernetes-list-type: map
                        limits:
                          additionalProperties:
                            anyOf:
                              - type: integer
                              - type: string
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          description: |-
                            Limits describes the maximum amount of compute resources allowed.
                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                          type: object
                        requests:
                          additionalProperties:
                            anyOf:
                              - type: integer
                              - type: string
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          description: |-
                            Requests describes the minimum amount of compute resources required.
                            If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                            otherwise to an implementation-defined value. Requests cannot exceed Limits.
                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                          type: object
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    startupProbe:
                      description: ProbeSpec is a wrapper around Probe so it can be enabled or disabled for a Ceph daemon
                      properties:
                        disabled:
                          description: Disabled determines whether probe is disable or not
                          type: boolean
                        probe:
                          description: |-
                            Probe describes a health check to be performed against a container to determine whether it is
                            alive or ready to receive traffic.
                          properties:
                            exec:
                              description: Exec specifies a command to execute in the container.
                              properties:
                                command:
                                  description: |-
                                    Command is the command line to execute inside the container, the working directory for the
                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                    a shell, you need to explicitly call out to that shell.
                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              description: |-
                                Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                Defaults to 3. Minimum value is 1.
                              format: int32
                              type: integer
                            grpc:
                              description: GRPC specifies a GRPC HealthCheckRequest.
                              properties:
                                port:
                                  description: Port number of the gRPC service. Number must be in the range 1 to 65535.
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  description: |-
                                    Service is the name of the service to place in the gRPC HealthCheckRequest
                                    (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                    If this is not specified, the default behavior is defined by gRPC.
                                  type: string
                              required:
                                - port
                              type: object
                            httpGet:
                              description: HTTPGet specifies an HTTP GET request to perform.
                              properties:
                                host:
                                  description: |-
                                    Host name to connect to, defaults to the pod IP. You probably want to set
                                    "Host" in httpHeaders instead.
                                  type: string
                                httpHeaders:
                                  description: Custom headers to set in the request. HTTP allows repeated headers.
                                  items:
                                    description: HTTPHeader describes a custom header to be used in HTTP probes
                                    properties:
                                      name:
                                        description: |-
                                          The header field name.
                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                        type: string
                                      value:
                                        description: The header field value
                                        type: string
                                    required:
                                      - name
                                      - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  description: Path to access on the HTTP server.
                                  type: string
                                port:
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  description: |-
                                    Name or number of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  description: |-
                                    Scheme to use for connecting to the host.
                                    Defaults to HTTP.
                                  type: string
                              required:
                                - port
                              type: object
                            initialDelaySeconds:
                              description: |-
                                Number of seconds after the container has started before liveness probes are initiated.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                            periodSeconds:
                              description: |-
                                How often (in seconds) to perform the probe.
                                Default to 10 seconds. Minimum value is 1.
                              format: int32
                              type: integer
                            successThreshold:
                              description: |-
                                Minimum consecutive successes for the probe to be considered successful after having failed.
                                Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                              format: int32
                              type: integer
                            tcpSocket:
                              description: TCPSocket specifies a connection to a TCP port.
                              properties:
                                host:
                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'
                                  type: string
                                port:
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  description: |-
                                    Number or name of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                              required:
                                - port
                              type: object
                            terminationGracePeriodSeconds:
                              format: int64
                              type: integer
                            timeoutSeconds:
                              description: |-
                                Number of seconds after which the probe times out.
                                Defaults to 1 second. Minimum value is 1.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                          type: object
                      type: object
                  required:
                    - activeCount
                  type: object
                mirroring:
                  description: The mirroring settings
                  nullable: true
                  properties:
                    enabled:
                      description: Enabled whether this filesystem is mirrored or not
                      type: boolean
                    peers:
                      description: Peers represents the peers spec
                      nullable: true
                      properties:
                        secretNames:
                          description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers
                          items:
                            type: string
                          type: array
                      type: object
                    snapshotRetention:
                      description: |-
                        Retention is the retention policy for a snapshot schedule
                        One path has exactly one retention policy.
                        A policy can however contain multiple count-time period pairs in order to specify complex retention policies
                      items:
                        description: SnapshotScheduleRetentionSpec is a retention policy
                        properties:
                          duration:
                            description: Duration represents the retention duration for a snapshot
                            type: string
                          path:
                            description: Path is the path to snapshot
                            type: string
                        type: object
                      type: array
                    snapshotSchedules:
                      description: SnapshotSchedules is the scheduling of snapshot for mirrored filesystems
                      items:
                        description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool
                        properties:
                          interval:
                            description: Interval represent the periodicity of the snapshot.
                            type: string
                          path:
                            description: Path is the path to snapshot, only valid for CephFS
                            type: string
                          startTime:
                            description: StartTime indicates when to start the snapshot
                            type: string
                        type: object
                      type: array
                  type: object
                preserveFilesystemOnDelete:
                  description: Preserve the fs in the cluster on CephFilesystem CR deletion. Setting this to true automatically implies PreservePoolsOnDelete is true.
                  type: boolean
                preservePoolNames:
                  description: Preserve pool names as specified
                  type: boolean
                preservePoolsOnDelete:
                  description: Preserve pools on filesystem deletion
                  type: boolean
                statusCheck:
                  description: The mirroring statusCheck
                  properties:
                    mirror:
                      description: HealthCheckSpec represents the health check of an object store bucket
                      nullable: true
                      properties:
                        disabled:
                          type: boolean
                        interval:
                          description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
                          type: string
                        timeout:
                          type: string
                      type: object
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
              required:
                - dataPools
                - metadataPool
                - metadataServer
              type: object
            status:
              description: CephFilesystemStatus represents the status of a Ceph Filesystem
              properties:
                cephx:
                  properties:
                    daemon:
                      description: Daemon shows the CephX key status for local Ceph daemons associated with this resources.
                      properties:
                        keyCephVersion:
                          description: |-
                            KeyCephVersion reports the Ceph version that created the current generation's keys. This is
                            same string format as reported by `CephCluster.status.version.version` to allow them to be
                            compared. E.g., `20.2.0-0`.
                            For all newly-created resources, this field set to the version of Ceph that created the key.
                            The special value "Uninitialized" indicates that keys are being created for the first time.
                            An empty string indicates that the version is unknown, as expected in brownfield deployments.
                          type: string
                        keyGeneration:
                          description: |-
                            KeyGeneration represents the CephX key generation for the last successful reconcile.
                            For all newly-created resources, this field is set to `1`.
                            When keys are rotated due to any rotation policy, the generation is incremented or updated to
                            the configured policy generation.
                            Generation `0` indicates that keys existed prior to the implementation of key tracking.
                          format: int32
                          type: integer
                      type: object
                  type: object
                conditions:
                  items:
                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.
                    properties:
                      lastHeartbeatTime:
                        format: date-time
                        type: string
                      lastTransitionTime:
                        format: date-time
                        type: string
                      message:
                        type: string
                      reason:
                        description: ConditionReason is a reason for a condition
                        type: string
                      status:
                        type: string
                      type:
                        description: ConditionType represent a resource's status
                        type: string
                    type: object
                  type: array
                info:
                  additionalProperties:
                    type: string
                  description: Use only info and put mirroringStatus in it?
                  nullable: true
                  type: object
                mirroringStatus:
                  description: MirroringStatus is the filesystem mirroring status
                  properties:
                    daemonsStatus:
                      description: PoolMirroringStatus is the mirroring status of a filesystem
                      items:
                        description: FilesystemMirrorInfoSpec is the filesystem mirror status of a given filesystem
                        properties:
                          daemon_id:
                            description: DaemonID is the cephfs-mirror name
                            type: integer
                          filesystems:
                            description: Filesystems is the list of filesystems managed by a given cephfs-mirror daemon
                            items:
                              description: FilesystemsSpec is spec for the mirrored filesystem
                              properties:
                                directory_count:
                                  description: DirectoryCount is the number of directories in the filesystem
                                  type: integer
                                filesystem_id:
                                  description: FilesystemID is the filesystem identifier
                                  type: integer
                                name:
                                  description: Name is name of the filesystem
                                  type: string
                                peers:
                                  description: Peers represents the mirroring peers
                                  items:
                                    description: FilesystemMirrorInfoPeerSpec is the specification of a filesystem peer mirror
                                    properties:
                                      remote:
                                        description: Remote are the remote cluster information
                                        properties:
                                          client_name:
                                            description: ClientName is cephx name
                                            type: string
                                          cluster_name:
                                            description: ClusterName is the name of the cluster
                                            type: string
                                          fs_name:
                                            description: FsName is the filesystem name
                                            type: string
                                        type: object
                                      stats:
                                        description: Stats are the stat a peer mirror
                                        properties:
                                          failure_count:
                                            description: FailureCount is the number of mirroring failure
                                            type: integer
                                          recovery_count:
                                            description: RecoveryCount is the number of recovery attempted after failures
                                            type: integer
                                        type: object
                                      uuid:
                                        description: UUID is the peer unique identifier
                                        type: string
                                    type: object
                                  type: array
                              type: object
                            type: array
                        type: object
                      nullable: true
                      type: array
                    details:
                      description: Details contains potential status errors
                      type: string
                    lastChanged:
                      description: LastChanged is the last time time the status last changed
                      type: string
                    lastChecked:
                      description: LastChecked is the last time time the status was checked
                      type: string
                  type: object
                observedGeneration:
                  description: ObservedGeneration is the latest generation observed by the controller.
                  format: int64
                  type: integer
                phase:
                  description: ConditionType represent a resource's status
                  type: string
                snapshotScheduleStatus:
                  description: FilesystemSnapshotScheduleStatusSpec is the status of the snapshot schedule
                  properties:
                    details:
                      description: Details contains potential status errors
                      type: string
                    lastChanged:
                      description: LastChanged is the last time time the status last changed
                      type: string
                    lastChecked:
                      description: LastChecked is the last time time the status was checked
                      type: string
                    snapshotSchedules:
                      description: SnapshotSchedules is the list of snapshots scheduled
                      items:
                        description: FilesystemSnapshotSchedulesSpec is the list of snapshot scheduled for images in a pool
                        properties:
                          fs:
                            description: Fs is the name of the Ceph Filesystem
                            type: string
                          path:
                            description: Path is the path on the filesystem
                            type: string
                          rel_path:
                            type: string
                          retention:
                            description: FilesystemSnapshotScheduleStatusRetention is the retention specification for a filesystem snapshot schedule
                            properties:
                              active:
                                description: Active is whether the scheduled is active or not
                                type: boolean
                              created:
                                description: Created is when the snapshot schedule was created
                                type: string
                              created_count:
                                description: CreatedCount is total amount of snapshots
                                type: integer
                              first:
                                description: First is when the first snapshot schedule was taken
                                type: string
                              last:
                                description: Last is when the last snapshot schedule was taken
                                type: string
                              last_pruned:
                                description: LastPruned is when the last snapshot schedule was pruned
                                type: string
                              pruned_count:
                                description: PrunedCount is total amount of pruned snapshots
                                type: integer
                              start:
                                description: Start is when the snapshot schedule starts
                                type: string
                            type: object
                          schedule:
                            type: string
                          subvol:
                            description: Subvol is the name of the sub volume
                            type: string
                        type: object
                      nullable: true
                      type: array
                  type: object
              type: object
              x-kubernetes-preserve-unknown-fields: true
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
    helm.sh/resource-policy: keep
  name: cephfilesystemsubvolumegroups.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephFilesystemSubVolumeGroup
    listKind: CephFilesystemSubVolumeGroupList
    plural: cephfilesystemsubvolumegroups
    shortNames:
      - cephfssvg
      - cephsvg
    singular: cephfilesystemsubvolumegroup
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .status.phase
          name: Phase
          type: string
        - description: Name of the CephFileSystem
          jsonPath: .spec.filesystemName
          name: Filesystem
          type: string
        - jsonPath: .spec.quota
          name: Quota
          type: string
        - jsonPath: .status.info.pinning
          name: Pinning
          priority: 1
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v1
      schema:
        openAPIV3Schema:
          description: CephFilesystemSubVolumeGroup represents a Ceph Filesystem SubVolumeGroup
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: Spec represents the specification of a Ceph Filesystem SubVolumeGroup
              properties:
                clusterID:
                  description: |-
                    ClusterID to be used for this subvolume group in the CSI configuration.
                    It must be unique among all Ceph clusters managed by Rook.
                    If not specified, the clusterID will be generated and can be found in the CR status.
                  maxLength: 36
                  minLength: 1
                  pattern: ^[a-zA-Z0-9_-]+$
                  type: string
                  x-kubernetes-validations:
                    - message: ClusterID is immutable
                      rule: self == oldSelf
                csiMetadataRadosNamespace:
                  description: |-
                    The RADOS namespace ceph-csi uses for additional metadata it stores in the metadata pool of the CephFS.
                    If not specified the default of the ceph-csi driver is used.
                  maxLength: 1024
                  minLength: 1
                  type: string
                  x-kubernetes-validations:
                    - message: CSIMetadataRadosNamespace is immutable
                      rule: self == oldSelf
                dataPoolName:
                  description: The data pool name for the Ceph Filesystem subvolume group layout, if the default CephFS pool is not desired.
                  type: string
                filesystemName:
                  description: |-
                    FilesystemName is the name of Ceph Filesystem SubVolumeGroup volume name. Typically it's the name of
                    the CephFilesystem CR. If not coming from the CephFilesystem CR, it can be retrieved from the
                    list of Ceph Filesystem volumes with `ceph fs volume ls`. To learn more about Ceph Filesystem
                    abstractions see https://docs.ceph.com/en/latest/cephfs/fs-volumes/#fs-volumes-and-subvolumes
                  type: string
                  x-kubernetes-validations:
                    - message: filesystemName is immutable
                      rule: self == oldSelf
                name:
                  description: The name of the subvolume group. If not set, the default is the name of the subvolumeGroup CR.
                  type: string
                  x-kubernetes-validations:
                    - message: name is immutable
                      rule: self == oldSelf
                pinning:
                  description: |-
                    Pinning configuration of CephFilesystemSubVolumeGroup,
                    reference https://docs.ceph.com/en/latest/cephfs/fs-volumes/#pinning-subvolumes-and-subvolume-groups
                    only one out of (export, distributed, random) can be set at a time
                  properties:
                    distributed:
                      maximum: 1
                      minimum: 0
                      nullable: true
                      type: integer
                    export:
                      maximum: 256
                      minimum: -1
                      nullable: true
                      type: integer
                    random:
                      maximum: 1
                      minimum: 0
                      nullable: true
                      type: number
                  type: object
                  x-kubernetes-validations:
                    - message: only one pinning type should be set
                      rule: (has(self.export) && !has(self.distributed) && !has(self.random)) || (!has(self.export) && has(self.distributed) && !has(self.random)) || (!has(self.export) && !has(self.distributed) && has(self.random)) || (!has(self.export) && !has(self.distributed) && !has(self.random))
                quota:
                  anyOf:
                    - type: integer
                    - type: string
                  description: Quota size of the Ceph Filesystem subvolume group.
                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                  x-kubernetes-int-or-string: true
              required:
                - filesystemName
              type: object
            status:
              description: Status represents the status of a CephFilesystem SubvolumeGroup
              properties:
                info:
                  additionalProperties:
                    type: string
                  nullable: true
                  type: object
                observedGeneration:
                  description: ObservedGeneration is the latest generation observed by the controller.
                  format: int64
                  type: integer
                phase:
                  description: ConditionType represent a resource's status
                  type: string
              type: object
              x-kubernetes-preserve-unknown-fields: true
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
    helm.sh/resource-policy: keep
  name: cephnfses.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephNFS
    listKind: CephNFSList
    plural: cephnfses
    shortNames:
      - nfs
    singular: cephnfs
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .status.phase
          name: Phase
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v1
      schema:
        openAPIV3Schema:
          description: CephNFS represents a Ceph NFS
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: NFSGaneshaSpec represents the spec of an nfs ganesha server
              properties:
                rados:
                  description: RADOS is the Ganesha RADOS specification
                  nullable: true
                  properties:
                    namespace:
                      description: |-
                        The namespace inside the Ceph pool (set by 'pool') where shared NFS-Ganesha config is stored.
                        This setting is deprecated as it is internally set to the name of the CephNFS.
                      type: string
                    pool:
                      description: |-
                        The Ceph pool used store the shared configuration for NFS-Ganesha daemons.
                        This setting is deprecated, as it is internally required to be ".nfs".
                      type: string
                  type: object
                security:
                  description: Security allows specifying security configurations for the NFS cluster
                  nullable: true
                  properties:
                    kerberos:
                      description: Kerberos configures NFS-Ganesha to secure NFS client connections with Kerberos.
                      nullable: true
                      properties:
                        configFiles:
                          description: |-
                            ConfigFiles defines where the Kerberos configuration should be sourced from. Config files
                            will be placed into the `/etc/krb5.conf.rook/` directory.

                            If this is left empty, Rook will not add any files. This allows you to manage the files
                            yourself however you wish. For example, you may build them into your custom Ceph container
                            image or use the Vault agent injector to securely add the files via annotations on the
                            CephNFS spec (passed to the NFS server pods).

                            Rook configures Kerberos to log to stderr. We suggest removing logging sections from config
                            files to avoid consuming unnecessary disk space from logging to files.
                          properties:
                            volumeSource:
                              properties:
                                configMap:
                                  properties:
                                    defaultMode:
                                      format: int32
                                      type: integer
                                    items:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          mode:
                                            format: int32
                                            type: integer
                                          path:
                                            type: string
                                        required:
                                          - key
                                          - path
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  type: object
                                  x-kubernetes-map-type: atomic
                                emptyDir:
                                  properties:
                                    medium:
                                      type: string
                                    sizeLimit:
                                      anyOf:
                                        - type: integer
                                        - type: string
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                  type: object
                                hostPath:
                                  properties:
                                    path:
                                      type: string
                                    type:
                                      type: string
                                  required:
                                    - path
                                  type: object
                                persistentVolumeClaim:
                                  properties:
                                    claimName:
                                      type: string
                                    readOnly:
                                      type: boolean
                                  required:
                                    - claimName
                                  type: object
                                projected:
                                  properties:
                                    defaultMode:
                                      format: int32
                                      type: integer
                                    sources:
                                      items:
                                        properties:
                                          clusterTrustBundle:
                                            properties:
                                              labelSelector:
                                                properties:
                                                  matchExpressions:
                                                    items:
                                                      properties:
                                                        key:
                                                          type: string
                                                        operator:
                                                          type: string
                                                        values:
                                                          items:
                                                            type: string
                                                          type: array
                                                          x-kubernetes-list-type: atomic
                                                      required:
                                                        - key
                                                        - operator
                                                      type: object
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                  matchLabels:
                                                    additionalProperties:
                                                      type: string
                                                    type: object
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              name:
                                                type: string
                                              optional:
                                                type: boolean
                                              path:
                                                type: string
                                              signerName:
                                                type: string
                                            required:
                                              - path
                                            type: object
                                          configMap:
                                            properties:
                                              items:
                                                items:
                                                  properties:
                                                    key:
                                                      type: string
                                                    mode:
                                                      format: int32
                                                      type: integer
                                                    path:
                                                      type: string
                                                  required:
                                                    - key
                                                    - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          downwardAPI:
                                            properties:
                                              items:
                                                items:
                                                  properties:
                                                    fieldRef:
                                                      properties:
                                                        apiVersion:
                                                          type: string
                                                        fieldPath:
                                                          type: string
                                                      required:
                                                        - fieldPath
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                    mode:
                                                      format: int32
                                                      type: integer
                                                    path:
                                                      type: string
                                                    resourceFieldRef:
                                                      properties:
                                                        containerName:
                                                          type: string
                                                        divisor:
                                                          anyOf:
                                                            - type: integer
                                                            - type: string
                                                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                          x-kubernetes-int-or-string: true
                                                        resource:
                                                          type: string
                                                      required:
                                                        - resource
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                  required:
                                                    - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            type: object
                                          podCertificate:
                                            properties:
                                              certificateChainPath:
                                                type: string
                                              credentialBundlePath:
                                                type: string
                                              keyPath:
                                                type: string
                                              keyType:
                                                type: string
                                              maxExpirationSeconds:
                                                format: int32
                                                type: integer
                                              signerName:
                                                type: string
                                              userAnnotations:
                                                additionalProperties:
                                                  type: string
                                                type: object
                                            required:
                                              - keyType
                                              - signerName
                                            type: object
                                          secret:
                                            properties:
                                              items:
                                                items:
                                                  properties:
                                                    key:
                                                      type: string
                                                    mode:
                                                      format: int32
                                                      type: integer
                                                    path:
                                                      type: string
                                                  required:
                                                    - key
                                                    - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          serviceAccountToken:
                                            properties:
                                              audience:
                                                type: string
                                              expirationSeconds:
                                                format: int64
                                                type: integer
                                              path:
                                                type: string
                                            required:
                                              - path
                                            type: object
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                secret:
                                  properties:
                                    defaultMode:
                                      format: int32
                                      type: integer
                                    items:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          mode:
                                            format: int32
                                            type: integer
                                          path:
                                            type: string
                                        required:
                                          - key
                                          - path
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    optional:
                                      type: boolean
                                    secretName:
                                      type: string
                                  type: object
                              type: object
                          type: object
                        domainName:
                          description: DomainName should be set to the Kerberos Realm.
                          type: string
                        keytabFile:
                          description: |-
                            KeytabFile defines where the Kerberos keytab should be sourced from. The keytab file will be
                            placed into `/etc/krb5.keytab`. If this is left empty, Rook will not add the file.
                            This allows you to manage the `krb5.keytab` file yourself however you wish. For example, you
                            may build it into your custom Ceph container image or use the Vault agent injector to
                            securely add the file via annotations on the CephNFS spec (passed to the NFS server pods).
                          properties:
                            volumeSource:
                              properties:
                                configMap:
                                  properties:
                                    defaultMode:
                                      format: int32
                                      type: integer
                                    items:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          mode:
                                            format: int32
                                            type: integer
                                          path:
                                            type: string
                                        required:
                                          - key
                                          - path
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  type: object
                                  x-kubernetes-map-type: atomic
                                emptyDir:
                                  properties:
                                    medium:
                                      type: string
                                    sizeLimit:
                                      anyOf:
                                        - type: integer
                                        - type: string
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                  type: object
                                hostPath:
                                  properties:
                                    path:
                                      type: string
                                    type:
                                      type: string
                                  required:
                                    - path
                                  type: object
                                persistentVolumeClaim:
                                  properties:
                                    claimName:
                                      type: string
                                    readOnly:
                                      type: boolean
                                  required:
                                    - claimName
                                  type: object
                                projected:
                                  properties:
                                    defaultMode:
                                      format: int32
                                      type: integer
                                    sources:
                                      items:
                                        properties:
                                          clusterTrustBundle:
                                            properties:
                                              labelSelector:
                                                properties:
                                                  matchExpressions:
                                                    items:
                                                      properties:
                                                        key:
                                                          type: string
                                                        operator:
                                                          type: string
                                                        values:
                                                          items:
                                                            type: string
                                                          type: array
                                                          x-kubernetes-list-type: atomic
                                                      required:
                                                        - key
                                                        - operator
                                                      type: object
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                  matchLabels:
                                                    additionalProperties:
                                                      type: string
                                                    type: object
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              name:
                                                type: string
                                              optional:
                                                type: boolean
                                              path:
                                                type: string
                                              signerName:
                                                type: string
                                            required:
                                              - path
                                            type: object
                                          configMap:
                                            properties:
                                              items:
                                                items:
                                                  properties:
                                                    key:
                                                      type: string
                                                    mode:
                                                      format: int32
                                                      type: integer
                                                    path:
                                                      type: string
                                                  required:
                                                    - key
                                                    - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          downwardAPI:
                                            properties:
                                              items:
                                                items:
                                                  properties:
                                                    fieldRef:
                                                      properties:
                                                        apiVersion:
                                                          type: string
                                                        fieldPath:
                                                          type: string
                                                      required:
                                                        - fieldPath
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                    mode:
                                                      format: int32
                                                      type: integer
                                                    path:
                                                      type: string
                                                    resourceFieldRef:
                                                      properties:
                                                        containerName:
                                                          type: string
                                                        divisor:
                                                          anyOf:
                                                            - type: integer
                                                            - type: string
                                                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                          x-kubernetes-int-or-string: true
                                                        resource:
                                                          type: string
                                                      required:
                                                        - resource
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                  required:
                                                    - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            type: object
                                          podCertificate:
                                            properties:
                                              certificateChainPath:
                                                type: string
                                              credentialBundlePath:
                                                type: string
                                              keyPath:
                                                type: string
                                              keyType:
                                                type: string
                                              maxExpirationSeconds:
                                                format: int32
                                                type: integer
                                              signerName:
                                                type: string
                                              userAnnotations:
                                                additionalProperties:
                                                  type: string
                                                type: object
                                            required:
                                              - keyType
                                              - signerName
                                            type: object
                                          secret:
                                            properties:
                                              items:
                                                items:
                                                  properties:
                                                    key:
                                                      type: string
                                                    mode:
                                                      format: int32
                                                      type: integer
                                                    path:
                                                      type: string
                                                  required:
                                                    - key
                                                    - path
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          serviceAccountToken:
                                            properties:
                                              audience:
                                                type: string
                                              expirationSeconds:
                                                format: int64
                                                type: integer
                                              path:
                                                type: string
                                            required:
                                              - path
                                            type: object
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                secret:
                                  properties:
                                    defaultMode:
                                      format: int32
                                      type: integer
                                    items:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          mode:
                                            format: int32
                                            type: integer
                                          path:
                                            type: string
                                        required:
                                          - key
                                          - path
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    optional:
                                      type: boolean
                                    secretName:
                                      type: string
                                  type: object
                              type: object
                          type: object
                        principalName:
                          default: nfs
                          description: |-
                            PrincipalName corresponds directly to NFS-Ganesha's NFS_KRB5:PrincipalName config. In
                            practice, this is the service prefix of the principal name. The default is "nfs".
                            This value is combined with (a) the namespace and name of the CephNFS (with a hyphen between)
                            and (b) the Realm configured in the user-provided krb5.conf to determine the full principal
                            name: <principalName>/<namespace>-<name>@<realm>. e.g., nfs/rook-ceph-my-nfs@example.net.
                            See https://github.com/nfs-ganesha/nfs-ganesha/wiki/RPCSEC_GSS for more detail.
                          type: string
                      type: object
                    sssd:
                      description: |-
                        SSSD enables integration with System Security Services Daemon (SSSD). SSSD can be used to
                        provide user ID mapping from a number of sources. See https://sssd.io for more information
                        about the SSSD project.
                      nullable: true
                      properties:
                        sidecar:
                          description: Sidecar tells Rook to run SSSD in a sidecar alongside the NFS-Ganesha server in each NFS pod.
                          properties:
                            additionalFiles:
                              description: |-
                                AdditionalFiles defines any number of additional files that should be mounted into the SSSD
                                sidecar with a directory root of `/etc/sssd/rook-additional/`.
                                These files may be referenced by the sssd.conf config file.
                              items:
                                description: |-
                                  AdditionalVolumeMount represents the source from where additional files in pod containers
                                  should come from and what subdirectory they are made available in.
                                properties:
                                  subPath:
                                    description: |-
                                      SubPath defines the sub-path (subdirectory) of the directory root where the volumeSource will
                                      be mounted. All files/keys in the volume source's volume will be mounted to the subdirectory.
                                      This is not the same as the Kubernetes `subPath` volume mount option.
                                      Each subPath definition must be unique and must not contain ':'.
                                    minLength: 1
                                    pattern: ^[^:]+$
                                    type: string
                                  volumeSource:
                                    properties:
                                      configMap:
                                        properties:
                                          defaultMode:
                                            format: int32
                                            type: integer
                                          items:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                mode:
                                                  format: int32
                                                  type: integer
                                                path:
                                                  type: string
                                              required:
                                                - key
                                                - path
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          name:
                                            default: ""
                                            type: string
                                          optional:
                                            type: boolean
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      emptyDir:
                                        properties:
                                          medium:
                                            type: string
                                          sizeLimit:
                                            anyOf:
                                              - type: integer
                                              - type: string
                                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                            x-kubernetes-int-or-string: true
                                        type: object
                                      hostPath:
                                        properties:
                                          path:
                                            type: string
                                          type:
                                            type: string
                                        required:
                                          - path
                                        type: object
                                      persistentVolumeClaim:
                                        properties:
                                          claimName:
                                            type: string
                                          readOnly:
                                            type: boolean
                                        required:
                                          - claimName
                                        type: object
                                      projected:
                                        properties:
                                          defaultMode:
                                            format: int32
                                            type: integer
                                          sources:
                                            items:
                                              properties:
                                                clusterTrustBundle:
                                                  properties:
                                                    labelSelector:
                                                      properties:
                                                        matchExpressions:
                                                          items:
                                                            properties:
                                                              key:
                                                                type: string
                                                              operator:
                                                                type: string
                                                              values:
                                                                items:
                                                                  type: string
                                                                type: array
                                                                x-kubernetes-list-type: atomic
                                                            required:
                                                              - key
                                                              - operator
                                                            type: object
                                                          type: array
                                                          x-kubernetes-list-type: atomic
                                                        matchLabels:
                                                          additionalProperties:
                                                            type: string
                                                          type: object
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                    name:
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                    path:
                                                      type: string
                                                    signerName:
                                                      type: string
                                                  required:
                                                    - path
                                                  type: object
                                                configMap:
                                                  properties:
                                                    items:
                                                      items:
                                                        properties:
                                                          key:
                                                            type: string
                                                          mode:
                                                            format: int32
                                                            type: integer
                                                          path:
                                                            type: string
                                                        required:
                                                          - key
                                                          - path
                                                        type: object
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                downwardAPI:
                                                  properties:
                                                    items:
                                                      items:
                                                        properties:
                                                          fieldRef:
                                                            properties:
                                                              apiVersion:
                                                                type: string
                                                              fieldPath:
                                                                type: string
                                                            required:
                                                              - fieldPath
                                                            type: object
                                                            x-kubernetes-map-type: atomic
                                                          mode:
                                                            format: int32
                                                            type: integer
                                                          path:
                                                            type: string
                                                          resourceFieldRef:
                                                            properties:
                                                              containerName:
                                                                type: string
                                                              divisor:
                                                                anyOf:
                                                                  - type: integer
                                                                  - type: string
                                                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                                x-kubernetes-int-or-string: true
                                                              resource:
                                                                type: string
                                                            required:
                                                              - resource
                                                            type: object
                                                            x-kubernetes-map-type: atomic
                                                        required:
                                                          - path
                                                        type: object
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  type: object
                                                podCertificate:
                                                  properties:
                                                    certificateChainPath:
                                                      type: string
                                                    credentialBundlePath:
                                                      type: string
                                                    keyPath:
                                                      type: string
                                                    keyType:
                                                      type: string
                                                    maxExpirationSeconds:
                                                      format: int32
                                                      type: integer
                                                    signerName:
                                                      type: string
                                                    userAnnotations:
                                                      additionalProperties:
                                                        type: string
                                                      type: object
                                                  required:
                                                    - keyType
                                                    - signerName
                                                  type: object
                                                secret:
                                                  properties:
                                                    items:
                                                      items:
                                                        properties:
                                                          key:
                                                            type: string
                                                          mode:
                                                            format: int32
                                                            type: integer
                                                          path:
                                                            type: string
                                                        required:
                                                          - key
                                                          - path
                                                        type: object
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                serviceAccountToken:
                                                  properties:
                                                    audience:
                                                      type: string
                                                    expirationSeconds:
                                                      format: int64
                                                      type: integer
                                                    path:
                                                      type: string
                                                  required:
                                                    - path
                                                  type: object
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        type: object
                                      secret:
                                        properties:
                                          defaultMode:
                                            format: int32
                                            type: integer
                                          items:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                mode:
                                                  format: int32
                                                  type: integer
                                                path:
                                                  type: string
                                              required:
                                                - key
                                                - path
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          optional:
                                            type: boolean
                                          secretName:
                                            type: string
                                        type: object
                                    type: object
                                required:
                                  - subPath
                                  - volumeSource
                                type: object
                              type: array
                            debugLevel:
                              description: |-
                                DebugLevel sets the debug level for SSSD. If unset or set to 0, Rook does nothing. Otherwise,
                                this may be a value between 1 and 10. See SSSD docs for more info:
                                https://sssd.io/troubleshooting/basics.html#sssd-debug-logs
                              maximum: 10
                              minimum: 0
                              type: integer
                            image:
                              description: Image defines the container image that should be used for the SSSD sidecar.
                              minLength: 1
                              type: string
                            resources:
                              description: Resources allow specifying resource requests/limits on the SSSD sidecar container.
                              properties:
                                claims:
                                  description: |-
                                    Claims lists the names of resources, defined in spec.resourceClaims,
                                    that are used by this container.

                                    This field depends on the
                                    DynamicResourceAllocation feature gate.

                                    This field is immutable. It can only be set for containers.
                                  items:
                                    description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                                    properties:
                                      name:
                                        description: |-
                                          Name must match the name of one entry in pod.spec.resourceClaims of
                                          the Pod where this field is used. It makes that resource available
                                          inside a container.
                                        type: string
                                      request:
                                        description: |-
                                          Request is the name chosen for a request in the referenced claim.
                                          If empty, everything from the claim is made available, otherwise
                                          only the result of this request.
                                        type: string
                                    required:
                                      - name
                                    type: object
                                  type: array
                                  x-kubernetes-list-map-keys:
                                    - name
                                  x-kubernetes-list-type: map
                                limits:
                                  additionalProperties:
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                    x-kubernetes-int-or-string: true
                                  description: |-
                                    Limits describes the maximum amount of compute resources allowed.
                                    More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                  type: object
                                requests:
                                  additionalProperties:
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                    x-kubernetes-int-or-string: true
                                  description: |-
                                    Requests describes the minimum amount of compute resources required.
                                    If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                    otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                    More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                  type: object
                              type: object
                            sssdConfigFile:
                              description: |-
                                SSSDConfigFile defines where the SSSD configuration should be sourced from. The config file
                                will be placed into `/etc/sssd/sssd.conf`. If this is left empty, Rook will not add the file.
                                This allows you to manage the `sssd.conf` file yourself however you wish. For example, you
                                may build it into your custom Ceph container image or use the Vault agent injector to
                                securely add the file via annotations on the CephNFS spec (passed to the NFS server pods).
                              properties:
                                volumeSource:
                                  properties:
                                    configMap:
                                      properties:
                                        defaultMode:
                                          format: int32
                                          type: integer
                                        items:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              mode:
                                                format: int32
                                                type: integer
                                              path:
                                                type: string
                                            required:
                                              - key
                                              - path
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        name:
                                          default: ""
                                          type: string
                                        optional:
                                          type: boolean
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    emptyDir:
                                      properties:
                                        medium:
                                          type: string
                                        sizeLimit:
                                          anyOf:
                                            - type: integer
                                            - type: string
                                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                          x-kubernetes-int-or-string: true
                                      type: object
                                    hostPath:
                                      properties:
                                        path:
                                          type: string
                                        type:
                                          type: string
                                      required:
                                        - path
                                      type: object
                                    persistentVolumeClaim:
                                      properties:
                                        claimName:
                                          type: string
                                        readOnly:
                                          type: boolean
                                      required:
                                        - claimName
                                      type: object
                                    projected:
                                      properties:
                                        defaultMode:
                                          format: int32
                                          type: integer
                                        sources:
                                          items:
                                            properties:
                                              clusterTrustBundle:
                                                properties:
                                                  labelSelector:
                                                    properties:
                                                      matchExpressions:
                                                        items:
                                                          properties:
                                                            key:
                                                              type: string
                                                            operator:
                                                              type: string
                                                            values:
                                                              items:
                                                                type: string
                                                              type: array
                                                              x-kubernetes-list-type: atomic
                                                          required:
                                                            - key
                                                            - operator
                                                          type: object
                                                        type: array
                                                        x-kubernetes-list-type: atomic
                                                      matchLabels:
                                                        additionalProperties:
                                                          type: string
                                                        type: object
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  name:
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                  path:
                                                    type: string
                                                  signerName:
                                                    type: string
                                                required:
                                                  - path
                                                type: object
                                              configMap:
                                                properties:
                                                  items:
                                                    items:
                                                      properties:
                                                        key:
                                                          type: string
                                                        mode:
                                                          format: int32
                                                          type: integer
                                                        path:
                                                          type: string
                                                      required:
                                                        - key
                                                        - path
                                                      type: object
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              downwardAPI:
                                                properties:
                                                  items:
                                                    items:
                                                      properties:
                                                        fieldRef:
                                                          properties:
                                                            apiVersion:
                                                              type: string
                                                            fieldPath:
                                                              type: string
                                                          required:
                                                            - fieldPath
                                                          type: object
                                                          x-kubernetes-map-type: atomic
                                                        mode:
                                                          format: int32
                                                          type: integer
                                                        path:
                                                          type: string
                                                        resourceFieldRef:
                                                          properties:
                                                            containerName:
                                                              type: string
                                                            divisor:
                                                              anyOf:
                                                                - type: integer
                                                                - type: string
                                                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                              x-kubernetes-int-or-string: true
                                                            resource:
                                                              type: string
                                                          required:
                                                            - resource
                                                          type: object
                                                          x-kubernetes-map-type: atomic
                                                      required:
                                                        - path
                                                      type: object
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                type: object
                                              podCertificate:
                                                properties:
                                                  certificateChainPath:
                                                    type: string
                                                  credentialBundlePath:
                                                    type: string
                                                  keyPath:
                                                    type: string
                                                  keyType:
                                                    type: string
                                                  maxExpirationSeconds:
                                                    format: int32
                                                    type: integer
                                                  signerName:
                                                    type: string
                                                  userAnnotations:
                                                    additionalProperties:
                                                      type: string
                                                    type: object
                                                required:
                                                  - keyType
                                                  - signerName
                                                type: object
                                              secret:
                                                properties:
                                                  items:
                                                    items:
                                                      properties:
                                                        key:
                                                          type: string
                                                        mode:
                                                          format: int32
                                                          type: integer
                                                        path:
                                                          type: string
                                                      required:
                                                        - key
                                                        - path
                                                      type: object
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              serviceAccountToken:
                                                properties:
                                                  audience:
                                                    type: string
                                                  expirationSeconds:
                                                    format: int64
                                                    type: integer
                                                  path:
                                                    type: string
                                                required:
                                                  - path
                                                type: object
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      type: object
                                    secret:
                                      properties:
                                        defaultMode:
                                          format: int32
                                          type: integer
                                        items:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              mode:
                                                format: int32
                                                type: integer
                                              path:
                                                type: string
                                            required:
                                              - key
                                              - path
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        optional:
                                          type: boolean
                                        secretName:
                                          type: string
                                      type: object
                                  type: object
                              type: object
                          required:
                            - image
                          type: object
                      type: object
                  type: object
                server:
                  description: Server is the Ganesha Server specification
                  properties:
                    active:
                      description: The number of active Ganesha servers
                      type: integer
                    annotations:
                      additionalProperties:
                        type: string
                      description: The annotations-related configuration to add/set on each Pod related object.
                      nullable: true
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    hostNetwork:
                      description: Whether host networking is enabled for the Ganesha server. If not set, the network settings from the cluster CR will be applied.
                      nullable: true
                      type: boolean
                    image:
                      description: |-
                        Image is the container image used to launch the Ceph NFS (Ganesha) daemon(s).
                        The image must include the NFS Ganesha binaries, such as are included with the official Ceph releases. E.g.: quay.io/ceph/ceph:<tag>
                        If not specified, the Ceph image defined in the CephCluster is used.
                        Overriding the CephCluster defined image is not normally necessary when using the official Ceph images.
                        The image must contain the NFS Ganesha and dbus packages.
                        If the SSSD sidecar is enabled, the image must also contain the sssd-client package.
                      maxLength: 1572864
                      minLength: 1
                      type: string
                    imagePullPolicy:
                      description: |-
                        ImagePullPolicy describes a policy for if/when to pull a container image
                        One of Always, Never, IfNotPresent.
                        This field only has effect if an image is specified.
                      enum:
                        - IfNotPresent
                        - Always
                        - Never
                        - ""
                      type: string
                    labels:
                      additionalProperties:
                        type: string
                      description: The labels-related configuration to add/set on each Pod related object.
                      nullable: true
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    livenessProbe:
                      description: |-
                        A liveness-probe to verify that Ganesha server has valid run-time state.
                        If LivenessProbe.Disabled is false and LivenessProbe.Probe is nil uses default probe.
                      properties:
                        disabled:
                          description: Disabled determines whether probe is disable or not
                          type: boolean
                        probe:
                          description: |-
                            Probe describes a health check to be performed against a container to determine whether it is
                            alive or ready to receive traffic.
                          properties:
                            exec:
                              description: Exec specifies a command to execute in the container.
                              properties:
                                command:
                                  description: |-
                                    Command is the command line to execute inside the container, the working directory for the
                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                    a shell, you need to explicitly call out to that shell.
                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              description: |-
                                Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                Defaults to 3. Minimum value is 1.
                              format: int32
                              type: integer
                            grpc:
                              description: GRPC specifies a GRPC HealthCheckRequest.
                              properties:
                                port:
                                  description: Port number of the gRPC service. Number must be in the range 1 to 65535.
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  description: |-
                                    Service is the name of the service to place in the gRPC HealthCheckRequest
                                    (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                    If this is not specified, the default behavior is defined by gRPC.
                                  type: string
                              required:
                                - port
                              type: object
                            httpGet:
                              description: HTTPGet specifies an HTTP GET request to perform.
                              properties:
                                host:
                                  description: |-
                                    Host name to connect to, defaults to the pod IP. You probably want to set
                                    "Host" in httpHeaders instead.
                                  type: string
                                httpHeaders:
                                  description: Custom headers to set in the request. HTTP allows repeated headers.
                                  items:
                                    description: HTTPHeader describes a custom header to be used in HTTP probes
                                    properties:
                                      name:
                                        description: |-
                                          The header field name.
                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                        type: string
                                      value:
                                        description: The header field value
                                        type: string
                                    required:
                                      - name
                                      - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  description: Path to access on the HTTP server.
                                  type: string
                                port:
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  description: |-
                                    Name or number of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  description: |-
                                    Scheme to use for connecting to the host.
                                    Defaults to HTTP.
                                  type: string
                              required:
                                - port
                              type: object
                            initialDelaySeconds:
                              description: |-
                                Number of seconds after the container has started before liveness probes are initiated.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                            periodSeconds:
                              description: |-
                                How often (in seconds) to perform the probe.
                                Default to 10 seconds. Minimum value is 1.
                              format: int32
                              type: integer
                            successThreshold:
                              description: |-
                                Minimum consecutive successes for the probe to be considered successful after having failed.
                                Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                              format: int32
                              type: integer
                            tcpSocket:
                              description: TCPSocket specifies a connection to a TCP port.
                              properties:
                                host:
                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'
                                  type: string
                                port:
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  description: |-
                                    Number or name of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                              required:
                                - port
                              type: object
                            terminationGracePeriodSeconds:
                              format: int64
                              type: integer
                            timeoutSeconds:
                              description: |-
                                Number of seconds after which the probe times out.
                                Defaults to 1 second. Minimum value is 1.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                          type: object
                      type: object
                    logLevel:
                      description: LogLevel set logging level
                      type: string
                    placement:
                      nullable: true
                      properties:
                        nodeAffinity:
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  preference:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchFields:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  weight:
                                    format: int32
                                    type: integer
                                required:
                                  - preference
                                  - weight
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            requiredDuringSchedulingIgnoredDuringExecution:
                              properties:
                                nodeSelectorTerms:
                                  items:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchFields:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  type: array
                                  x-kubernetes-list-type: atomic
                              required:
                                - nodeSelectorTerms
                              type: object
                              x-kubernetes-map-type: atomic
                          type: object
                        podAffinity:
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  podAffinityTerm:
                                    properties:
                                      labelSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                                - key
                                                - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      matchLabelKeys:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      mismatchLabelKeys:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      namespaceSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                                - key
                                                - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      namespaces:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      topologyKey:
                                        type: string
                                    required:
                                      - topologyKey
                                    type: object
                                  weight:
                                    format: int32
                                    type: integer
                                required:
                                  - podAffinityTerm
                                  - weight
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            requiredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    type: string
                                required:
                                  - topologyKey
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                          type: object
                        podAntiAffinity:
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  podAffinityTerm:
                                    properties:
                                      labelSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                                - key
                                                - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      matchLabelKeys:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      mismatchLabelKeys:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      namespaceSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                                - key
                                                - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      namespaces:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      topologyKey:
                                        type: string
                                    required:
                                      - topologyKey
                                    type: object
                                  weight:
                                    format: int32
                                    type: integer
                                required:
                                  - podAffinityTerm
                                  - weight
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            requiredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    type: string
                                required:
                                  - topologyKey
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                          type: object
                        tolerations:
                          items:
                            properties:
                              effect:
                                type: string
                              key:
                                type: string
                              operator:
                                type: string
                              tolerationSeconds:
                                format: int64
                                type: integer
                              value:
                                type: string
                            type: object
                          type: array
                        topologySpreadConstraints:
                          items:
                            properties:
                              labelSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              matchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              maxSkew:
                                format: int32
                                type: integer
                              minDomains:
                                format: int32
                                type: integer
                              nodeAffinityPolicy:
                                type: string
                              nodeTaintsPolicy:
                                type: string
                              topologyKey:
                                type: string
                              whenUnsatisfiable:
                                type: string
                            required:
                              - maxSkew
                              - topologyKey
                              - whenUnsatisfiable
                            type: object
                          type: array
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    priorityClassName:
                      description: PriorityClassName sets the priority class on the pods
                      type: string
                    resources:
                      description: Resources set resource requests and limits
                      nullable: true
                      properties:
                        claims:
                          description: |-
                            Claims lists the names of resources, defined in spec.resourceClaims,
                            that are used by this container.

                            This field depends on the
                            DynamicResourceAllocation feature gate.

                            This field is immutable. It can only be set for containers.
                          items:
                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                            properties:
                              name:
                                description: |-
                                  Name must match the name of one entry in pod.spec.resourceClaims of
                                  the Pod where this field is used. It makes that resource available
                                  inside a container.
                                type: string
                              request:
                                description: |-
                                  Request is the name chosen for a request in the referenced claim.
                                  If empty, everything from the claim is made available, otherwise
                                  only the result of this request.
                                type: string
                            required:
                              - name
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                            - name
                          x-kubernetes-list-type: map
                        limits:
                          additionalProperties:
                            anyOf:
                              - type: integer
                              - type: string
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          description: |-
                            Limits describes the maximum amount of compute resources allowed.
                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                          type: object
                        requests:
                          additionalProperties:
                            anyOf:
                              - type: integer
                              - type: string
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          description: |-
                            Requests describes the minimum amount of compute resources required.
                            If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                            otherwise to an implementation-defined value. Requests cannot exceed Limits.
                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                          type: object
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                  required:
                    - active
                  type: object
              required:
                - server
              type: object
            status:
              description: NFSStatus represents the status of Ceph NFS
              properties:
                cephx:
                  properties:
                    daemon:
                      description: Daemon shows the CephX key status for local Ceph daemons associated with this resources.
                      properties:
                        keyCephVersion:
                          description: |-
                            KeyCephVersion reports the Ceph version that created the current generation's keys. This is
                            same string format as reported by `CephCluster.status.version.version` to allow them to be
                            compared. E.g., `20.2.0-0`.
                            For all newly-created resources, this field set to the version of Ceph that created the key.
                            The special value "Uninitialized" indicates that keys are being created for the first time.
                            An empty string indicates that the version is unknown, as expected in brownfield deployments.
                          type: string
                        keyGeneration:
                          description: |-
                            KeyGeneration represents the CephX key generation for the last successful reconcile.
                            For all newly-created resources, this field is set to `1`.
                            When keys are rotated due to any rotation policy, the generation is incremented or updated to
                            the configured policy generation.
                            Generation `0` indicates that keys existed prior to the implementation of key tracking.
                          format: int32
                          type: integer
                      type: object
                  type: object
                conditions:
                  items:
                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.
                    properties:
                      lastHeartbeatTime:
                        format: date-time
                        type: string
                      lastTransitionTime:
                        format: date-time
                        type: string
                      message:
                        type: string
                      reason:
                        description: ConditionReason is a reason for a condition
                        type: string
                      status:
                        type: string
                      type:
                        description: ConditionType represent a resource's status
                        type: string
                    type: object
                  type: array
                observedGeneration:
                  description: ObservedGeneration is the latest generation observed by the controller.
                  format: int64
                  type: integer
                phase:
                  type: string
              type: object
              x-kubernetes-preserve-unknown-fields: true
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
    helm.sh/resource-policy: keep
  name: cephnvmeofgateways.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephNVMeOFGateway
    listKind: CephNVMeOFGatewayList
    plural: cephnvmeofgateways
    shortNames:
      - nvmeof
    singular: cephnvmeofgateway
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .status.phase
          name: Phase
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v1
      schema:
        openAPIV3Schema:
          description: CephNVMeOFGateway represents a Ceph NVMe-oF Gateway
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: NVMeOFGatewaySpec represents the spec of an NVMe-oF gateway
              properties:
                annotations:
                  additionalProperties:
                    type: string
                  description: The annotations-related configuration to add/set on each Pod related object.
                  type: object
                configMapRef:
                  description: |-
                    ConfigMapRef is the name of the ConfigMap containing nvmeof.conf configuration
                    If not specified, a default configuration will be generated
                  minLength: 1
                  type: string
                group:
                  description: Group is the gateway group name for high availability (ANA group)
                  minLength: 1
                  type: string
                hostNetwork:
                  description: Whether host networking is enabled for the gateway. If not set, the network settings from the cluster CR will be applied.
                  type: boolean
                image:
                  description: |-
                    Image is the container image to use for the NVMe-oF gateway daemon.
                    For example, quay.io/ceph/nvmeof:1.5
                  minLength: 1
                  type: string
                instances:
                  description: The number of active gateway instances
                  minimum: 1
                  type: integer
                labels:
                  additionalProperties:
                    type: string
                  description: The labels-related configuration to add/set on each Pod related object.
                  type: object
                livenessProbe:
                  description: |-
                    A liveness-probe to verify that gateway has valid run-time state.
                    If LivenessProbe.Disabled is false and LivenessProbe.Probe is nil uses default probe.
                  properties:
                    disabled:
                      description: Disabled determines whether probe is disable or not
                      type: boolean
                    probe:
                      description: |-
                        Probe describes a health check to be performed against a container to determine whether it is
                        alive or ready to receive traffic.
                      properties:
                        exec:
                          description: Exec specifies a command to execute in the container.
                          properties:
                            command:
                              description: |-
                                Command is the command line to execute inside the container, the working directory for the
                                command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                a shell, you need to explicitly call out to that shell.
                                Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                          type: object
                        failureThreshold:
                          description: |-
                            Minimum consecutive failures for the probe to be considered failed after having succeeded.
                            Defaults to 3. Minimum value is 1.
                          format: int32
                          type: integer
                        grpc:
                          description: GRPC specifies a GRPC HealthCheckRequest.
                          properties:
                            port:
                              description: Port number of the gRPC service. Number must be in the range 1 to 65535.
                              format: int32
                              type: integer
                            service:
                              default: ""
                              description: |-
                                Service is the name of the service to place in the gRPC HealthCheckRequest
                                (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                If this is not specified, the default behavior is defined by gRPC.
                              type: string
                          required:
                            - port
                          type: object
                        httpGet:
                          description: HTTPGet specifies an HTTP GET request to perform.
                          properties:
                            host:
                              description: |-
                                Host name to connect to, defaults to the pod IP. You probably want to set
                                "Host" in httpHeaders instead.
                              type: string
                            httpHeaders:
                              description: Custom headers to set in the request. HTTP allows repeated headers.
                              items:
                                description: HTTPHeader describes a custom header to be used in HTTP probes
                                properties:
                                  name:
                                    description: |-
                                      The header field name.
                                      This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                    type: string
                                  value:
                                    description: The header field value
                                    type: string
                                required:
                                  - name
                                  - value
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            path:
                              description: Path to access on the HTTP server.
                              type: string
                            port:
                              anyOf:
                                - type: integer
                                - type: string
                              description: |-
                                Name or number of the port to access on the container.
                                Number must be in the range 1 to 65535.
                                Name must be an IANA_SVC_NAME.
                              x-kubernetes-int-or-string: true
                            scheme:
                              description: |-
                                Scheme to use for connecting to the host.
                                Defaults to HTTP.
                              type: string
                          required:
                            - port
                          type: object
                        initialDelaySeconds:
                          description: |-
                            Number of seconds after the container has started before liveness probes are initiated.
                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                          format: int32
                          type: integer
                        periodSeconds:
                          description: |-
                            How often (in seconds) to perform the probe.
                            Default to 10 seconds. Minimum value is 1.
                          format: int32
                          type: integer
                        successThreshold:
                          description: |-
                            Minimum consecutive successes for the probe to be considered successful after having failed.
                            Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                          format: int32
                          type: integer
                        tcpSocket:
                          description: TCPSocket specifies a connection to a TCP port.
                          properties:
                            host:
                              description: 'Optional: Host name to connect to, defaults to the pod IP.'
                              type: string
                            port:
                              anyOf:
                                - type: integer
                                - type: string
                              description: |-
                                Number or name of the port to access on the container.
                                Number must be in the range 1 to 65535.
                                Name must be an IANA_SVC_NAME.
                              x-kubernetes-int-or-string: true
                          required:
                            - port
                          type: object
                        terminationGracePeriodSeconds:
                          format: int64
                          type: integer
                        timeoutSeconds:
                          description: |-
                            Number of seconds after which the probe times out.
                            Defaults to 1 second. Minimum value is 1.
                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                          format: int32
                          type: integer
                      type: object
                  type: object
                nvmeofConfig:
                  additionalProperties:
                    additionalProperties:
                      type: string
                    type: object
                  description: |-
                    NVMeOFConfig is a map of section names to key-value pairs for nvmeof.conf configuration
                    This allows users to override or add configuration options without needing to manage a ConfigMap
                  type: object
                placement:
                  properties:
                    nodeAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              preference:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchFields:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                                x-kubernetes-map-type: atomic
                              weight:
                                format: int32
                                type: integer
                            required:
                              - preference
                              - weight
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        requiredDuringSchedulingIgnoredDuringExecution:
                          properties:
                            nodeSelectorTerms:
                              items:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchFields:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                                x-kubernetes-map-type: atomic
                              type: array
                              x-kubernetes-list-type: atomic
                          required:
                            - nodeSelectorTerms
                          type: object
                          x-kubernetes-map-type: atomic
                      type: object
                    podAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              podAffinityTerm:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    type: string
                                required:
                                  - topologyKey
                                type: object
                              weight:
                                format: int32
                                type: integer
                            required:
                              - podAffinityTerm
                              - weight
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        requiredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              labelSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              matchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              mismatchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              namespaceSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              namespaces:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              topologyKey:
                                type: string
                            required:
                              - topologyKey
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                      type: object
                    podAntiAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              podAffinityTerm:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    type: string
                                required:
                                  - topologyKey
                                type: object
                              weight:
                                format: int32
                                type: integer
                            required:
                              - podAffinityTerm
                              - weight
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        requiredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              labelSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              matchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              mismatchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              namespaceSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              namespaces:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              topologyKey:
                                type: string
                            required:
                              - topologyKey
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                      type: object
                    tolerations:
                      items:
                        properties:
                          effect:
                            type: string
                          key:
                            type: string
                          operator:
                            type: string
                          tolerationSeconds:
                            format: int64
                            type: integer
                          value:
                            type: string
                        type: object
                      type: array
                    topologySpreadConstraints:
                      items:
                        properties:
                          labelSelector:
                            properties:
                              matchExpressions:
                                items:
                                  properties:
                                    key:
                                      type: string
                                    operator:
                                      type: string
                                    values:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  required:
                                    - key
                                    - operator
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              matchLabels:
                                additionalProperties:
                                  type: string
                                type: object
                            type: object
                            x-kubernetes-map-type: atomic
                          matchLabelKeys:
                            items:
                              type: string
                            type: array
                            x-kubernetes-list-type: atomic
                          maxSkew:
                            format: int32
                            type: integer
                          minDomains:
                            format: int32
                            type: integer
                          nodeAffinityPolicy:
                            type: string
                          nodeTaintsPolicy:
                            type: string
                          topologyKey:
                            type: string
                          whenUnsatisfiable:
                            type: string
                        required:
                          - maxSkew
                          - topologyKey
                          - whenUnsatisfiable
                        type: object
                      type: array
                  type: object
                pool:
                  description: Pool is the RADOS pool where NVMe-oF configuration is stored
                  minLength: 1
                  type: string
                ports:
                  description: Ports configuration for the NVMe-oF gateway
                  properties:
                    discoveryPort:
                      description: 'DiscoveryPort is the port for discovery service (default: 8009)'
                      format: int32
                      maximum: 65535
                      minimum: 1
                      type: integer
                    gatewayPort:
                      description: 'GatewayPort is the port for the gateway service (default: 5500)'
                      format: int32
                      maximum: 65535
                      minimum: 1
                      type: integer
                    ioPort:
                      description: 'IOPort is the port for NVMe-oF IO traffic (default: 4420)'
                      format: int32
                      maximum: 65535
                      minimum: 1
                      type: integer
                    monitorPort:
                      description: 'MonitorPort is the port for the monitor service (default: 5499)'
                      format: int32
                      maximum: 65535
                      minimum: 1
                      type: integer
                  type: object
                priorityClassName:
                  description: PriorityClassName sets the priority class on the pods
                  type: string
                resources:
                  description: Resources set resource requests and limits
                  properties:
                    claims:
                      description: |-
                        Claims lists the names of resources, defined in spec.resourceClaims,
                        that are used by this container.

                        This field depends on the
                        DynamicResourceAllocation feature gate.

                        This field is immutable. It can only be set for containers.
                      items:
                        description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                        properties:
                          name:
                            description: |-
                              Name must match the name of one entry in pod.spec.resourceClaims of
                              the Pod where this field is used. It makes that resource available
                              inside a container.
                            type: string
                          request:
                            description: |-
                              Request is the name chosen for a request in the referenced claim.
                              If empty, everything from the claim is made available, otherwise
                              only the result of this request.
                            type: string
                        required:
                          - name
                        type: object
                      type: array
                      x-kubernetes-list-map-keys:
                        - name
                      x-kubernetes-list-type: map
                    limits:
                      additionalProperties:
                        anyOf:
                          - type: integer
                          - type: string
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                      description: |-
                        Limits describes the maximum amount of compute resources allowed.
                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                      type: object
                    requests:
                      additionalProperties:
                        anyOf:
                          - type: integer
                          - type: string
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                      description: |-
                        Requests describes the minimum amount of compute resources required.
                        If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                        otherwise to an implementation-defined value. Requests cannot exceed Limits.
                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                      type: object
                  type: object
              required:
                - group
                - image
                - instances
                - pool
              type: object
            status:
              description: NVMeOFGatewayStatus represents the status of Ceph NVMe-oF Gateway
              properties:
                cephx:
                  properties:
                    daemon:
                      description: Daemon shows the CephX key status for local Ceph daemons associated with this resources.
                      properties:
                        keyCephVersion:
                          description: |-
                            KeyCephVersion reports the Ceph version that created the current generation's keys. This is
                            same string format as reported by `CephCluster.status.version.version` to allow them to be
                            compared. E.g., `20.2.0-0`.
                            For all newly-created resources, this field set to the version of Ceph that created the key.
                            The special value "Uninitialized" indicates that keys are being created for the first time.
                            An empty string indicates that the version is unknown, as expected in brownfield deployments.
                          type: string
                        keyGeneration:
                          description: |-
                            KeyGeneration represents the CephX key generation for the last successful reconcile.
                            For all newly-created resources, this field is set to `1`.
                            When keys are rotated due to any rotation policy, the generation is incremented or updated to
                            the configured policy generation.
                            Generation `0` indicates that keys existed prior to the implementation of key tracking.
                          format: int32
                          type: integer
                      type: object
                  type: object
                conditions:
                  items:
                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.
                    properties:
                      lastHeartbeatTime:
                        format: date-time
                        type: string
                      lastTransitionTime:
                        format: date-time
                        type: string
                      message:
                        type: string
                      reason:
                        description: ConditionReason is a reason for a condition
                        type: string
                      status:
                        type: string
                      type:
                        description: ConditionType represent a resource's status
                        type: string
                    type: object
                  type: array
                observedGeneration:
                  description: ObservedGeneration is the latest generation observed by the controller.
                  format: int64
                  type: integer
                phase:
                  type: string
              type: object
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
    helm.sh/resource-policy: keep
  name: cephobjectrealms.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephObjectRealm
    listKind: CephObjectRealmList
    plural: cephobjectrealms
    shortNames:
      - cephor
    singular: cephobjectrealm
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .status.phase
          name: Phase
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v1
      schema:
        openAPIV3Schema:
          description: CephObjectRealm represents a Ceph Object Store Gateway Realm
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: ObjectRealmSpec represent the spec of an ObjectRealm
              nullable: true
              properties:
                defaultRealm:
                  description: Set this realm as the default in Ceph. Only one realm should be default.
                  type: boolean
                pull:
                  description: PullSpec represents the pulling specification of a Ceph Object Storage Gateway Realm
                  properties:
                    endpoint:
                      pattern: ^https*://
                      type: string
                  type: object
              type: object
            status:
              description: Status represents the status of an object
              properties:
                conditions:
                  items:
                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.
                    properties:
                      lastHeartbeatTime:
                        format: date-time
                        type: string
                      lastTransitionTime:
                        format: date-time
                        type: string
                      message:
                        type: string
                      reason:
                        description: ConditionReason is a reason for a condition
                        type: string
                      status:
                        type: string
                      type:
                        description: ConditionType represent a resource's status
                        type: string
                    type: object
                  type: array
                observedGeneration:
                  description: ObservedGeneration is the latest generation observed by the controller.
                  format: int64
                  type: integer
                phase:
                  type: string
              type: object
              x-kubernetes-preserve-unknown-fields: true
          required:
            - metadata
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
    helm.sh/resource-policy: keep
  name: cephobjectstores.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephObjectStore
    listKind: CephObjectStoreList
    plural: cephobjectstores
    shortNames:
      - cephos
    singular: cephobjectstore
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .status.phase
          name: Phase
          type: string
        - jsonPath: .status.info.endpoint
          name: Endpoint
          type: string
        - jsonPath: .status.info.secureEndpoint
          name: SecureEndpoint
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v1
      schema:
        openAPIV3Schema:
          description: CephObjectStore represents a Ceph Object Store Gateway
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: ObjectStoreSpec represent the spec of a pool
              properties:
                allowUsersInNamespaces:
                  description: |-
                    The list of allowed namespaces in addition to the object store namespace
                    where ceph object store users may be created. Specify "*" to allow all
                    namespaces, otherwise list individual namespaces that are to be allowed.
                    This is useful for applications that need object store credentials
                    to be created in their own namespace, where neither OBCs nor COSI
                    is being used to create buckets. The default is empty.
                  items:
                    type: string
                  type: array
                auth:
                  description: The authentication configuration
                  properties:
                    keystone:
                      description: The spec for Keystone
                      nullable: true
                      properties:
                        acceptedRoles:
                          description: The roles requires to serve requests.
                          items:
                            type: string
                          type: array
                        implicitTenants:
                          description: Create new users in their own tenants of the same name. Possible values are true, false, swift and s3. The latter have the effect of splitting the identity space such that only the indicated protocol will use implicit tenants.
                          type: string
                        revocationInterval:
                          description: The number of seconds between token revocation checks.
                          nullable: true
                          type: integer
                        serviceUserSecretName:
                          description: The name of the secret containing the credentials for the service user account used by RGW. It has to be in the same namespace as the object store resource.
                          type: string
                        tokenCacheSize:
                          description: The maximum number of entries in each Keystone token cache.
                          nullable: true
                          type: integer
                        url:
                          description: The URL for the Keystone server.
                          type: string
                      required:
                        - acceptedRoles
                        - serviceUserSecretName
                        - url
                      type: object
                  type: object
                dataPool:
                  description: The data pool settings
                  nullable: true
                  properties:
                    application:
                      description: The application name to set on the pool. Only expected to be set for rgw pools.
                      type: string
                    compressionMode:
                      description: |-
                        DEPRECATED: use Parameters instead, e.g., Parameters["compression_mode"] = "force"
                        The inline compression mode in Bluestore OSD to set to (options are: none, passive, aggressive, force)
                        Do NOT set a default value for kubebuilder as this will override the Parameters
                      enum:
                        - none
                        - passive
                        - aggressive
                        - force
                        - ""
                      nullable: true
                      type: string
                    crushRoot:
                      description: The root of the crush hierarchy utilized by the pool
                      nullable: true
                      type: string
                    deviceClass:
                      description: The device class the OSD should set to for use in the pool
                      nullable: true
                      type: string
                    enableCrushUpdates:
                      description: Allow rook operator to change the pool CRUSH tunables once the pool is created
                      nullable: true
                      type: boolean
                    enableRBDStats:
                      description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool
                      type: boolean
                    erasureCoded:
                      description: The erasure code settings
                      properties:
                        algorithm:
                          description: |-
                            The algorithm for erasure coding.
                            If absent, defaults to the plugin specified in osd_pool_default_erasure_code_profile.
                          enum:
                            - isa
                            - jerasure
                          type: string
                        codingChunks:
                          description: |-
                            Number of coding chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
                            This is the number of OSDs that can be lost simultaneously before data cannot be recovered.
                          minimum: 0
                          type: integer
                        dataChunks:
                          description: |-
                            Number of data chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
                            The number of chunks required to recover an object when any single OSD is lost is the same
                            as dataChunks so be aware that the larger the number of data chunks, the higher the cost of recovery.
                          minimum: 0
                          type: integer
                      required:
                        - codingChunks
                        - dataChunks
                      type: object
                    failureDomain:
                      description: 'The failure domain: osd/host/(region or zone if available) - technically also any type in the crush map'
                      type: string
                    mirroring:
                      description: The mirroring settings
                      properties:
                        enabled:
                          description: Enabled whether this pool is mirrored or not
                          type: boolean
                        mode:
                          description: 'Mode is the mirroring mode: pool, image or init-only.'
                          enum:
                            - pool
                            - image
                            - init-only
                          type: string
                        peers:
                          description: Peers represents the peers spec
                          nullable: true
                          properties:
                            secretNames:
                              description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers
                              items:
                                type: string
                              type: array
                          type: object
                        snapshotSchedules:
                          description: SnapshotSchedules is the scheduling of snapshot for mirrored images/pools
                          items:
                            description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool
                            properties:
                              interval:
                                description: Interval represent the periodicity of the snapshot.
                                type: string
                              path:
                                description: Path is the path to snapshot, only valid for CephFS
                                type: string
                              startTime:
                                description: StartTime indicates when to start the snapshot
                                type: string
                            type: object
                          type: array
                      type: object
                    parameters:
                      additionalProperties:
                        type: string
                      description: Parameters is a list of properties to enable on a given pool
                      nullable: true
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    quotas:
                      description: The quota settings
                      nullable: true
                      properties:
                        maxBytes:
                          description: |-
                            MaxBytes represents the quota in bytes
                            Deprecated in favor of MaxSize
                          format: int64
                          type: integer
                        maxObjects:
                          description: MaxObjects represents the quota in objects
                          format: int64
                          type: integer
                        maxSize:
                          description: MaxSize represents the quota in bytes as a string
                          pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE]i|[kMGTPE])?$
                          type: string
                      type: object
                    replicated:
                      description: The replication settings
                      properties:
                        hybridStorage:
                          description: HybridStorage represents hybrid storage tier settings
                          nullable: true
                          properties:
                            primaryDeviceClass:
                              description: PrimaryDeviceClass represents high performance tier (for example SSD or NVME) for Primary OSD
                              minLength: 1
                              type: string
                            secondaryDeviceClass:
                              description: SecondaryDeviceClass represents low performance tier (for example HDDs) for remaining OSDs
                              minLength: 1
                              type: string
                          required:
                            - primaryDeviceClass
                            - secondaryDeviceClass
                          type: object
                        replicasPerFailureDomain:
                          description: ReplicasPerFailureDomain the number of replica in the specified failure domain
                          minimum: 1
                          type: integer
                        requireSafeReplicaSize:
                          description: RequireSafeReplicaSize if false allows you to set replica 1
                          type: boolean
                        size:
                          description: Size - Number of copies per object in a replicated storage pool, including the object itself (required for replicated pool type)
                          minimum: 0
                          type: integer
                        subFailureDomain:
                          description: SubFailureDomain the name of the sub-failure domain
                          type: string
                        targetSizeRatio:
                          description: TargetSizeRatio gives a hint (%) to Ceph in terms of expected consumption of the total cluster capacity
                          minimum: 0
                          type: number
                      required:
                        - size
                      type: object
                    statusCheck:
                      description: The mirroring statusCheck
                      properties:
                        mirror:
                          description: HealthCheckSpec represents the health check of an object store bucket
                          nullable: true
                          properties:
                            disabled:
                              type: boolean
                            interval:
                              description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
                              type: string
                            timeout:
                              type: string
                          type: object
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                  type: object
                defaultRealm:
                  description: |-
                    Set this realm as the default in Ceph. Only one realm should be default.
                    Do not set this true on more than one CephObjectStore.
                    This may not be set when zone is also specified; in this case, the realm
                    referenced by the zone's zonegroup should configure defaulting behavior.
                  type: boolean
                gateway:
                  description: The rgw pod info
                  nullable: true
                  properties:
                    additionalVolumeMounts:
                      description: |-
                        AdditionalVolumeMounts allows additional volumes to be mounted to the RGW pod.
                        The root directory for each additional volume mount is `/var/rgw`.
                        Example: for an additional mount at subPath `ldap`, mounted from a secret that has key
                        `bindpass.secret`, the file would reside at `/var/rgw/ldap/bindpass.secret`.
                      items:
                        description: |-
                          AdditionalVolumeMount represents the source from where additional files in pod containers
                          should come from and what subdirectory they are made available in.
                        properties:
                          subPath:
                            description: |-
                              SubPath defines the sub-path (subdirectory) of the directory root where the volumeSource will
                              be mounted. All files/keys in the volume source's volume will be mounted to the subdirectory.
                              This is not the same as the Kubernetes `subPath` volume mount option.
                              Each subPath definition must be unique and must not contain ':'.
                            minLength: 1
                            pattern: ^[^:]+$
                            type: string
                          volumeSource:
                            properties:
                              configMap:
                                properties:
                                  defaultMode:
                                    format: int32
                                    type: integer
                                  items:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        mode:
                                          format: int32
                                          type: integer
                                        path:
                                          type: string
                                      required:
                                        - key
                                        - path
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  name:
                                    default: ""
                                    type: string
                                  optional:
                                    type: boolean
                                type: object
                                x-kubernetes-map-type: atomic
                              emptyDir:
                                properties:
                                  medium:
                                    type: string
                                  sizeLimit:
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                    x-kubernetes-int-or-string: true
                                type: object
                              hostPath:
                                properties:
                                  path:
                                    type: string
                                  type:
                                    type: string
                                required:
                                  - path
                                type: object
                              persistentVolumeClaim:
                                properties:
                                  claimName:
                                    type: string
                                  readOnly:
                                    type: boolean
                                required:
                                  - claimName
                                type: object
                              projected:
                                properties:
                                  defaultMode:
                                    format: int32
                                    type: integer
                                  sources:
                                    items:
                                      properties:
                                        clusterTrustBundle:
                                          properties:
                                            labelSelector:
                                              properties:
                                                matchExpressions:
                                                  items:
                                                    properties:
                                                      key:
                                                        type: string
                                                      operator:
                                                        type: string
                                                      values:
                                                        items:
                                                          type: string
                                                        type: array
                                                        x-kubernetes-list-type: atomic
                                                    required:
                                                      - key
                                                      - operator
                                                    type: object
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                                matchLabels:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            name:
                                              type: string
                                            optional:
                                              type: boolean
                                            path:
                                              type: string
                                            signerName:
                                              type: string
                                          required:
                                            - path
                                          type: object
                                        configMap:
                                          properties:
                                            items:
                                              items:
                                                properties:
                                                  key:
                                                    type: string
                                                  mode:
                                                    format: int32
                                                    type: integer
                                                  path:
                                                    type: string
                                                required:
                                                  - key
                                                  - path
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        downwardAPI:
                                          properties:
                                            items:
                                              items:
                                                properties:
                                                  fieldRef:
                                                    properties:
                                                      apiVersion:
                                                        type: string
                                                      fieldPath:
                                                        type: string
                                                    required:
                                                      - fieldPath
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  mode:
                                                    format: int32
                                                    type: integer
                                                  path:
                                                    type: string
                                                  resourceFieldRef:
                                                    properties:
                                                      containerName:
                                                        type: string
                                                      divisor:
                                                        anyOf:
                                                          - type: integer
                                                          - type: string
                                                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                        x-kubernetes-int-or-string: true
                                                      resource:
                                                        type: string
                                                    required:
                                                      - resource
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                required:
                                                  - path
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          type: object
                                        podCertificate:
                                          properties:
                                            certificateChainPath:
                                              type: string
                                            credentialBundlePath:
                                              type: string
                                            keyPath:
                                              type: string
                                            keyType:
                                              type: string
                                            maxExpirationSeconds:
                                              format: int32
                                              type: integer
                                            signerName:
                                              type: string
                                            userAnnotations:
                                              additionalProperties:
                                                type: string
                                              type: object
                                          required:
                                            - keyType
                                            - signerName
                                          type: object
                                        secret:
                                          properties:
                                            items:
                                              items:
                                                properties:
                                                  key:
                                                    type: string
                                                  mode:
                                                    format: int32
                                                    type: integer
                                                  path:
                                                    type: string
                                                required:
                                                  - key
                                                  - path
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        serviceAccountToken:
                                          properties:
                                            audience:
                                              type: string
                                            expirationSeconds:
                                              format: int64
                                              type: integer
                                            path:
                                              type: string
                                          required:
                                            - path
                                          type: object
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              secret:
                                properties:
                                  defaultMode:
                                    format: int32
                                    type: integer
                                  items:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        mode:
                                          format: int32
                                          type: integer
                                        path:
                                          type: string
                                      required:
                                        - key
                                        - path
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  optional:
                                    type: boolean
                                  secretName:
                                    type: string
                                type: object
                            type: object
                        required:
                          - subPath
                          - volumeSource
                        type: object
                      type: array
                    annotations:
                      additionalProperties:
                        type: string
                      description: The annotations-related configuration to add/set on each Pod related object.
                      nullable: true
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    caBundleRef:
                      description: The name of the secret that stores custom ca-bundle with root and intermediate certificates.
                      nullable: true
                      type: string
                    dashboardEnabled:
                      description: Whether rgw dashboard is enabled for the rgw daemon. If not set, the rgw dashboard will be enabled.
                      nullable: true
                      type: boolean
                      x-kubernetes-preserve-unknown-fields: true
                    disableMultisiteSyncTraffic:
                      description: |-
                        DisableMultisiteSyncTraffic, when true, prevents this object store's gateways from
                        transmitting multisite replication data. Note that this value does not affect whether
                        gateways receive multisite replication traffic: see ObjectZone.spec.customEndpoints for that.
                        If false or unset, this object store's gateways will be able to transmit multisite
                        replication data.
                      type: boolean
                    externalRgwEndpoints:
                      description: |-
                        ExternalRgwEndpoints points to external RGW endpoint(s). Multiple endpoints can be given, but
                        for stability of ObjectBucketClaims, we highly recommend that users give only a single
                        external RGW endpoint that is a load balancer that sends requests to the multiple RGWs.
                      items:
                        description: |-
                          EndpointAddress is a tuple that describes a single IP address or host name. This is a subset of
                          Kubernetes's v1.EndpointAddress.
                        properties:
                          hostname:
                            description: The DNS-addressable Hostname of this endpoint. This field will be preferred over IP if both are given.
                            type: string
                          ip:
                            description: The IP of this endpoint. As a legacy behavior, this supports being given a DNS-addressable hostname as well.
                            type: string
                        type: object
                        x-kubernetes-map-type: atomic
                      nullable: true
                      type: array
                    hostNetwork:
                      description: Whether host networking is enabled for the rgw daemon. If not set, the network settings from the cluster CR will be applied.
                      nullable: true
                      type: boolean
                      x-kubernetes-preserve-unknown-fields: true
                    instances:
                      description: The number of pods in the rgw replicaset.
                      format: int32
                      nullable: true
                      type: integer
                    labels:
                      additionalProperties:
                        type: string
                      description: The labels-related configuration to add/set on each Pod related object.
                      nullable: true
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    opsLogSidecar:
                      description: Enable enhanced operation Logs for S3 in a sidecar named ops-log
                      nullable: true
                      properties:
                        resources:
                          description: Resources represents the way to specify resource requirements for the ops-log sidecar
                          properties:
                            claims:
                              description: |-
                                Claims lists the names of resources, defined in spec.resourceClaims,
                                that are used by this container.

                                This field depends on the
                                DynamicResourceAllocation feature gate.

                                This field is immutable. It can only be set for containers.
                              items:
                                description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                                properties:
                                  name:
                                    description: |-
                                      Name must match the name of one entry in pod.spec.resourceClaims of
                                      the Pod where this field is used. It makes that resource available
                                      inside a container.
                                    type: string
                                  request:
                                    description: |-
                                      Request is the name chosen for a request in the referenced claim.
                                      If empty, everything from the claim is made available, otherwise
                                      only the result of this request.
                                    type: string
                                required:
                                  - name
                                type: object
                              type: array
                              x-kubernetes-list-map-keys:
                                - name
                              x-kubernetes-list-type: map
                            limits:
                              additionalProperties:
                                anyOf:
                                  - type: integer
                                  - type: string
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                              description: |-
                                Limits describes the maximum amount of compute resources allowed.
                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                              type: object
                            requests:
                              additionalProperties:
                                anyOf:
                                  - type: integer
                                  - type: string
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                              description: |-
                                Requests describes the minimum amount of compute resources required.
                                If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                              type: object
                          type: object
                      type: object
                    placement:
                      nullable: true
                      properties:
                        nodeAffinity:
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  preference:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchFields:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  weight:
                                    format: int32
                                    type: integer
                                required:
                                  - preference
                                  - weight
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            requiredDuringSchedulingIgnoredDuringExecution:
                              properties:
                                nodeSelectorTerms:
                                  items:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchFields:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  type: array
                                  x-kubernetes-list-type: atomic
                              required:
                                - nodeSelectorTerms
                              type: object
                              x-kubernetes-map-type: atomic
                          type: object
                        podAffinity:
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  podAffinityTerm:
                                    properties:
                                      labelSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                                - key
                                                - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      matchLabelKeys:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      mismatchLabelKeys:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      namespaceSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                                - key
                                                - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      namespaces:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      topologyKey:
                                        type: string
                                    required:
                                      - topologyKey
                                    type: object
                                  weight:
                                    format: int32
                                    type: integer
                                required:
                                  - podAffinityTerm
                                  - weight
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            requiredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    type: string
                                required:
                                  - topologyKey
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                          type: object
                        podAntiAffinity:
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  podAffinityTerm:
                                    properties:
                                      labelSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                                - key
                                                - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      matchLabelKeys:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      mismatchLabelKeys:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      namespaceSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                                - key
                                                - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      namespaces:
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      topologyKey:
                                        type: string
                                    required:
                                      - topologyKey
                                    type: object
                                  weight:
                                    format: int32
                                    type: integer
                                required:
                                  - podAffinityTerm
                                  - weight
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            requiredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    type: string
                                required:
                                  - topologyKey
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                          type: object
                        tolerations:
                          items:
                            properties:
                              effect:
                                type: string
                              key:
                                type: string
                              operator:
                                type: string
                              tolerationSeconds:
                                format: int64
                                type: integer
                              value:
                                type: string
                            type: object
                          type: array
                        topologySpreadConstraints:
                          items:
                            properties:
                              labelSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              matchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              maxSkew:
                                format: int32
                                type: integer
                              minDomains:
                                format: int32
                                type: integer
                              nodeAffinityPolicy:
                                type: string
                              nodeTaintsPolicy:
                                type: string
                              topologyKey:
                                type: string
                              whenUnsatisfiable:
                                type: string
                            required:
                              - maxSkew
                              - topologyKey
                              - whenUnsatisfiable
                            type: object
                          type: array
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    port:
                      description: The port the rgw service will be listening on (http)
                      format: int32
                      type: integer
                    priorityClassName:
                      description: PriorityClassName sets priority classes on the rgw pods
                      type: string
                    readAffinity:
                      description: |-
                        ReadAffinity defines the RGW read affinity policy to optimize the read requests for the RGW clients
                        Note: Only supported from Ceph Tentacle (v20)
                      properties:
                        type:
                          description: |-
                            Type defines the RGW ReadAffinity type
                            localize: read from the nearest OSD based on crush location of the RGW client
                            balance: picks a random OSD from the PG's active set
                            default: read from the primary OSD
                          enum:
                            - localize
                            - balance
                            - default
                          type: string
                      required:
                        - type
                      type: object
                    resources:
                      description: The resource requirements for the rgw pods
                      nullable: true
                      properties:
                        claims:
                          description: |-
                            Claims lists the names of resources, defined in spec.resourceClaims,
                            that are used by this container.

                            This field depends on the
                            DynamicResourceAllocation feature gate.

                            This field is immutable. It can only be set for containers.
                          items:
                            description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                            properties:
                              name:
                                description: |-
                                  Name must match the name of one entry in pod.spec.resourceClaims of
                                  the Pod where this field is used. It makes that resource available
                                  inside a container.
                                type: string
                              request:
                                description: |-
                                  Request is the name chosen for a request in the referenced claim.
                                  If empty, everything from the claim is made available, otherwise
                                  only the result of this request.
                                type: string
                            required:
                              - name
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                            - name
                          x-kubernetes-list-type: map
                        limits:
                          additionalProperties:
                            anyOf:
                              - type: integer
                              - type: string
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          description: |-
                            Limits describes the maximum amount of compute resources allowed.
                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                          type: object
                        requests:
                          additionalProperties:
                            anyOf:
                              - type: integer
                              - type: string
                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                            x-kubernetes-int-or-string: true
                          description: |-
                            Requests describes the minimum amount of compute resources required.
                            If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                            otherwise to an implementation-defined value. Requests cannot exceed Limits.
                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                          type: object
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    rgwCommandFlags:
                      additionalProperties:
                        type: string
                      description: |-
                        RgwCommandFlags sets Ceph RGW config values for the gateway clients that serve this object
                        store. Values are modified at RGW startup, resulting in RGW pod restarts.
                        This feature is intended for advanced users. It allows breaking configurations to be easily
                        applied. Use with caution.
                      nullable: true
                      type: object
                    rgwConfig:
                      additionalProperties:
                        type: string
                      description: |-
                        RgwConfig sets Ceph RGW config values for the gateway clients that serve this object store.
                        Values are modified at runtime without RGW restart.
                        This feature is intended for advanced users. It allows breaking configurations to be easily
                        applied. Use with caution.
                      nullable: true
                      type: object
                    rgwConfigFromSecret:
                      additionalProperties:
                        description: SecretKeySelector selects a key of a Secret.
                        properties:
                          key:
                            description: The key of the secret to select from.  Must be a valid secret key.
                            type: string
                          name:
                            default: ""
                            description: |-
                              Name of the referent.
                              This field is effectively required, but due to backwards compatibility is
                              allowed to be empty. Instances of this type with an empty value here are
                              almost certainly wrong.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            type: string
                          optional:
                            description: Specify whether the Secret or its key must be defined
                            type: boolean
                        required:
                          - key
                        type: object
                        x-kubernetes-map-type: atomic
                      description: |-
                        RgwConfigFromSecret works exactly like RgwConfig but takes config value from Secret Key reference.
                        Values are modified at runtime without RGW restart.
                        This feature is intended for advanced users. It allows breaking configurations to be easily
                        applied. Use with caution.
                      nullable: true
                      type: object
                    securePort:
                      description: The port the rgw service will be listening on (https)
                      format: int32
                      maximum: 65535
                      minimum: 0
                      nullable: true
                      type: integer
                    service:
                      description: The configuration related to add/set on each rgw service.
                      nullable: true
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          description: |-
                            The annotations-related configuration to add/set on each rgw service.
                            nullable
                            optional
                          type: object
                        labels:
                          additionalProperties:
                            type: string
                          description: The labels-related configuration to add/set on each rgw service.
                          type: object
                      type: object
                    sslCertificateRef:
                      description: The name of the secret that stores the ssl certificate for secure rgw connections
                      nullable: true
                      type: string
                  type: object
                healthCheck:
                  description: The RGW health probes
                  nullable: true
                  properties:
                    readinessProbe:
                      description: ProbeSpec is a wrapper around Probe so it can be enabled or disabled for a Ceph daemon
                      properties:
                        disabled:
                          description: Disabled determines whether probe is disable or not
                          type: boolean
                        probe:
                          description: |-
                            Probe describes a health check to be performed against a container to determine whether it is
                            alive or ready to receive traffic.
                          properties:
                            exec:
                              description: Exec specifies a command to execute in the container.
                              properties:
                                command:
                                  description: |-
                                    Command is the command line to execute inside the container, the working directory for the
                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                    a shell, you need to explicitly call out to that shell.
                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              description: |-
                                Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                Defaults to 3. Minimum value is 1.
                              format: int32
                              type: integer
                            grpc:
                              description: GRPC specifies a GRPC HealthCheckRequest.
                              properties:
                                port:
                                  description: Port number of the gRPC service. Number must be in the range 1 to 65535.
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  description: |-
                                    Service is the name of the service to place in the gRPC HealthCheckRequest
                                    (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                    If this is not specified, the default behavior is defined by gRPC.
                                  type: string
                              required:
                                - port
                              type: object
                            httpGet:
                              description: HTTPGet specifies an HTTP GET request to perform.
                              properties:
                                host:
                                  description: |-
                                    Host name to connect to, defaults to the pod IP. You probably want to set
                                    "Host" in httpHeaders instead.
                                  type: string
                                httpHeaders:
                                  description: Custom headers to set in the request. HTTP allows repeated headers.
                                  items:
                                    description: HTTPHeader describes a custom header to be used in HTTP probes
                                    properties:
                                      name:
                                        description: |-
                                          The header field name.
                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                        type: string
                                      value:
                                        description: The header field value
                                        type: string
                                    required:
                                      - name
                                      - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  description: Path to access on the HTTP server.
                                  type: string
                                port:
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  description: |-
                                    Name or number of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  description: |-
                                    Scheme to use for connecting to the host.
                                    Defaults to HTTP.
                                  type: string
                              required:
                                - port
                              type: object
                            initialDelaySeconds:
                              description: |-
                                Number of seconds after the container has started before liveness probes are initiated.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                            periodSeconds:
                              description: |-
                                How often (in seconds) to perform the probe.
                                Default to 10 seconds. Minimum value is 1.
                              format: int32
                              type: integer
                            successThreshold:
                              description: |-
                                Minimum consecutive successes for the probe to be considered successful after having failed.
                                Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                              format: int32
                              type: integer
                            tcpSocket:
                              description: TCPSocket specifies a connection to a TCP port.
                              properties:
                                host:
                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'
                                  type: string
                                port:
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  description: |-
                                    Number or name of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                              required:
                                - port
                              type: object
                            terminationGracePeriodSeconds:
                              format: int64
                              type: integer
                            timeoutSeconds:
                              description: |-
                                Number of seconds after which the probe times out.
                                Defaults to 1 second. Minimum value is 1.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                          type: object
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    startupProbe:
                      description: ProbeSpec is a wrapper around Probe so it can be enabled or disabled for a Ceph daemon
                      properties:
                        disabled:
                          description: Disabled determines whether probe is disable or not
                          type: boolean
                        probe:
                          description: |-
                            Probe describes a health check to be performed against a container to determine whether it is
                            alive or ready to receive traffic.
                          properties:
                            exec:
                              description: Exec specifies a command to execute in the container.
                              properties:
                                command:
                                  description: |-
                                    Command is the command line to execute inside the container, the working directory for the
                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                    a shell, you need to explicitly call out to that shell.
                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              description: |-
                                Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                Defaults to 3. Minimum value is 1.
                              format: int32
                              type: integer
                            grpc:
                              description: GRPC specifies a GRPC HealthCheckRequest.
                              properties:
                                port:
                                  description: Port number of the gRPC service. Number must be in the range 1 to 65535.
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  description: |-
                                    Service is the name of the service to place in the gRPC HealthCheckRequest
                                    (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                    If this is not specified, the default behavior is defined by gRPC.
                                  type: string
                              required:
                                - port
                              type: object
                            httpGet:
                              description: HTTPGet specifies an HTTP GET request to perform.
                              properties:
                                host:
                                  description: |-
                                    Host name to connect to, defaults to the pod IP. You probably want to set
                                    "Host" in httpHeaders instead.
                                  type: string
                                httpHeaders:
                                  description: Custom headers to set in the request. HTTP allows repeated headers.
                                  items:
                                    description: HTTPHeader describes a custom header to be used in HTTP probes
                                    properties:
                                      name:
                                        description: |-
                                          The header field name.
                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                        type: string
                                      value:
                                        description: The header field value
                                        type: string
                                    required:
                                      - name
                                      - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  description: Path to access on the HTTP server.
                                  type: string
                                port:
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  description: |-
                                    Name or number of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  description: |-
                                    Scheme to use for connecting to the host.
                                    Defaults to HTTP.
                                  type: string
                              required:
                                - port
                              type: object
                            initialDelaySeconds:
                              description: |-
                                Number of seconds after the container has started before liveness probes are initiated.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                            periodSeconds:
                              description: |-
                                How often (in seconds) to perform the probe.
                                Default to 10 seconds. Minimum value is 1.
                              format: int32
                              type: integer
                            successThreshold:
                              description: |-
                                Minimum consecutive successes for the probe to be considered successful after having failed.
                                Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                              format: int32
                              type: integer
                            tcpSocket:
                              description: TCPSocket specifies a connection to a TCP port.
                              properties:
                                host:
                                  description: 'Optional: Host name to connect to, defaults to the pod IP.'
                                  type: string
                                port:
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  description: |-
                                    Number or name of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                              required:
                                - port
                              type: object
                            terminationGracePeriodSeconds:
                              format: int64
                              type: integer
                            timeoutSeconds:
                              description: |-
                                Number of seconds after which the probe times out.
                                Defaults to 1 second. Minimum value is 1.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                          type: object
                      type: object
                  type: object
                hosting:
                  description: |-
                    Hosting settings for the object store.
                    A common use case for hosting configuration is to inform Rook of endpoints that support DNS
                    wildcards, which in turn allows virtual host-style bucket addressing.
                  nullable: true
                  properties:
                    advertiseEndpoint:
                      description: |-
                        AdvertiseEndpoint is the default endpoint Rook will return for resources dependent on this
                        object store. This endpoint will be returned to CephObjectStoreUsers, Object Bucket Claims,
                        and COSI Buckets/Accesses.
                        By default, Rook returns the endpoint for the object store's Kubernetes service using HTTPS
                        with `gateway.securePort` if it is defined (otherwise, HTTP with `gateway.port`).
                      nullable: true
                      properties:
                        dnsName:
                          description: |-
                            DnsName is the DNS name (in RFC-1123 format) of the endpoint.
                            If the DNS name corresponds to an endpoint with DNS wildcard support, do not include the
                            wildcard itself in the list of hostnames.
                            E.g., use "mystore.example.com" instead of "*.mystore.example.com".
                          minLength: 1
                          type: string
                        port:
                          description: Port is the port on which S3 connections can be made for this endpoint.
                          format: int32
                          maximum: 65535
                          minimum: 1
                          type: integer
                        useTls:
                          description: UseTls defines whether the endpoint uses TLS (HTTPS) or not (HTTP).
                          type: boolean
                      required:
                        - dnsName
                        - port
                        - useTls
                      type: object
                    dnsNames:
                      description: |-
                        A list of DNS host names on which object store gateways will accept client S3 connections.
                        When specified, object store gateways will reject client S3 connections to hostnames that are
                        not present in this list, so include all endpoints.
                        The object store's advertiseEndpoint and Kubernetes service endpoint, plus CephObjectZone
                        `customEndpoints` are automatically added to the list but may be set here again if desired.
                        Each DNS name must be valid according RFC-1123.
                        If the DNS name corresponds to an endpoint with DNS wildcard support, do not include the
                        wildcard itself in the list of hostnames.
                        E.g., use "mystore.example.com" instead of "*.mystore.example.com".
                      items:
                        type: string
                      type: array
                  type: object
                metadataPool:
                  description: The metadata pool settings
                  nullable: true
                  properties:
                    application:
                      description: The application name to set on the pool. Only expected to be set for rgw pools.
                      type: string
                    compressionMode:
                      description: |-
                        DEPRECATED: use Parameters instead, e.g., Parameters["compression_mode"] = "force"
                        The inline compression mode in Bluestore OSD to set to (options are: none, passive, aggressive, force)
                        Do NOT set a default value for kubebuilder as this will override the Parameters
                      enum:
                        - none
                        - passive
                        - aggressive
                        - force
                        - ""
                      nullable: true
                      type: string
                    crushRoot:
                      description: The root of the crush hierarchy utilized by the pool
                      nullable: true
                      type: string
                    deviceClass:
                      description: The device class the OSD should set to for use in the pool
                      nullable: true
                      type: string
                    enableCrushUpdates:
                      description: Allow rook operator to change the pool CRUSH tunables once the pool is created
                      nullable: true
                      type: boolean
                    enableRBDStats:
                      description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool
                      type: boolean
                    erasureCoded:
                      description: The erasure code settings
                      properties:
                        algorithm:
                          description: |-
                            The algorithm for erasure coding.
                            If absent, defaults to the plugin specified in osd_pool_default_erasure_code_profile.
                          enum:
                            - isa
                            - jerasure
                          type: string
                        codingChunks:
                          description: |-
                            Number of coding chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
                            This is the number of OSDs that can be lost simultaneously before data cannot be recovered.
                          minimum: 0
                          type: integer
                        dataChunks:
                          description: |-
                            Number of data chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
                            The number of chunks required to recover an object when any single OSD is lost is the same
                            as dataChunks so be aware that the larger the number of data chunks, the higher the cost of recovery.
                          minimum: 0
                          type: integer
                      required:
                        - codingChunks
                        - dataChunks
                      type: object
                    failureDomain:
                      description: 'The failure domain: osd/host/(region or zone if available) - technically also any type in the crush map'
                      type: string
                    mirroring:
                      description: The mirroring settings
                      properties:
                        enabled:
                          description: Enabled whether this pool is mirrored or not
                          type: boolean
                        mode:
                          description: 'Mode is the mirroring mode: pool, image or init-only.'
                          enum:
                            - pool
                            - image
                            - init-only
                          type: string
                        peers:
                          description: Peers represents the peers spec
                          nullable: true
                          properties:
                            secretNames:
                              description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers
                              items:
                                type: string
                              type: array
                          type: object
                        snapshotSchedules:
                          description: SnapshotSchedules is the scheduling of snapshot for mirrored images/pools
                          items:
                            description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool
                            properties:
                              interval:
                                description: Interval represent the periodicity of the snapshot.
                                type: string
                              path:
                                description: Path is the path to snapshot, only valid for CephFS
                                type: string
                              startTime:
                                description: StartTime indicates when to start the snapshot
                                type: string
                            type: object
                          type: array
                      type: object
                    parameters:
                      additionalProperties:
                        type: string
                      description: Parameters is a list of properties to enable on a given pool
                      nullable: true
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    quotas:
                      description: The quota settings
                      nullable: true
                      properties:
                        maxBytes:
                          description: |-
                            MaxBytes represents the quota in bytes
                            Deprecated in favor of MaxSize
                          format: int64
                          type: integer
                        maxObjects:
                          description: MaxObjects represents the quota in objects
                          format: int64
                          type: integer
                        maxSize:
                          description: MaxSize represents the quota in bytes as a string
                          pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE]i|[kMGTPE])?$
                          type: string
                      type: object
                    replicated:
                      description: The replication settings
                      properties:
                        hybridStorage:
                          description: HybridStorage represents hybrid storage tier settings
                          nullable: true
                          properties:
                            primaryDeviceClass:
                              description: PrimaryDeviceClass represents high performance tier (for example SSD or NVME) for Primary OSD
                              minLength: 1
                              type: string
                            secondaryDeviceClass:
                              description: SecondaryDeviceClass represents low performance tier (for example HDDs) for remaining OSDs
                              minLength: 1
                              type: string
                          required:
                            - primaryDeviceClass
                            - secondaryDeviceClass
                          type: object
                        replicasPerFailureDomain:
                          description: ReplicasPerFailureDomain the number of replica in the specified failure domain
                          minimum: 1
                          type: integer
                        requireSafeReplicaSize:
                          description: RequireSafeReplicaSize if false allows you to set replica 1
                          type: boolean
                        size:
                          description: Size - Number of copies per object in a replicated storage pool, including the object itself (required for replicated pool type)
                          minimum: 0
                          type: integer
                        subFailureDomain:
                          description: SubFailureDomain the name of the sub-failure domain
                          type: string
                        targetSizeRatio:
                          description: TargetSizeRatio gives a hint (%) to Ceph in terms of expected consumption of the total cluster capacity
                          minimum: 0
                          type: number
                      required:
                        - size
                      type: object
                    statusCheck:
                      description: The mirroring statusCheck
                      properties:
                        mirror:
                          description: HealthCheckSpec represents the health check of an object store bucket
                          nullable: true
                          properties:
                            disabled:
                              type: boolean
                            interval:
                              description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
                              type: string
                            timeout:
                              type: string
                          type: object
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                  type: object
                preservePoolsOnDelete:
                  description: Preserve pools on object store deletion
                  type: boolean
                protocols:
                  description: The protocol specification
                  properties:
                    enableAPIs:
                      description: |-
                        Represents RGW 'rgw_enable_apis' config option. See: https://docs.ceph.com/en/reef/radosgw/config-ref/#confval-rgw_enable_apis
                        If no value provided then all APIs will be enabled: s3, s3website, swift, swift_auth, admin, sts, iam, notifications
                        If enabled APIs are set, all remaining APIs will be disabled.
                        This option overrides S3.Enabled value.
                      items:
                        enum:
                          - s3
                          - s3website
                          - swift
                          - swift_auth
                          - admin
                          - sts
                          - iam
                          - notifications
                        type: string
                      nullable: true
                      type: array
                    s3:
                      description: The spec for S3
                      nullable: true
                      properties:
                        authUseKeystone:
                          description: Whether to use Keystone for authentication. This option maps directly to the rgw_s3_auth_use_keystone option. Enabling it allows generating S3 credentials via an OpenStack API call, see the docs. If not given, the defaults of the corresponding RGW option apply.
                          nullable: true
                          type: boolean
                        enabled:
                          description: |-
                            Deprecated: use protocol.enableAPIs instead.
                            Whether to enable S3. This defaults to true (even if protocols.s3 is not present in the CRD). This maintains backwards compatibility – by default S3 is enabled.
                          nullable: true
                          type: boolean
                      type: object
                    swift:
                      description: The spec for Swift
                      nullable: true
                      properties:
                        accountInUrl:
                          description: Whether or not the Swift account name should be included in the Swift API URL. If set to false (the default), then the Swift API will listen on a URL formed like http://host:port/<rgw_swift_url_prefix>/v1. If set to true, the Swift API URL will be http://host:port/<rgw_swift_url_prefix>/v1/AUTH_<account_name>. You must set this option to true (and update the Keystone service catalog) if you want radosgw to support publicly-readable containers and temporary URLs.
                          nullable: true
                          type: boolean
                        urlPrefix:
                          description: The URL prefix for the Swift API, to distinguish it from the S3 API endpoint. The default is swift, which makes the Swift API available at the URL http://host:port/swift/v1 (or http://host:port/swift/v1/AUTH_%(tenant_id)s if rgw swift account in url is enabled).
                          nullable: true
                          type: string
                        versioningEnabled:
                          description: Enables the Object Versioning of OpenStack Object Storage API. This allows clients to put the X-Versions-Location attribute on containers that should be versioned.
                          nullable: true
                          type: boolean
                      type: object
                  type: object
                security:
                  description: Security represents security settings
                  nullable: true
                  properties:
                    keyRotation:
                      description: KeyRotation defines options for Key Rotation.
                      nullable: true
                      properties:
                        enabled:
                          default: false
                          description: Enabled represents whether the key rotation is enabled.
                          type: boolean
                        schedule:
                          description: Schedule represents the cron schedule for key rotation.
                          type: string
                      type: object
                    kms:
                      description: KeyManagementService is the main Key Management option
                      nullable: true
                      properties:
                        connectionDetails:
                          additionalProperties:
                            type: string
                          description: ConnectionDetails contains the KMS connection details (address, port etc)
                          nullable: true
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                        tokenSecretName:
                          description: TokenSecretName is the kubernetes secret containing the KMS token
                          type: string
                      type: object
                    s3:
                      description: The settings for supporting AWS-SSE:S3 with RGW
                      nullable: true
                      properties:
                        connectionDetails:
                          additionalProperties:
                            type: string
                          description: ConnectionDetails contains the KMS connection details (address, port etc)
                          nullable: true
                          type: object
                          x-kubernetes-preserve-unknown-fields: true
                        tokenSecretName:
                          description: TokenSecretName is the kubernetes secret containing the KMS token
                          type: string
                      type: object
                  type: object
                sharedPools:
                  description: The pool information when configuring RADOS namespaces in existing pools.
                  nullable: true
                  properties:
                    dataPoolName:
                      description: The data pool used for creating RADOS namespaces in the object store
                      type: string
                      x-kubernetes-validations:
                        - message: object store shared data pool is immutable
                          rule: self == oldSelf
                    metadataPoolName:
                      description: The metadata pool used for creating RADOS namespaces in the object store
                      type: string
                      x-kubernetes-validations:
                        - message: object store shared metadata pool is immutable
                          rule: self == oldSelf
                    poolPlacements:
                      description: |-
                        PoolPlacements control which Pools are associated with a particular RGW bucket.
                        Once PoolPlacements are defined, RGW client will be able to associate pool
                        with ObjectStore bucket by providing "<LocationConstraint>" during s3 bucket creation
                        or "X-Storage-Policy" header during swift container creation.
                        See: https://docs.ceph.com/en/latest/radosgw/placement/#placement-targets
                        PoolPlacement with name: "default" will be used as a default pool if no option
                        is provided during bucket creation.
                        If default placement is not provided, spec.sharedPools.dataPoolName and spec.sharedPools.MetadataPoolName will be used as default pools.
                        If spec.sharedPools are also empty, then RGW pools (spec.dataPool and spec.metadataPool) will be used as defaults.
                      items:
                        properties:
                          dataNonECPoolName:
                            description: |-
                              The data pool used to store ObjectStore data that cannot use erasure coding (ex: multi-part uploads).
                              If dataPoolName is not erasure coded, then there is no need for dataNonECPoolName.
                              WARNING: Do not change this field after creation. Pool names are used in RADOS namespaces and renaming leads to data loss.
                            type: string
                          dataPoolName:
                            description: |-
                              The data pool used to store ObjectStore objects data.
                              WARNING: Do not change this field after creation. Pool names are used in RADOS namespaces and renaming leads to data loss.
                            minLength: 1
                            type: string
                          default:
                            description: |-
                              Sets given placement as default. Only one placement in the list can be marked as default.
                              Default is false.
                            type: boolean
                          metadataPoolName:
                            description: |-
                              The metadata pool used to store ObjectStore bucket index.
                              WARNING: Do not change this field after creation. Pool names are used in RADOS namespaces and renaming leads to data loss.
                            minLength: 1
                            type: string
                          name:
                            description: Pool placement name. Name can be arbitrary. Placement with name "default" will be used as default.
                            minLength: 1
                            pattern: ^[a-zA-Z0-9._/-]+$
                            type: string
                          storageClasses:
                            description: |-
                              StorageClasses can be selected by user to override dataPoolName during object creation.
                              Each placement has default STANDARD StorageClass pointing to dataPoolName.
                              This list allows defining additional StorageClasses on top of default STANDARD storage class.
                            items:
                              properties:
                                dataPoolName:
                                  description: |-
                                    DataPoolName is the data pool used to store ObjectStore objects data.
                                    WARNING: Do not change this field after creation. Pool names are used in RADOS namespaces and renaming leads to data loss.
                                  minLength: 1
                                  type: string
                                name:
                                  description: |-
                                    Name is the StorageClass name. Ceph allows arbitrary name for StorageClasses,
                                    however most clients/libs insist on AWS names so it is recommended to use
                                    one of the valid x-amz-storage-class values for better compatibility:
                                    REDUCED_REDUNDANCY | STANDARD_IA | ONEZONE_IA | INTELLIGENT_TIERING | GLACIER | DEEP_ARCHIVE | OUTPOSTS | GLACIER_IR | SNOW | EXPRESS_ONEZONE
                                    See AWS docs: https://aws.amazon.com/de/s3/storage-classes/
                                  minLength: 1
                                  pattern: ^[a-zA-Z0-9._/-]+$
                                  type: string
                              required:
                                - dataPoolName
                                - name
                              type: object
                            maxItems: 10
                            type: array
                        required:
                          - dataPoolName
                          - metadataPoolName
                          - name
                        type: object
                      type: array
                    preserveRadosNamespaceDataOnDelete:
                      description: Whether the RADOS namespaces should be preserved on deletion of the object store
                      type: boolean
                  type: object
                zone:
                  description: The multisite info
                  nullable: true
                  properties:
                    name:
                      description: CephObjectStoreZone name this CephObjectStore is part of
                      type: string
                  required:
                    - name
                  type: object
              type: object
              x-kubernetes-validations:
                - message: defaultRealm must not be true when zone.name is set (multisite configuration)
                  rule: '!(has(self.defaultRealm) && self.defaultRealm == true && has(self.zone) && size(self.zone.name) > 0)'
            status:
              description: ObjectStoreStatus represents the status of a Ceph Object Store resource
              properties:
                cephx:
                  properties:
                    daemon:
                      description: Daemon shows the CephX key status for local Ceph daemons associated with this resources.
                      properties:
                        keyCephVersion:
                          description: |-
                            KeyCephVersion reports the Ceph version that created the current generation's keys. This is
                            same string format as reported by `CephCluster.status.version.version` to allow them to be
                            compared. E.g., `20.2.0-0`.
                            For all newly-created resources, this field set to the version of Ceph that created the key.
                            The special value "Uninitialized" indicates that keys are being created for the first time.
                            An empty string indicates that the version is unknown, as expected in brownfield deployments.
                          type: string
                        keyGeneration:
                          description: |-
                            KeyGeneration represents the CephX key generation for the last successful reconcile.
                            For all newly-created resources, this field is set to `1`.
                            When keys are rotated due to any rotation policy, the generation is incremented or updated to
                            the configured policy generation.
                            Generation `0` indicates that keys existed prior to the implementation of key tracking.
                          format: int32
                          type: integer
                      type: object
                  type: object
                conditions:
                  items:
                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.
                    properties:
                      lastHeartbeatTime:
                        format: date-time
                        type: string
                      lastTransitionTime:
                        format: date-time
                        type: string
                      message:
                        type: string
                      reason:
                        description: ConditionReason is a reason for a condition
                        type: string
                      status:
                        type: string
                      type:
                        description: ConditionType represent a resource's status
                        type: string
                    type: object
                  type: array
                endpoints:
                  properties:
                    insecure:
                      items:
                        type: string
                      nullable: true
                      type: array
                    secure:
                      items:
                        type: string
                      nullable: true
                      type: array
                  type: object
                info:
                  additionalProperties:
                    type: string
                  nullable: true
                  type: object
                message:
                  type: string
                observedGeneration:
                  description: ObservedGeneration is the latest generation observed by the controller.
                  format: int64
                  type: integer
                phase:
                  description: ConditionType represent a resource's status
                  type: string
                replicas:
                  format: int32
                  type: integer
                selector:
                  type: string
              type: object
              x-kubernetes-preserve-unknown-fields: true
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        scale:
          labelSelectorPath: .status.selector
          specReplicasPath: .spec.gateway.instances
          statusReplicasPath: .status.replicas
        status: {}
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
    helm.sh/resource-policy: keep
  name: cephobjectstoreusers.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephObjectStoreUser
    listKind: CephObjectStoreUserList
    plural: cephobjectstoreusers
    shortNames:
      - rcou
      - objectuser
      - cephosu
    singular: cephobjectstoreuser
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .status.phase
          name: Phase
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v1
      schema:
        openAPIV3Schema:
          description: CephObjectStoreUser represents a Ceph Object Store Gateway User
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: ObjectStoreUserSpec represent the spec of an Objectstoreuser
              properties:
                capabilities:
                  description: Additional admin-level capabilities for the Ceph object store user
                  nullable: true
                  properties:
                    amz-cache:
                      description: Add capabilities for user to send request to RGW Cache API header. Documented in https://docs.ceph.com/en/latest/radosgw/rgw-cache/#cache-api
                      enum:
                        - '*'
                        - read
                        - write
                        - read, write
                      type: string
                    bilog:
                      description: Add capabilities for user to change bucket index logging. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities
                      enum:
                        - '*'
                        - read
                        - write
                        - read, write
                      type: string
                    bucket:
                      description: Admin capabilities to read/write Ceph object store buckets. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities
                      enum:
                        - '*'
                        - read
                        - write
                        - read, write
                      type: string
                    buckets:
                      description: Admin capabilities to read/write Ceph object store buckets. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities
                      enum:
                        - '*'
                        - read
                        - write
                        - read, write
                      type: string
                    datalog:
                      description: Add capabilities for user to change data logging. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities
                      enum:
                        - '*'
                        - read
                        - write
                        - read, write
                      type: string
                    info:
                      description: Admin capabilities to read/write information about the user. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities
                      enum:
                        - '*'
                        - read
                        - write
                        - read, write
                      type: string
                    mdlog:
                      description: Add capabilities for user to change metadata logging. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities
                      enum:
                        - '*'
                        - read
                        - write
                        - read, write
                      type: string
                    metadata:
                      description: Admin capabilities to read/write Ceph object store metadata. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities
                      enum:
                        - '*'
                        - read
                        - write
                        - read, write
                      type: string
                    oidc-provider:
                      description: Add capabilities for user to change oidc provider. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities
                      enum:
                        - '*'
                        - read
                        - write
                        - read, write
                      type: string
                    ratelimit:
                      description: Add capabilities for user to set rate limiter for user and bucket. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities
                      enum:
                        - '*'
                        - read
                        - write
                        - read, write
                      type: string
                    roles:
                      description: Admin capabilities to read/write roles for user. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities
                      enum:
                        - '*'
                        - read
                        - write
                        - read, write
                      type: string
                    usage:
                      description: Admin capabilities to read/write Ceph object store usage. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities
                      enum:
                        - '*'
                        - read
                        - write
                        - read, write
                      type: string
                    user:
                      description: Admin capabilities to read/write Ceph object store users. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities
                      enum:
                        - '*'
                        - read
                        - write
                        - read, write
                      type: string
                    user-policy:
                      description: Add capabilities for user to change user policies. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities
                      enum:
                        - '*'
                        - read
                        - write
                        - read, write
                      type: string
                    users:
                      description: Admin capabilities to read/write Ceph object store users. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities
                      enum:
                        - '*'
                        - read
                        - write
                        - read, write
                      type: string
                    zone:
                      description: Admin capabilities to read/write Ceph object store zones. Documented in https://docs.ceph.com/en/latest/radosgw/admin/?#add-remove-admin-capabilities
                      enum:
                        - '*'
                        - read
                        - write
                        - read, write
                      type: string
                  type: object
                clusterNamespace:
                  description: The namespace where the parent CephCluster and CephObjectStore are found
                  type: string
                displayName:
                  description: The display name for the ceph user.
                  type: string
                keys:
                  description: |-
                    Allows specifying credentials for the user. If not provided, the operator
                    will generate them.
                  items:
                    description: |-
                      ObjectUserKey defines a set of rgw user access credentials to be retrieved
                      from secret resources.
                    properties:
                      accessKeyRef:
                        description: Secret key selector for the access_key (commonly referred to as AWS_ACCESS_KEY_ID).
                        properties:
                          key:
                            description: The key of the secret to select from.  Must be a valid secret key.
                            type: string
                          name:
                            default: ""
                            description: |-
                              Name of the referent.
                              This field is effectively required, but due to backwards compatibility is
                              allowed to be empty. Instances of this type with an empty value here are
                              almost certainly wrong.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            type: string
                          optional:
                            description: Specify whether the Secret or its key must be defined
                            type: boolean
                        required:
                          - key
                        type: object
                        x-kubernetes-map-type: atomic
                      secretKeyRef:
                        description: Secret key selector for the secret_key (commonly referred to as AWS_SECRET_ACCESS_KEY).
                        properties:
                          key:
                            description: The key of the secret to select from.  Must be a valid secret key.
                            type: string
                          name:
                            default: ""
                            description: |-
                              Name of the referent.
                              This field is effectively required, but due to backwards compatibility is
                              allowed to be empty. Instances of this type with an empty value here are
                              almost certainly wrong.
                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            type: string
                          optional:
                            description: Specify whether the Secret or its key must be defined
                            type: boolean
                        required:
                          - key
                        type: object
                        x-kubernetes-map-type: atomic
                    type: object
                  type: array
                opMask:
                  description: The op-mask of the user.
                  items:
                    description: 'Internally, RGW labels "operations" on persistent state as `RGW_OP_TYPE_READ` (`read`), `RGW_OP_TYPE_WRITE` (`write`), or `RGW_OP_TYPE_DELETE` (`delete`). All RGW users have an "operation mask", which does not function as mask or filter as is typically implied by the word "mask", but as a set of allowed or permissible "operation" types the user is able to perform. The "operation mask" is applied regardless of the bucket or IAM policy. For example, in order for an RGW user to be able to read an object from a bucket, that user must have **both** the `read` "op mask" bit and an IAM/bucket policy that allows `s3:GetObject`. The default operations allowed are `read`, `write`, and `delete`. Setting the value to `[]` (an empty YAML sequence) causes all "operations" in the mask to be removed, meaning that the user will not be able to perform any operations. These operation masks are supported: `read`, `write`, `delete`'
                    enum:
                      - read
                      - write
                      - delete
                    type: string
                  maxItems: 3
                  minItems: 0
                  type: array
                  x-kubernetes-list-type: set
                quotas:
                  description: ObjectUserQuotaSpec can be used to set quotas for the object store user to limit their usage. See the [Ceph docs](https://docs.ceph.com/en/latest/radosgw/admin/?#quota-management) for more
                  nullable: true
                  properties:
                    maxBuckets:
                      description: Maximum bucket limit for the ceph user
                      nullable: true
                      type: integer
                    maxObjects:
                      description: Maximum number of objects across all the user's buckets
                      format: int64
                      nullable: true
                      type: integer
                    maxSize:
                      anyOf:
                        - type: integer
                        - type: string
                      description: |-
                        Maximum size limit of all objects across all the user's buckets
                        See https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity for more info.
                      nullable: true
                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                      x-kubernetes-int-or-string: true
                  type: object
                store:
                  description: The store the user will be created in
                  type: string
              type: object
            status:
              description: ObjectStoreUserStatus represents the status Ceph Object Store Gateway User
              properties:
                info:
                  additionalProperties:
                    type: string
                  nullable: true
                  type: object
                keys:
                  items:
                    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
                      resourceVersion:
                        type: string
                      uid:
                        description: |-
                          UID is a type that holds unique ID values, including UUIDs.  Because we
                          don't ONLY use UUIDs, this is an alias to string.  Being a type captures
                          intent and helps make sure that UIDs and names do not get conflated.
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                  nullable: true
                  type: array
                observedGeneration:
                  description: ObservedGeneration is the latest generation observed by the controller.
                  format: int64
                  type: integer
                phase:
                  type: string
              type: object
              x-kubernetes-preserve-unknown-fields: true
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
    helm.sh/resource-policy: keep
  name: cephobjectzonegroups.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephObjectZoneGroup
    listKind: CephObjectZoneGroupList
    plural: cephobjectzonegroups
    shortNames:
      - cephozg
    singular: cephobjectzonegroup
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .status.phase
          name: Phase
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v1
      schema:
        openAPIV3Schema:
          description: CephObjectZoneGroup represents a Ceph Object Store Gateway Zone Group
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: ObjectZoneGroupSpec represent the spec of an ObjectZoneGroup
              properties:
                realm:
                  description: The name of the realm the zone group is a member of.
                  type: string
              required:
                - realm
              type: object
            status:
              description: Status represents the status of an object
              properties:
                conditions:
                  items:
                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.
                    properties:
                      lastHeartbeatTime:
                        format: date-time
                        type: string
                      lastTransitionTime:
                        format: date-time
                        type: string
                      message:
                        type: string
                      reason:
                        description: ConditionReason is a reason for a condition
                        type: string
                      status:
                        type: string
                      type:
                        description: ConditionType represent a resource's status
                        type: string
                    type: object
                  type: array
                observedGeneration:
                  description: ObservedGeneration is the latest generation observed by the controller.
                  format: int64
                  type: integer
                phase:
                  type: string
              type: object
              x-kubernetes-preserve-unknown-fields: true
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
    helm.sh/resource-policy: keep
  name: cephobjectzones.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephObjectZone
    listKind: CephObjectZoneList
    plural: cephobjectzones
    shortNames:
      - cephoz
    singular: cephobjectzone
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .status.phase
          name: Phase
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v1
      schema:
        openAPIV3Schema:
          description: CephObjectZone represents a Ceph Object Store Gateway Zone
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: ObjectZoneSpec represent the spec of an ObjectZone
              properties:
                customEndpoints:
                  description: |-
                    If this zone cannot be accessed from other peer Ceph clusters via the ClusterIP Service
                    endpoint created by Rook, you must set this to the externally reachable endpoint(s). You may
                    include the port in the definition. For example: "https://my-object-store.my-domain.net:443".
                    In many cases, you should set this to the endpoint of the ingress resource that makes the
                    CephObjectStore associated with this CephObjectStoreZone reachable to peer clusters.
                    The list can have one or more endpoints pointing to different RGW servers in the zone.

                    If a CephObjectStore endpoint is omitted from this list, that object store's gateways will
                    not receive multisite replication data
                    (see CephObjectStore.spec.gateway.disableMultisiteSyncTraffic).
                  items:
                    type: string
                  nullable: true
                  type: array
                dataPool:
                  description: The data pool settings
                  nullable: true
                  properties:
                    application:
                      description: The application name to set on the pool. Only expected to be set for rgw pools.
                      type: string
                    compressionMode:
                      description: |-
                        DEPRECATED: use Parameters instead, e.g., Parameters["compression_mode"] = "force"
                        The inline compression mode in Bluestore OSD to set to (options are: none, passive, aggressive, force)
                        Do NOT set a default value for kubebuilder as this will override the Parameters
                      enum:
                        - none
                        - passive
                        - aggressive
                        - force
                        - ""
                      nullable: true
                      type: string
                    crushRoot:
                      description: The root of the crush hierarchy utilized by the pool
                      nullable: true
                      type: string
                    deviceClass:
                      description: The device class the OSD should set to for use in the pool
                      nullable: true
                      type: string
                    enableCrushUpdates:
                      description: Allow rook operator to change the pool CRUSH tunables once the pool is created
                      nullable: true
                      type: boolean
                    enableRBDStats:
                      description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool
                      type: boolean
                    erasureCoded:
                      description: The erasure code settings
                      properties:
                        algorithm:
                          description: |-
                            The algorithm for erasure coding.
                            If absent, defaults to the plugin specified in osd_pool_default_erasure_code_profile.
                          enum:
                            - isa
                            - jerasure
                          type: string
                        codingChunks:
                          description: |-
                            Number of coding chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
                            This is the number of OSDs that can be lost simultaneously before data cannot be recovered.
                          minimum: 0
                          type: integer
                        dataChunks:
                          description: |-
                            Number of data chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
                            The number of chunks required to recover an object when any single OSD is lost is the same
                            as dataChunks so be aware that the larger the number of data chunks, the higher the cost of recovery.
                          minimum: 0
                          type: integer
                      required:
                        - codingChunks
                        - dataChunks
                      type: object
                    failureDomain:
                      description: 'The failure domain: osd/host/(region or zone if available) - technically also any type in the crush map'
                      type: string
                    mirroring:
                      description: The mirroring settings
                      properties:
                        enabled:
                          description: Enabled whether this pool is mirrored or not
                          type: boolean
                        mode:
                          description: 'Mode is the mirroring mode: pool, image or init-only.'
                          enum:
                            - pool
                            - image
                            - init-only
                          type: string
                        peers:
                          description: Peers represents the peers spec
                          nullable: true
                          properties:
                            secretNames:
                              description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers
                              items:
                                type: string
                              type: array
                          type: object
                        snapshotSchedules:
                          description: SnapshotSchedules is the scheduling of snapshot for mirrored images/pools
                          items:
                            description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool
                            properties:
                              interval:
                                description: Interval represent the periodicity of the snapshot.
                                type: string
                              path:
                                description: Path is the path to snapshot, only valid for CephFS
                                type: string
                              startTime:
                                description: StartTime indicates when to start the snapshot
                                type: string
                            type: object
                          type: array
                      type: object
                    parameters:
                      additionalProperties:
                        type: string
                      description: Parameters is a list of properties to enable on a given pool
                      nullable: true
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    quotas:
                      description: The quota settings
                      nullable: true
                      properties:
                        maxBytes:
                          description: |-
                            MaxBytes represents the quota in bytes
                            Deprecated in favor of MaxSize
                          format: int64
                          type: integer
                        maxObjects:
                          description: MaxObjects represents the quota in objects
                          format: int64
                          type: integer
                        maxSize:
                          description: MaxSize represents the quota in bytes as a string
                          pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE]i|[kMGTPE])?$
                          type: string
                      type: object
                    replicated:
                      description: The replication settings
                      properties:
                        hybridStorage:
                          description: HybridStorage represents hybrid storage tier settings
                          nullable: true
                          properties:
                            primaryDeviceClass:
                              description: PrimaryDeviceClass represents high performance tier (for example SSD or NVME) for Primary OSD
                              minLength: 1
                              type: string
                            secondaryDeviceClass:
                              description: SecondaryDeviceClass represents low performance tier (for example HDDs) for remaining OSDs
                              minLength: 1
                              type: string
                          required:
                            - primaryDeviceClass
                            - secondaryDeviceClass
                          type: object
                        replicasPerFailureDomain:
                          description: ReplicasPerFailureDomain the number of replica in the specified failure domain
                          minimum: 1
                          type: integer
                        requireSafeReplicaSize:
                          description: RequireSafeReplicaSize if false allows you to set replica 1
                          type: boolean
                        size:
                          description: Size - Number of copies per object in a replicated storage pool, including the object itself (required for replicated pool type)
                          minimum: 0
                          type: integer
                        subFailureDomain:
                          description: SubFailureDomain the name of the sub-failure domain
                          type: string
                        targetSizeRatio:
                          description: TargetSizeRatio gives a hint (%) to Ceph in terms of expected consumption of the total cluster capacity
                          minimum: 0
                          type: number
                      required:
                        - size
                      type: object
                    statusCheck:
                      description: The mirroring statusCheck
                      properties:
                        mirror:
                          description: HealthCheckSpec represents the health check of an object store bucket
                          nullable: true
                          properties:
                            disabled:
                              type: boolean
                            interval:
                              description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
                              type: string
                            timeout:
                              type: string
                          type: object
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                  type: object
                metadataPool:
                  description: The metadata pool settings
                  nullable: true
                  properties:
                    application:
                      description: The application name to set on the pool. Only expected to be set for rgw pools.
                      type: string
                    compressionMode:
                      description: |-
                        DEPRECATED: use Parameters instead, e.g., Parameters["compression_mode"] = "force"
                        The inline compression mode in Bluestore OSD to set to (options are: none, passive, aggressive, force)
                        Do NOT set a default value for kubebuilder as this will override the Parameters
                      enum:
                        - none
                        - passive
                        - aggressive
                        - force
                        - ""
                      nullable: true
                      type: string
                    crushRoot:
                      description: The root of the crush hierarchy utilized by the pool
                      nullable: true
                      type: string
                    deviceClass:
                      description: The device class the OSD should set to for use in the pool
                      nullable: true
                      type: string
                    enableCrushUpdates:
                      description: Allow rook operator to change the pool CRUSH tunables once the pool is created
                      nullable: true
                      type: boolean
                    enableRBDStats:
                      description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool
                      type: boolean
                    erasureCoded:
                      description: The erasure code settings
                      properties:
                        algorithm:
                          description: |-
                            The algorithm for erasure coding.
                            If absent, defaults to the plugin specified in osd_pool_default_erasure_code_profile.
                          enum:
                            - isa
                            - jerasure
                          type: string
                        codingChunks:
                          description: |-
                            Number of coding chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
                            This is the number of OSDs that can be lost simultaneously before data cannot be recovered.
                          minimum: 0
                          type: integer
                        dataChunks:
                          description: |-
                            Number of data chunks per object in an erasure coded storage pool (required for erasure-coded pool type).
                            The number of chunks required to recover an object when any single OSD is lost is the same
                            as dataChunks so be aware that the larger the number of data chunks, the higher the cost of recovery.
                          minimum: 0
                          type: integer
                      required:
                        - codingChunks
                        - dataChunks
                      type: object
                    failureDomain:
                      description: 'The failure domain: osd/host/(region or zone if available) - technically also any type in the crush map'
                      type: string
                    mirroring:
                      description: The mirroring settings
                      properties:
                        enabled:
                          description: Enabled whether this pool is mirrored or not
                          type: boolean
                        mode:
                          description: 'Mode is the mirroring mode: pool, image or init-only.'
                          enum:
                            - pool
                            - image
                            - init-only
                          type: string
                        peers:
                          description: Peers represents the peers spec
                          nullable: true
                          properties:
                            secretNames:
                              description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers
                              items:
                                type: string
                              type: array
                          type: object
                        snapshotSchedules:
                          description: SnapshotSchedules is the scheduling of snapshot for mirrored images/pools
                          items:
                            description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool
                            properties:
                              interval:
                                description: Interval represent the periodicity of the snapshot.
                                type: string
                              path:
                                description: Path is the path to snapshot, only valid for CephFS
                                type: string
                              startTime:
                                description: StartTime indicates when to start the snapshot
                                type: string
                            type: object
                          type: array
                      type: object
                    parameters:
                      additionalProperties:
                        type: string
                      description: Parameters is a list of properties to enable on a given pool
                      nullable: true
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    quotas:
                      description: The quota settings
                      nullable: true
                      properties:
                        maxBytes:
                          description: |-
                            MaxBytes represents the quota in bytes
                            Deprecated in favor of MaxSize
                          format: int64
                          type: integer
                        maxObjects:
                          description: MaxObjects represents the quota in objects
                          format: int64
                          type: integer
                        maxSize:
                          description: MaxSize represents the quota in bytes as a string
                          pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE]i|[kMGTPE])?$
                          type: string
                      type: object
                    replicated:
                      description: The replication settings
                      properties:
                        hybridStorage:
                          description: HybridStorage represents hybrid storage tier settings
                          nullable: true
                          properties:
                            primaryDeviceClass:
                              description: PrimaryDeviceClass represents high performance tier (for example SSD or NVME) for Primary OSD
                              minLength: 1
                              type: string
                            secondaryDeviceClass:
                              description: SecondaryDeviceClass represents low performance tier (for example HDDs) for remaining OSDs
                              minLength: 1
                              type: string
                          required:
                            - primaryDeviceClass
                            - secondaryDeviceClass
                          type: object
                        replicasPerFailureDomain:
                          description: ReplicasPerFailureDomain the number of replica in the specified failure domain
                          minimum: 1
                          type: integer
                        requireSafeReplicaSize:
                          description: RequireSafeReplicaSize if false allows you to set replica 1
                          type: boolean
                        size:
                          description: Size - Number of copies per object in a replicated storage pool, including the object itself (required for replicated pool type)
                          minimum: 0
                          type: integer
                        subFailureDomain:
                          description: SubFailureDomain the name of the sub-failure domain
                          type: string
                        targetSizeRatio:
                          description: TargetSizeRatio gives a hint (%) to Ceph in terms of expected consumption of the total cluster capacity
                          minimum: 0
                          type: number
                      required:
                        - size
                      type: object
                    statusCheck:
                      description: The mirroring statusCheck
                      properties:
                        mirror:
                          description: HealthCheckSpec represents the health check of an object store bucket
                          nullable: true
                          properties:
                            disabled:
                              type: boolean
                            interval:
                              description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
                              type: string
                            timeout:
                              type: string
                          type: object
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                  type: object
                preservePoolsOnDelete:
                  default: true
                  description: Preserve pools on object zone deletion
                  type: boolean
                sharedPools:
                  description: The pool information when configuring RADOS namespaces in existing pools.
                  nullable: true
                  properties:
                    dataPoolName:
                      description: The data pool used for creating RADOS namespaces in the object store
                      type: string
                      x-kubernetes-validations:
                        - message: object store shared data pool is immutable
                          rule: self == oldSelf
                    metadataPoolName:
                      description: The metadata pool used for creating RADOS namespaces in the object store
                      type: string
                      x-kubernetes-validations:
                        - message: object store shared metadata pool is immutable
                          rule: self == oldSelf
                    poolPlacements:
                      description: |-
                        PoolPlacements control which Pools are associated with a particular RGW bucket.
                        Once PoolPlacements are defined, RGW client will be able to associate pool
                        with ObjectStore bucket by providing "<LocationConstraint>" during s3 bucket creation
                        or "X-Storage-Policy" header during swift container creation.
                        See: https://docs.ceph.com/en/latest/radosgw/placement/#placement-targets
                        PoolPlacement with name: "default" will be used as a default pool if no option
                        is provided during bucket creation.
                        If default placement is not provided, spec.sharedPools.dataPoolName and spec.sharedPools.MetadataPoolName will be used as default pools.
                        If spec.sharedPools are also empty, then RGW pools (spec.dataPool and spec.metadataPool) will be used as defaults.
                      items:
                        properties:
                          dataNonECPoolName:
                            description: |-
                              The data pool used to store ObjectStore data that cannot use erasure coding (ex: multi-part uploads).
                              If dataPoolName is not erasure coded, then there is no need for dataNonECPoolName.
                              WARNING: Do not change this field after creation. Pool names are used in RADOS namespaces and renaming leads to data loss.
                            type: string
                          dataPoolName:
                            description: |-
                              The data pool used to store ObjectStore objects data.
                              WARNING: Do not change this field after creation. Pool names are used in RADOS namespaces and renaming leads to data loss.
                            minLength: 1
                            type: string
                          default:
                            description: |-
                              Sets given placement as default. Only one placement in the list can be marked as default.
                              Default is false.
                            type: boolean
                          metadataPoolName:
                            description: |-
                              The metadata pool used to store ObjectStore bucket index.
                              WARNING: Do not change this field after creation. Pool names are used in RADOS namespaces and renaming leads to data loss.
                            minLength: 1
                            type: string
                          name:
                            description: Pool placement name. Name can be arbitrary. Placement with name "default" will be used as default.
                            minLength: 1
                            pattern: ^[a-zA-Z0-9._/-]+$
                            type: string
                          storageClasses:
                            description: |-
                              StorageClasses can be selected by user to override dataPoolName during object creation.
                              Each placement has default STANDARD StorageClass pointing to dataPoolName.
                              This list allows defining additional StorageClasses on top of default STANDARD storage class.
                            items:
                              properties:
                                dataPoolName:
                                  description: |-
                                    DataPoolName is the data pool used to store ObjectStore objects data.
                                    WARNING: Do not change this field after creation. Pool names are used in RADOS namespaces and renaming leads to data loss.
                                  minLength: 1
                                  type: string
                                name:
                                  description: |-
                                    Name is the StorageClass name. Ceph allows arbitrary name for StorageClasses,
                                    however most clients/libs insist on AWS names so it is recommended to use
                                    one of the valid x-amz-storage-class values for better compatibility:
                                    REDUCED_REDUNDANCY | STANDARD_IA | ONEZONE_IA | INTELLIGENT_TIERING | GLACIER | DEEP_ARCHIVE | OUTPOSTS | GLACIER_IR | SNOW | EXPRESS_ONEZONE
                                    See AWS docs: https://aws.amazon.com/de/s3/storage-classes/
                                  minLength: 1
                                  pattern: ^[a-zA-Z0-9._/-]+$
                                  type: string
                              required:
                                - dataPoolName
                                - name
                              type: object
                            maxItems: 10
                            type: array
                        required:
                          - dataPoolName
                          - metadataPoolName
                          - name
                        type: object
                      type: array
                    preserveRadosNamespaceDataOnDelete:
                      description: Whether the RADOS namespaces should be preserved on deletion of the object store
                      type: boolean
                  type: object
                zoneGroup:
                  description: The name of the zone group the zone is a member of.
                  type: string
              required:
                - zoneGroup
              type: object
            status:
              description: Status represents the status of an object
              properties:
                conditions:
                  items:
                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.
                    properties:
                      lastHeartbeatTime:
                        format: date-time
                        type: string
                      lastTransitionTime:
                        format: date-time
                        type: string
                      message:
                        type: string
                      reason:
                        description: ConditionReason is a reason for a condition
                        type: string
                      status:
                        type: string
                      type:
                        description: ConditionType represent a resource's status
                        type: string
                    type: object
                  type: array
                observedGeneration:
                  description: ObservedGeneration is the latest generation observed by the controller.
                  format: int64
                  type: integer
                phase:
                  type: string
              type: object
              x-kubernetes-preserve-unknown-fields: true
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
    helm.sh/resource-policy: keep
  name: cephrbdmirrors.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephRBDMirror
    listKind: CephRBDMirrorList
    plural: cephrbdmirrors
    shortNames:
      - cephrbdm
    singular: cephrbdmirror
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .status.phase
          name: Phase
          type: string
        - jsonPath: .metadata.creationTimestamp
          name: Age
          type: date
      name: v1
      schema:
        openAPIV3Schema:
          description: CephRBDMirror represents a Ceph RBD Mirror
          properties:
            apiVersion:
              description: |-
                APIVersion defines the versioned schema of this representation of an object.
                Servers should convert recognized schemas to the latest internal value, and
                may reject unrecognized values.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
              type: string
            kind:
              description: |-
                Kind is a string value representing the REST resource this object represents.
                Servers may infer this from the endpoint the client submits requests to.
                Cannot be updated.
                In CamelCase.
                More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
              type: string
            metadata:
              type: object
            spec:
              description: RBDMirroringSpec represents the specification of an RBD mirror daemon
              properties:
                annotations:
                  additionalProperties:
                    type: string
                  description: The annotations-related configuration to add/set on each Pod related object.
                  nullable: true
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                count:
                  description: Count represents the number of rbd mirror instance to run
                  minimum: 1
                  type: integer
                labels:
                  additionalProperties:
                    type: string
                  description: The labels-related configuration to add/set on each Pod related object.
                  nullable: true
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                peers:
                  description: Peers represents the peers spec
                  nullable: true
                  properties:
                    secretNames:
                      description: SecretNames represents the Kubernetes Secret names to add rbd-mirror or cephfs-mirror peers
                      items:
                        type: string
                      type: array
                  type: object
                placement:
                  nullable: true
                  properties:
                    nodeAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              preference:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchFields:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                                x-kubernetes-map-type: atomic
                              weight:
                                format: int32
                                type: integer
                            required:
                              - preference
                              - weight
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        requiredDuringSchedulingIgnoredDuringExecution:
                          properties:
                            nodeSelectorTerms:
                              items:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchFields:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                                x-kubernetes-map-type: atomic
                              type: array
                              x-kubernetes-list-type: atomic
                          required:
                            - nodeSelectorTerms
                          type: object
                          x-kubernetes-map-type: atomic
                      type: object
                    podAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              podAffinityTerm:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    type: string
                                required:
                                  - topologyKey
                                type: object
                              weight:
                                format: int32
                                type: integer
                            required:
                              - podAffinityTerm
                              - weight
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        requiredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              labelSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              matchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              mismatchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              namespaceSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              namespaces:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              topologyKey:
                                type: string
                            required:
                              - topologyKey
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                      type: object
                    podAntiAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              podAffinityTerm:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                            - key
                                            - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    type: string
                                required:
                                  - topologyKey
                                type: object
                              weight:
                                format: int32
                                type: integer
                            required:
                              - podAffinityTerm
                              - weight
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        requiredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              labelSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              matchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              mismatchLabelKeys:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              namespaceSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                        - key
                                        - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              namespaces:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              topologyKey:
                                type: string
                            required:
                              - topologyKey
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                      type: object
                    tolerations:
                      items:
                        properties:
                          effect:
                            type: string
                          key:
                            type: string
                          operator:
                            type: string
                          tolerationSeconds:
                            format: int64
                            type: integer
                          value:
                            type: string
                        type: object
                      type: array
                    topologySpreadConstraints:
                      items:
                        properties:
                          labelSelector:
                            properties:
                              matchExpressions:
                                items:
                                  properties:
                                    key:
                                      type: string
                                    operator:
                                      type: string
                                    values:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  required:
                                    - key
                                    - operator
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              matchLabels:
                                additionalProperties:
                                  type: string
                                type: object
                            type: object
                            x-kubernetes-map-type: atomic
                          matchLabelKeys:
                            items:
                              type: string
                            type: array
                            x-kubernetes-list-type: atomic
                          maxSkew:
                            format: int32
                            type: integer
                          minDomains:
                            format: int32
                            type: integer
                          nodeAffinityPolicy:
                            type: string
                          nodeTaintsPolicy:
                            type: string
                          topologyKey:
                            type: string
                          whenUnsatisfiable:
                            type: string
                        required:
                          - maxSkew
                          - topologyKey
                          - whenUnsatisfiable
                        type: object
                      type: array
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                priorityClassName:
                  description: PriorityClassName sets priority class on the rbd mirror pods
                  type: string
                resources:
                  description: The resource requirements for the rbd mirror pods
                  nullable: true
                  properties:
                    claims:
                      description: |-
                        Claims lists the names of resources, defined in spec.resourceClaims,
                        that are used by this container.

                        This field depends on the
                        DynamicResourceAllocation feature gate.

                        This field is immutable. It can only be set for containers.
                      items:
                        description: ResourceClaim references one entry in PodSpec.ResourceClaims.
                        properties:
                          name:
                            description: |-
                              Name must match the name of one entry in pod.spec.resourceClaims of
                              the Pod where this field is used. It makes that resource available
                              inside a container.
                            type: string
                          request:
                            description: |-
                              Request is the name chosen for a request in the referenced claim.
                              If empty, everything from the claim is made available, otherwise
                              only the result of this request.
                            type: string
                        required:
                          - name
                        type: object
                      type: array
                      x-kubernetes-list-map-keys:
                        - name
                      x-kubernetes-list-type: map
                    limits:
                      additionalProperties:
                        anyOf:
                          - type: integer
                          - type: string
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                      description: |-
                        Limits describes the maximum amount of compute resources allowed.
                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                      type: object
                    requests:
                      additionalProperties:
                        anyOf:
                          - type: integer
                          - type: string
                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                        x-kubernetes-int-or-string: true
                      description: |-
                        Requests describes the minimum amount of compute resources required.
                        If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                        otherwise to an implementation-defined value. Requests cannot exceed Limits.
                        More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                      type: object
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
              required:
                - count
              type: object
            status:
              description: RBDMirrorStatus represents the status of the RBD mirror resource
              properties:
                cephx:
                  properties:
                    daemon:
                      description: Daemon shows the CephX key status for local Ceph daemons associated with this resources.
                      properties:
                        keyCephVersion:
                          description: |-
                            KeyCephVersion reports the Ceph version that created the current generation's keys. This is
                            same string format as reported by `CephCluster.status.version.version` to allow them to be
                            compared. E.g., `20.2.0-0`.
                            For all newly-created resources, this field set to the version of Ceph that created the key.
                            The special value "Uninitialized" indicates that keys are being created for the first time.
                            An empty string indicates that the version is unknown, as expected in brownfield deployments.
                          type: string
                        keyGeneration:
                          description: |-
                            KeyGeneration represents the CephX key generation for the last successful reconcile.
                            For all newly-created resources, this field is set to `1`.
                            When keys are rotated due to any rotation policy, the generation is incremented or updated to
                            the configured policy generation.
                            Generation `0` indicates that keys existed prior to the implementation of key tracking.
                          format: int32
                          type: integer
                      type: object
                  type: object
                conditions:
                  items:
                    description: Condition represents a status condition on any Rook-Ceph Custom Resource.
                    properties:
                      lastHeartbeatTime:
                        format: date-time
                        type: string
                      lastTransitionTime:
                        format: date-time
                        type: string
                      message:
                        type: string
                      reason:
                        description: ConditionReason is a reason for a condition
                        type: string
                      status:
                        type: string
                      type:
                        description: ConditionType represent a resource's status
                        type: string
                    type: object
                  type: array
                observedGeneration:
                  description: ObservedGeneration is the latest generation observed by the controller.
                  format: int64
                  type: integer
                phase:
                  type: string
              type: object
              x-kubernetes-preserve-unknown-fields: true
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: objectbucketclaims.objectbucket.io
  annotations:
    helm.sh/resource-policy: keep
spec:
  group: objectbucket.io
  names:
    kind: ObjectBucketClaim
    listKind: ObjectBucketClaimList
    plural: objectbucketclaims
    singular: objectbucketclaim
    shortNames:
      - obc
      - obcs
  scope: Namespaced
  versions:
    - name: v1alpha1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                storageClassName:
                  type: string
                bucketName:
                  type: string
                generateBucketName:
                  type: string
                additionalConfig:
                  type: object
                  nullable: true
                  x-kubernetes-preserve-unknown-fields: true
                objectBucketName:
                  type: string
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
      subresources:
        status: {}
---
# Source: rook-ceph/templates/resources.yaml
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: objectbuckets.objectbucket.io
  annotations:
    helm.sh/resource-policy: keep
spec:
  group: objectbucket.io
  names:
    kind: ObjectBucket
    listKind: ObjectBucketList
    plural: objectbuckets
    singular: objectbucket
    shortNames:
      - ob
      - obs
  scope: Cluster
  versions:
    - name: v1alpha1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                storageClassName:
                  type: string
                endpoint:
                  type: object
                  nullable: true
                  properties:
                    bucketHost:
                      type: string
                    bucketPort:
                      type: integer
                      format: int32
                    bucketName:
                      type: string
                    region:
                      type: string
                    subRegion:
                      type: string
                    additionalConfig:
                      type: object
                      nullable: true
                      x-kubernetes-preserve-unknown-fields: true
                authentication:
                  type: object
                  nullable: true
                  items:
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                additionalState:
                  type: object
                  nullable: true
                  x-kubernetes-preserve-unknown-fields: true
                reclaimPolicy:
                  type: string
                claimRef:
                  type: object
                  nullable: true
                  x-kubernetes-preserve-unknown-fields: true
            status:
              type: object
              x-kubernetes-preserve-unknown-fields: true
      subresources:
        status: {}
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/cephconnection-viewer-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-cephconnection-viewer-role
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - csi.ceph.io
  resources:
  - cephconnections
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - csi.ceph.io
  resources:
  - cephconnections/status
  verbs:
  - get
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/cephconnections-editor-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-cephconnections-editor-role
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - csi.ceph.io
  resources:
  - cephconnections
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - csi.ceph.io
  resources:
  - cephconnections/status
  verbs:
  - get
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/cephfs-ctrlplugin-cr-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-cephfs-ctrlplugin-cr
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - ""
  resources:
  - secrets
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - configmaps
  verbs:
  - get
- apiGroups:
  - ""
  resources:
  - nodes
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - storage.k8s.io
  resources:
  - csinodes
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - persistentvolumes
  verbs:
  - get
  - list
  - watch
  - create
  - delete
  - patch
  - update
- apiGroups:
  - ""
  resources:
  - persistentvolumeclaims
  verbs:
  - get
  - list
  - watch
  - patch
  - 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:
  - persistentvolumeclaims/status
  verbs:
  - patch
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshots
  verbs:
  - get
  - list
- 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:
  - 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:
  - ""
  resources:
  - serviceaccounts
  verbs:
  - get
- apiGroups:
  - ""
  resources:
  - serviceaccounts/token
  verbs:
  - create
- apiGroups:
  - authentication.k8s.io
  resources:
  - tokenreviews
  verbs:
  - create
- apiGroups:
  - storage.k8s.io
  resources:
  - volumeattributesclasses
  verbs:
  - get
  - list
  - watch
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/cephfs-nodeplugin-cr-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-cephfs-nodeplugin-cr
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - ""
  resources:
  - nodes
  verbs:
  - get
- apiGroups:
  - ""
  resources:
  - secrets
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - configmaps
  verbs:
  - get
- apiGroups:
  - ""
  resources:
  - serviceaccounts
  verbs:
  - get
- apiGroups:
  - ""
  resources:
  - serviceaccounts/token
  verbs:
  - create
- apiGroups:
  - ""
  resources:
  - events
  verbs:
  - list
  - watch
  - create
  - update
  - patch
- apiGroups:
  - ""
  resources:
  - persistentvolumes
  - persistentvolumeclaims
  verbs:
  - get
- apiGroups:
  - authentication.k8s.io
  resources:
  - tokenreviews
  verbs:
  - create
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/clientprofile-viewer-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-clientprofile-viewer-role
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - csi.ceph.io
  resources:
  - clientprofiles
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - csi.ceph.io
  resources:
  - clientprofiles/status
  verbs:
  - get
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/clientprofilemapping-editor-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-clientprofilemapping-editor-role
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - csi.ceph.io
  resources:
  - clientprofilemappings
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - csi.ceph.io
  resources:
  - clientprofilemappings/status
  verbs:
  - get
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/clientprofilemapping-viewer-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-clientprofilemapping-viewer-role
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - csi.ceph.io
  resources:
  - clientprofilemappings
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - csi.ceph.io
  resources:
  - clientprofilemappings/status
  verbs:
  - get
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/clientprofiles-editor-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-clientprofiles-editor-role
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - csi.ceph.io
  resources:
  - clientprofiles
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - csi.ceph.io
  resources:
  - clientprofiles/status
  verbs:
  - get
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/driver-editor-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-driver-editor-role
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - csi.ceph.io
  resources:
  - drivers
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - csi.ceph.io
  resources:
  - drivers/status
  verbs:
  - get
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/driver-viewer-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-driver-viewer-role
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - csi.ceph.io
  resources:
  - drivers
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - csi.ceph.io
  resources:
  - drivers/status
  verbs:
  - get
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/manager-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-manager-role
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - ""
  resources:
  - configmaps
  - services
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - apps
  resources:
  - daemonsets
  - deployments
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - cbt.storage.k8s.io
  resources:
  - snapshotmetadataservices
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - csi.ceph.io
  resources:
  - cephconnections
  verbs:
  - delete
  - get
  - list
  - update
  - watch
- apiGroups:
  - csi.ceph.io
  resources:
  - clientprofilemappings
  - clientprofiles
  - drivers
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - csi.ceph.io
  resources:
  - clientprofilemappings/finalizers
  - clientprofiles/finalizers
  - drivers/finalizers
  verbs:
  - update
- apiGroups:
  - csi.ceph.io
  resources:
  - clientprofilemappings/status
  - clientprofiles/status
  - drivers/status
  verbs:
  - get
  - patch
  - update
- apiGroups:
  - csi.ceph.io
  resources:
  - operatorconfigs
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - storage.k8s.io
  resources:
  - csidrivers
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/metrics-auth-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-metrics-auth-role
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - authentication.k8s.io
  resources:
  - tokenreviews
  verbs:
  - create
- apiGroups:
  - authorization.k8s.io
  resources:
  - subjectaccessreviews
  verbs:
  - create
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/metrics-reader-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-metrics-reader
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
rules:
- nonResourceURLs:
  - /metrics
  verbs:
  - get
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/nfs-ctrlplugin-cr-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-nfs-ctrlplugin-cr
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - ""
  resources:
  - persistentvolumes
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - delete
  - patch
- apiGroups:
  - ""
  resources:
  - persistentvolumeclaims
  verbs:
  - get
  - list
  - watch
  - patch
  - update
- apiGroups:
  - storage.k8s.io
  resources:
  - storageclasses
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - events
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
- apiGroups:
  - storage.k8s.io
  resources:
  - csinodes
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - nodes
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
- apiGroups:
  - ""
  resources:
  - secrets
  verbs:
  - get
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotclasses
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotcontents
  verbs:
  - get
  - list
  - watch
  - update
  - patch
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshotcontents/status
  verbs:
  - update
  - patch
- apiGroups:
  - snapshot.storage.k8s.io
  resources:
  - volumesnapshots
  verbs:
  - get
  - list
- apiGroups:
  - ""
  resources:
  - persistentvolumeclaims/status
  verbs:
  - patch
- apiGroups:
  - storage.k8s.io
  resources:
  - volumeattachments
  verbs:
  - get
  - list
  - watch
  - patch
- apiGroups:
  - storage.k8s.io
  resources:
  - volumeattachments/status
  verbs:
  - patch
- apiGroups:
  - storage.k8s.io
  resources:
  - volumeattributesclasses
  verbs:
  - get
  - list
  - watch
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/nfs-nodeplugin-cr-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-nfs-nodeplugin-cr
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - ""
  resources:
  - nodes
  verbs:
  - get
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/nvmeof-ctrlplugin-cr-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-nvmeof-ctrlplugin-cr
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
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:
  - ""
  resources:
  - configmaps
  verbs:
  - get
- apiGroups:
  - ""
  resources:
  - serviceaccounts
  verbs:
  - get
- apiGroups:
  - ""
  resources:
  - serviceaccounts/token
  verbs:
  - create
- apiGroups:
  - authentication.k8s.io
  resources:
  - tokenreviews
  verbs:
  - create
- apiGroups:
  - authorization.k8s.io
  resources:
  - subjectaccessreviews
  verbs:
  - create
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/nvmeof-nodeplugin-cr-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-nvmeof-nodeplugin-cr
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - ""
  resources:
  - secrets
  verbs:
  - get
  - list
- 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
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/operatorconfig-editor-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-operatorconfig-editor-role
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - csi.ceph.io
  resources:
  - operatorconfigs
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - csi.ceph.io
  resources:
  - operatorconfigs/status
  verbs:
  - get
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/operatorconfig-viewer-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-operatorconfig-viewer-role
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - csi.ceph.io
  resources:
  - operatorconfigs
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - csi.ceph.io
  resources:
  - operatorconfigs/status
  verbs:
  - get
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/rbd-ctrlplugin-cr-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-rbd-ctrlplugin-cr
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
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
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/rbd-nodeplugin-cr-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: ceph-csi-rbd-nodeplugin-cr
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
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
---
# Source: rook-ceph/templates/clusterrole.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-system
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
rules:
  # Most resources are represented by a string representation of their name, such as "pods", just as it appears in the URL for the relevant API endpoint.
  # However, some Kubernetes APIs involve a "subresource", such as the logs for a pod. [...]
  # To represent this in an RBAC role, use a slash to delimit the resource and subresource.
  # https://kubernetes.io/docs/reference/access-authn-authz/rbac/#referring-to-resources
  - apiGroups: [""]
    resources: ["pods", "pods/log"]
    verbs: ["get", "list"]
  - apiGroups: [""]
    resources: ["pods/exec"]
    verbs: ["create"]
  - apiGroups: ["csiaddons.openshift.io"]
    resources: ["networkfences"]
    verbs: ["create", "get", "update", "delete", "watch", "list", "deletecollection"]
  - apiGroups: ["apiextensions.k8s.io"]
    resources: ["customresourcedefinitions"]
    verbs: ["get"]
  - apiGroups: ["csi.ceph.io"]
    resources: ["cephconnections"]
    verbs: ["create", "delete", "get", "list","update", "watch"]
  - apiGroups: ["csi.ceph.io"]
    resources: ["clientprofiles"]
    verbs: ["create", "delete", "get", "list", "update", "watch"]
  - apiGroups: ["csi.ceph.io"]
    resources: ["operatorconfigs"]
    verbs: ["create", "delete", "get", "list" ,"update", "watch"]
  - apiGroups: ["csi.ceph.io"]
    resources: ["drivers"]
    verbs: ["create", "delete", "get", "list" ,"update", "watch"]
---
# Source: rook-ceph/templates/clusterrole.yaml
# The cluster role for managing all the cluster-specific resources in a namespace
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-cluster-mgmt
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
rules:
  - apiGroups:
      - ""
      - apps
      - extensions
    resources:
      - secrets
      - pods
      - pods/log
      - services
      - configmaps
      - deployments
      - daemonsets
    verbs:
      - get
      - list
      - watch
      - patch
      - create
      - update
      - delete
---
# Source: rook-ceph/templates/clusterrole.yaml
# The cluster role for managing the Rook CRDs
# Rook watches for its CRDs in all namespaces, so this should be a cluster-scoped role unless the
# operator config `ROOK_CURRENT_NAMESPACE_ONLY=true`.
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-global
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
rules:
  - apiGroups:
      - ""
    resources:
      # Pod access is needed for fencing
      - pods
      # Node access is needed for determining nodes where mons should run
      - nodes
      # Rook watches secrets which it uses to configure access to external resources.
      # e.g., external Ceph cluster or object store
      - secrets
      # Rook watches for changes to the rook-operator-config configmap
      - configmaps
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - ""
      - "discovery.k8s.io"
    resources:
      # Rook creates events for its custom resources
      - events
      # Rook creates PVs and PVCs for OSDs managed by the Rook provisioner
      - persistentvolumes
      - persistentvolumeclaims
      # Rook creates endpoints for mgr and object store access
      - endpoints
      - services
      - endpointslices
      - endpointslices/restricted
    verbs:
      - get
      - list
      - watch
      - patch
      - create
      - update
      - delete
  # controller-runtime records events in events.k8s.io API group
  - apiGroups: ["events.k8s.io"]
    resources: ["events"]
    verbs: ["create", "patch", "update"]
  - apiGroups:
      - storage.k8s.io
    resources:
      - storageclasses
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - batch
    resources:
      - jobs
      - cronjobs
    verbs:
      - get
      - list
      - watch
      - create
      - update
      - delete
      - deletecollection
  # The Rook operator must be able to watch all ceph.rook.io resources to reconcile them.
  - apiGroups: ["ceph.rook.io"]
    resources:
      - cephclients
      - cephclusters
      - cephblockpools
      - cephfilesystems
      - cephnfses
      - cephnvmeofgateways
      - cephobjectstores
      - cephobjectstoreusers
      - cephobjectrealms
      - cephobjectzonegroups
      - cephobjectzones
      - cephbuckettopics
      - cephbucketnotifications
      - cephrbdmirrors
      - cephfilesystemmirrors
      - cephfilesystemsubvolumegroups
      - cephblockpoolradosnamespaces
      - cephcosidrivers
    verbs:
      - get
      - list
      - watch
      # Ideally the update permission is not required, but Rook needs it to add finalizers to resources.
      - update
  # Rook must have update access to status subresources for its custom resources.
  - apiGroups: ["ceph.rook.io"]
    resources:
      - cephclients/status
      - cephclusters/status
      - cephblockpools/status
      - cephfilesystems/status
      - cephnfses/status
      - cephnvmeofgateways/status
      - cephobjectstores/status
      - cephobjectstoreusers/status
      - cephobjectrealms/status
      - cephobjectzonegroups/status
      - cephobjectzones/status
      - cephbuckettopics/status
      - cephbucketnotifications/status
      - cephrbdmirrors/status
      - cephfilesystemmirrors/status
      - cephfilesystemsubvolumegroups/status
      - cephblockpoolradosnamespaces/status
    verbs: ["update"]
  # The "*/finalizers" permission may need to be strictly given for K8s clusters where
  # OwnerReferencesPermissionEnforcement is enabled so that Rook can set blockOwnerDeletion on
  # resources owned by Rook CRs (e.g., a Secret owned by an OSD Deployment). See more:
  # https://kubernetes.io/docs/reference/access-authn-authz/_print/#ownerreferencespermissionenforcement
  - apiGroups: ["ceph.rook.io"]
    resources:
      - cephclients/finalizers
      - cephclusters/finalizers
      - cephblockpools/finalizers
      - cephfilesystems/finalizers
      - cephnfses/finalizers
      - cephnvmeofgateways/finalizers
      - cephobjectstores/finalizers
      - cephobjectstoreusers/finalizers
      - cephobjectrealms/finalizers
      - cephobjectzonegroups/finalizers
      - cephobjectzones/finalizers
      - cephbuckettopics/finalizers
      - cephbucketnotifications/finalizers
      - cephrbdmirrors/finalizers
      - cephfilesystemmirrors/finalizers
      - cephfilesystemsubvolumegroups/finalizers
      - cephblockpoolradosnamespaces/finalizers
    verbs: ["update"]
  - apiGroups:
      - policy
      - apps
      - extensions
    resources:
      # This is for the clusterdisruption controller
      - poddisruptionbudgets
      # This is for both clusterdisruption and nodedrain controllers
      - deployments
      - replicasets
    verbs:
      - get
      - list
      - watch
      - create
      - update
      - delete
      - deletecollection
  - apiGroups:
      - apps
    resources:
      # This is to add osd deployment owner ref on key rotation
      # cron jobs.
      - deployments/finalizers
    verbs:
      - update
  - apiGroups:
      - healthchecking.openshift.io
    resources:
      - machinedisruptionbudgets
    verbs:
      - get
      - list
      - watch
      - create
      - update
      - delete
  - apiGroups:
      - machine.openshift.io
    resources:
      - machines
    verbs:
      - get
      - list
      - watch
      - create
      - update
      - delete
  - apiGroups:
      - storage.k8s.io
    resources:
      - csidrivers
    verbs:
      - create
      - delete
      - get
      - update
  - apiGroups:
      - k8s.cni.cncf.io
    resources:
      - network-attachment-definitions
    verbs:
      - get
---
# Source: rook-ceph/templates/clusterrole.yaml
# Aspects of ceph-mgr that require cluster-wide access
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-mgr-cluster
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
rules:
  - apiGroups:
      - ""
    resources:
      - configmaps
      - nodes
      - persistentvolumes
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - ""
    resources:
      - events
    verbs:
      - create
      - patch
      - list
      - get
      - watch
  - apiGroups: ["events.k8s.io"]
    resources: ["events"]
    verbs: ["create", "patch", "update"]
  - apiGroups:
      - storage.k8s.io
    resources:
      - storageclasses
    verbs:
      - get
      - list
      - watch
---
# Source: rook-ceph/templates/clusterrole.yaml
# Aspects of ceph-mgr that require access to the system namespace
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-mgr-system
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
rules:
  - apiGroups:
      - ""
    resources:
      - configmaps
    verbs:
      - get
      - list
      - watch
---
# Source: rook-ceph/templates/clusterrole.yaml
# Used for provisioning ObjectBuckets (OBs) in response to ObjectBucketClaims (OBCs).
# Note: Rook runs a copy of the lib-bucket-provisioner's OBC controller.
# OBCs can be created in any Kubernetes namespace, so this must be a cluster-scoped role.
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-object-bucket
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
rules:
  - apiGroups: [""]
    resources: ["secrets", "configmaps"]
    verbs:
      # OBC controller creates secrets and configmaps containing information for users about how to
      # connect to object buckets. It deletes them when an OBC is deleted.
      - get
      - create
      - update
      - delete
  - apiGroups: ["storage.k8s.io"]
    resources: ["storageclasses"]
    verbs:
      # OBC controller gets parameters from the OBC's storageclass
      # Rook gets additional parameters from the OBC's storageclass
      - get
  - apiGroups: ["objectbucket.io"]
    resources: ["objectbucketclaims"]
    verbs:
      # OBC controller needs to list/watch OBCs and get latest version of a reconciled OBC
      - list
      - watch
      - get
      # Ideally, update should not be needed, but the OBC controller updates the OBC with bucket
      # information outside of the status subresource
      - update
      # OBC controller does not delete OBCs; users do this
  - apiGroups: ["objectbucket.io"]
    resources: ["objectbuckets"]
    verbs:
      # OBC controller needs to list/watch OBs and get latest version of a reconciled OB
      - list
      - watch
      - get
      # OBC controller creates an OB when an OBC's bucket has been provisioned by Ceph, updates them
      # when an OBC is updated, and deletes them when the OBC is de-provisioned.
      - create
      - update
      - delete
  - apiGroups: ["objectbucket.io"]
    resources: ["objectbucketclaims/status", "objectbuckets/status"]
    verbs:
      # OBC controller updates OBC and OB statuses
      - update
  - apiGroups: ["objectbucket.io"]
    # This does not strictly allow the OBC/OB controllers to update finalizers. That is handled by
    # the direct "update" permissions above. Instead, this allows Rook's controller to create
    # resources which are owned by OBs/OBCs and where blockOwnerDeletion is set.
    resources: ["objectbucketclaims/finalizers", "objectbuckets/finalizers"]
    verbs:
      - update
---
# Source: rook-ceph/templates/clusterrole.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-osd
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
rules:
- apiGroups:
  - ""
  resources:
  - nodes
  verbs:
  - get
  - list
---
# Source: rook-ceph/templates/clusterrole.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: cephfs-csi-nodeplugin
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
rules:
  - apiGroups: [""]
    resources: ["nodes"]
    verbs: ["get"]
  - apiGroups: [""]
    resources: ["secrets"]
    verbs: ["get"]
  - apiGroups: [""]
    resources: ["configmaps"]
    verbs: ["get"]
  - apiGroups: [""]
    resources: ["serviceaccounts"]
    verbs: ["get"]
  - apiGroups: [""]
    resources: ["serviceaccounts/token"]
    verbs: ["create"]
---
# Source: rook-ceph/templates/clusterrole.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: cephfs-external-provisioner-runner
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
rules:
  - apiGroups: [""]
    resources: ["secrets"]
    verbs: ["get", "list"]
  - apiGroups: [""]
    resources: ["configmaps"]
    verbs: ["get"]
  - apiGroups: [""]
    resources: ["nodes"]
    verbs: ["get", "list", "watch"]
  - apiGroups: ["storage.k8s.io"]
    resources: ["csinodes"]
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources: ["persistentvolumes"]
    verbs: ["get", "list", "watch", "create", "update", "delete", "patch"]
  - apiGroups: [""]
    resources: ["persistentvolumeclaims"]
    verbs: ["get", "list", "watch", "patch", "update"]
  - apiGroups: ["storage.k8s.io"]
    resources: ["storageclasses"]
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources: ["events"]
    verbs: ["list", "watch", "create", "update", "patch"]
  - apiGroups: ["events.k8s.io"]
    resources: ["events"]
    verbs: ["create", "patch", "update"]
  - apiGroups: ["storage.k8s.io"]
    resources: ["volumeattachments"]
    verbs: ["get", "list", "watch", "patch"]
  - apiGroups: ["storage.k8s.io"]
    resources: ["volumeattachments/status"]
    verbs: ["patch"]
  - 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: ["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: [""]
    resources: ["serviceaccounts"]
    verbs: ["get"]
  - apiGroups: [""]
    resources: ["serviceaccounts/token"]
    verbs: ["create"]
  - apiGroups: ["authentication.k8s.io"]
    resources: ["tokenreviews"]
    verbs: ["create"]
---
# Source: rook-ceph/templates/clusterrole.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rbd-csi-nodeplugin
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
rules:
  - apiGroups: [""]
    resources: ["secrets"]
    verbs: ["get", "list"]
  - 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"]
---
# Source: rook-ceph/templates/clusterrole.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rbd-external-provisioner-runner
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
rules:
  - apiGroups: [""]
    resources: ["secrets"]
    verbs: ["get", "list", "watch"]
  - apiGroups: [""]
    resources: ["persistentvolumes"]
    verbs: ["get", "list", "watch", "create", "update", "delete", "patch"]
  - 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: ["events.k8s.io"]
    resources: ["events"]
    verbs: ["create", "patch", "update"]
  - 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: ["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: [""]
    resources: ["configmaps"]
    verbs: ["get"]
  - apiGroups: [""]
    resources: ["serviceaccounts"]
    verbs: ["get"]
  - apiGroups: [""]
    resources: ["serviceaccounts/token"]
    verbs: ["create"]
  - apiGroups: [""]
    resources: ["nodes"]
    verbs: ["get", "list", "watch"]
  - apiGroups: ["gateway.networking.k8s.io"]
    resources: ["referencegrants"]
    verbs: ["get", "list", "watch"]
  - 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"]
---
# Source: rook-ceph/templates/clusterrole.yaml
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: objectstorage-provisioner-role
  labels:
    app.kubernetes.io/part-of: container-object-storage-interface
    app.kubernetes.io/component: driver-ceph
    app.kubernetes.io/name: cosi-driver-ceph
rules:
  - apiGroups: ["objectstorage.k8s.io"]
    resources:
      [
        "buckets",
        "bucketaccesses",
        "bucketclaims",
        "bucketaccessclasses",
        "buckets/status",
        "bucketaccesses/status",
        "bucketclaims/status",
        "bucketaccessclasses/status",
      ]
    verbs: ["get", "list", "watch", "update", "create", "delete"]
  - apiGroups: ["coordination.k8s.io"]
    resources: ["leases"]
    verbs: ["get", "watch", "list", "delete", "update", "create"]
  - apiGroups: [""]
    resources: ["secrets", "events"]
    verbs: ["get", "delete", "update", "create"]
  - apiGroups: ["events.k8s.io"]
    resources: ["events"]
    verbs: ["create", "patch", "update"]
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/cephfs-ctrlplugin-crb-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: ceph-csi-cephfs-ctrlplugin-crb
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: 'ceph-csi-cephfs-ctrlplugin-cr'
subjects:
- kind: ServiceAccount
  name: 'ceph-csi-cephfs-ctrlplugin-sa'
  namespace: 'default'
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/cephfs-nodeplugin-crb-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: ceph-csi-cephfs-nodeplugin-crb
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: 'ceph-csi-cephfs-nodeplugin-cr'
subjects:
- kind: ServiceAccount
  name: 'ceph-csi-cephfs-nodeplugin-sa'
  namespace: 'default'
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/manager-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: ceph-csi-manager-rolebinding
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: 'ceph-csi-manager-role'
subjects:
- kind: ServiceAccount
  name: 'ceph-csi-controller-manager'
  namespace: 'default'
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/metrics-auth-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: ceph-csi-metrics-auth-rolebinding
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: 'ceph-csi-metrics-auth-role'
subjects:
- kind: ServiceAccount
  name: 'ceph-csi-controller-manager'
  namespace: 'default'
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/nfs-ctrlplugin-crb-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: ceph-csi-nfs-ctrlplugin-crb
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: 'ceph-csi-nfs-ctrlplugin-cr'
subjects:
- kind: ServiceAccount
  name: 'ceph-csi-nfs-ctrlplugin-sa'
  namespace: 'default'
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/nfs-nodeplugin-crb-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: ceph-csi-nfs-nodeplugin-crb
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: 'ceph-csi-nfs-nodeplugin-cr'
subjects:
- kind: ServiceAccount
  name: 'ceph-csi-nfs-nodeplugin-sa'
  namespace: 'default'
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/nvmeof-ctrlplugin-crb-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: ceph-csi-nvmeof-ctrlplugin-crb
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: 'ceph-csi-nvmeof-ctrlplugin-cr'
subjects:
- kind: ServiceAccount
  name: 'ceph-csi-nvmeof-ctrlplugin-sa'
  namespace: 'default'
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/nvmeof-nodeplugin-crb-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: ceph-csi-nvmeof-nodeplugin-crb
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: 'ceph-csi-nvmeof-nodeplugin-cr'
subjects:
- kind: ServiceAccount
  name: 'ceph-csi-nvmeof-nodeplugin-sa'
  namespace: 'default'
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/rbd-ctrlplugin-crb-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: ceph-csi-rbd-ctrlplugin-crb
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: 'ceph-csi-rbd-ctrlplugin-cr'
subjects:
- kind: ServiceAccount
  name: 'ceph-csi-rbd-ctrlplugin-sa'
  namespace: 'default'
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/rbd-nodeplugin-crb-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: ceph-csi-rbd-nodeplugin-crb
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: 'ceph-csi-rbd-nodeplugin-cr'
subjects:
- kind: ServiceAccount
  name: 'ceph-csi-rbd-nodeplugin-sa'
  namespace: 'default'
---
# Source: rook-ceph/templates/cluster-rbac.yaml
# Allow the ceph mgr to access cluster-wide resources necessary for the mgr modules
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-mgr-cluster
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: rook-ceph-mgr-cluster
subjects:
  - kind: ServiceAccount
    name: rook-ceph-mgr
    namespace: default # namespace:cluster
---
# Source: rook-ceph/templates/cluster-rbac.yaml
# Allow the ceph osd to access cluster-wide resources necessary for determining their topology location
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-osd
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: rook-ceph-osd
subjects:
  - kind: ServiceAccount
    name: rook-ceph-osd
    namespace: default # namespace:cluster
---
# Source: rook-ceph/templates/clusterrolebinding.yaml
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-system
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: rook-ceph-system
subjects:
  - kind: ServiceAccount
    name: rook-ceph-system
    namespace: default # namespace:operator
---
# Source: rook-ceph/templates/clusterrolebinding.yaml
# Grant the rook system daemons cluster-wide access to manage the Rook CRDs, PVCs, and storage classes
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-global
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: rook-ceph-global
subjects:
  - kind: ServiceAccount
    name: rook-ceph-system
    namespace: default # namespace:operator
---
# Source: rook-ceph/templates/clusterrolebinding.yaml
kind: ClusterRoleBinding
# Give Rook-Ceph Operator permissions to provision ObjectBuckets in response to ObjectBucketClaims.
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-object-bucket
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: rook-ceph-object-bucket
subjects:
  - kind: ServiceAccount
    name: rook-ceph-system
    namespace: default # namespace:operator
---
# Source: rook-ceph/templates/clusterrolebinding.yaml
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rbd-csi-nodeplugin
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
subjects:
  - kind: ServiceAccount
    name: rook-csi-rbd-plugin-sa
    namespace: default # namespace:operator
roleRef:
  kind: ClusterRole
  name: rbd-csi-nodeplugin
  apiGroup: rbac.authorization.k8s.io
---
# Source: rook-ceph/templates/clusterrolebinding.yaml
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: cephfs-csi-provisioner-role
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
subjects:
  - kind: ServiceAccount
    name: rook-csi-cephfs-provisioner-sa
    namespace: default # namespace:operator
roleRef:
  kind: ClusterRole
  name: cephfs-external-provisioner-runner
  apiGroup: rbac.authorization.k8s.io
---
# Source: rook-ceph/templates/clusterrolebinding.yaml
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: cephfs-csi-nodeplugin-role
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
subjects:
  - kind: ServiceAccount
    name: rook-csi-cephfs-plugin-sa
    namespace: default # namespace:operator
roleRef:
  kind: ClusterRole
  name: cephfs-csi-nodeplugin
  apiGroup: rbac.authorization.k8s.io
---
# Source: rook-ceph/templates/clusterrolebinding.yaml
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rbd-csi-provisioner-role
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
subjects:
  - kind: ServiceAccount
    name: rook-csi-rbd-provisioner-sa
    namespace: default # namespace:operator
roleRef:
  kind: ClusterRole
  name: rbd-external-provisioner-runner
  apiGroup: rbac.authorization.k8s.io
---
# Source: rook-ceph/templates/clusterrolebinding.yaml
# RBAC for ceph cosi driver service account
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: objectstorage-provisioner-role-binding
  labels:
    app.kubernetes.io/part-of: container-object-storage-interface
    app.kubernetes.io/component: driver-ceph
    app.kubernetes.io/name: cosi-driver-ceph
subjects:
  - kind: ServiceAccount
    name: objectstorage-provisioner
    namespace: default # namespace:operator
roleRef:
  kind: ClusterRole
  name: objectstorage-provisioner-role
  apiGroup: rbac.authorization.k8s.io
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/cephfs-ctrlplugin-r-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: ceph-csi-cephfs-ctrlplugin-r
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
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
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/cephfs-nodeplugin-r-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: ceph-csi-cephfs-nodeplugin-r
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
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
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/leader-election-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: ceph-csi-leader-election-role
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
rules:
- apiGroups:
  - ""
  resources:
  - configmaps
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - coordination.k8s.io
  resources:
  - leases
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - ""
  resources:
  - events
  verbs:
  - create
  - patch
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/nvmeof-ctrlplugin-r-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: ceph-csi-nvmeof-ctrlplugin-r
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
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
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/nvmeof-nodeplugin-r-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: ceph-csi-nvmeof-nodeplugin-r
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
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
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/rbd-ctrlplugin-r-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: ceph-csi-rbd-ctrlplugin-r
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
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
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/rbd-nodeplugin-r-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: ceph-csi-rbd-nodeplugin-r
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
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
---
# Source: rook-ceph/templates/cluster-rbac.yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-osd
  namespace: default # namespace:cluster
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
rules:
  # this is needed for rook's "key-management" CLI to fetch the vault token from the secret when
  # validating the connection details and for key rotation operations.
  - apiGroups: [""]
    resources: ["secrets"]
    verbs: ["get", "update"]
  - apiGroups: [""]
    resources: ["configmaps"]
    verbs: ["get", "list", "watch", "create", "update", "delete"]
  - apiGroups: ["ceph.rook.io"]
    resources: ["cephclusters", "cephclusters/finalizers"]
    verbs: ["get", "list", "create", "update", "delete"]
---
# Source: rook-ceph/templates/cluster-rbac.yaml
# Aspects of ceph-mgr that operate within the cluster's namespace
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-mgr
  namespace: default # namespace:cluster
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
rules:
  - apiGroups:
      - ""
    resources:
      - pods
      - services
      - pods/log
    verbs:
      - get
      - list
      - watch
      - create
      - update
      - delete
  - apiGroups:
      - batch
    resources:
      - jobs
    verbs:
      - get
      - list
      - watch
      - create
      - update
      - delete
  - apiGroups:
      - ceph.rook.io
    resources:
      - cephclients
      - cephclusters
      - cephclusters/finalizers
      - cephblockpools
      - cephfilesystems
      - cephnfses
      - cephnvmeofgateways
      - cephobjectstores
      - cephobjectstoreusers
      - cephobjectrealms
      - cephobjectzonegroups
      - cephobjectzones
      - cephbuckettopics
      - cephbucketnotifications
      - cephrbdmirrors
      - cephfilesystemmirrors
      - cephfilesystemsubvolumegroups
      - cephblockpoolradosnamespaces
      - cephcosidrivers
    verbs:
      - get
      - list
      - watch
      - create
      - update
      - delete
      - patch
  - apiGroups:
      - apps
    resources:
      - deployments/scale
      - deployments
    verbs:
      - patch
      - delete
  - apiGroups:
      - ''
    resources:
      - persistentvolumeclaims
    verbs:
      - delete
---
# Source: rook-ceph/templates/cluster-rbac.yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-cmd-reporter
  namespace: default # namespace:cluster
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
rules:
  - apiGroups:
      - ""
    resources:
      - pods
      - configmaps
    verbs:
      - get
      - list
      - watch
      - create
      - update
      - delete
---
# Source: rook-ceph/templates/cluster-rbac.yaml
# Aspects of ceph osd purge job that require access to the cluster namespace
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-purge-osd
  namespace: default # namespace:cluster
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
rules:
  - apiGroups: [""]
    resources: ["configmaps"]
    verbs: ["get"]
  - apiGroups: ["apps"]
    resources: ["deployments"]
    verbs: ["get", "delete"]
  - apiGroups: ["batch"]
    resources: ["jobs"]
    verbs: ["get", "list", "delete"]
  - apiGroups: [""]
    resources: ["persistentvolumeclaims"]
    verbs: ["get", "update", "delete", "list"]
---
# Source: rook-ceph/templates/role.yaml
# Allow the operator to manage resources in its own namespace
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-system
  namespace: default # namespace:operator
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
rules:
  - apiGroups:
      - ""
    resources:
      - pods
      - configmaps
      - services
    verbs:
      - get
      - list
      - watch
      - patch
      - create
      - update
      - delete
  - apiGroups:
      - apps
      - extensions
    resources:
      - daemonsets
      - statefulsets
      - deployments
    verbs:
      - get
      - list
      - watch
      - create
      - update
      - delete
      - deletecollection
  - apiGroups:
      - batch
    resources:
      - cronjobs
    verbs:
      - delete
  - apiGroups:
      - cert-manager.io
    resources:
      - certificates
      - issuers
    verbs:
      - get
      - create
      - delete
  - apiGroups:
      - multicluster.x-k8s.io
    resources:
      - serviceexports
    verbs:
      - get
      - create
---
# Source: rook-ceph/templates/role.yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: cephfs-external-provisioner-cfg
  namespace: default # namespace:operator
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
rules:
  - apiGroups: ["coordination.k8s.io"]
    resources: ["leases"]
    verbs: ["get", "watch", "list", "delete", "update", "create"]
---
# Source: rook-ceph/templates/role.yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rbd-external-provisioner-cfg
  namespace: default # namespace:operator
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
rules:
  - apiGroups: ["coordination.k8s.io"]
    resources: ["leases"]
    verbs: ["get", "watch", "list", "delete", "update", "create"]
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/cephfs-ctrlplugin-rb-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: ceph-csi-cephfs-ctrlplugin-rb
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: 'ceph-csi-cephfs-ctrlplugin-r'
subjects:
- kind: ServiceAccount
  name: 'ceph-csi-cephfs-ctrlplugin-sa'
  namespace: 'default'
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/cephfs-nodeplugin-rb-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: ceph-csi-cephfs-nodeplugin-rb
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: 'ceph-csi-cephfs-nodeplugin-r'
subjects:
- kind: ServiceAccount
  name: 'ceph-csi-cephfs-nodeplugin-sa'
  namespace: 'default'
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/leader-election-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: ceph-csi-leader-election-rolebinding
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: 'ceph-csi-leader-election-role'
subjects:
- kind: ServiceAccount
  name: 'ceph-csi-controller-manager'
  namespace: 'default'
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/nvmeof-ctrlplugin-rb-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: ceph-csi-nvmeof-ctrlplugin-rb
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: 'ceph-csi-nvmeof-ctrlplugin-r'
subjects:
- kind: ServiceAccount
  name: 'ceph-csi-nvmeof-ctrlplugin-sa'
  namespace: 'default'
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/nvmeof-nodeplugin-rb-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: ceph-csi-nvmeof-nodeplugin-rb
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: 'ceph-csi-nvmeof-nodeplugin-r'
subjects:
- kind: ServiceAccount
  name: 'ceph-csi-nvmeof-nodeplugin-sa'
  namespace: 'default'
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/rbd-ctrlplugin-rb-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: ceph-csi-rbd-ctrlplugin-rb
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: 'ceph-csi-rbd-ctrlplugin-r'
subjects:
- kind: ServiceAccount
  name: 'ceph-csi-rbd-ctrlplugin-sa'
  namespace: 'default'
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/rbd-nodeplugin-rb-rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: ceph-csi-rbd-nodeplugin-rb
  namespace: default
  labels:
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: 'ceph-csi-rbd-nodeplugin-r'
subjects:
- kind: ServiceAccount
  name: 'ceph-csi-rbd-nodeplugin-sa'
  namespace: 'default'
---
# Source: rook-ceph/templates/cluster-rbac.yaml
# Allow the operator to create resources in this cluster's namespace
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-cluster-mgmt
  namespace: default # namespace:cluster
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: rook-ceph-cluster-mgmt
subjects:
  - kind: ServiceAccount
    name: rook-ceph-system
    namespace: default # namespace:operator
---
# Source: rook-ceph/templates/cluster-rbac.yaml
# Allow the osd pods in this namespace to work with configmaps
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-osd
  namespace: default # namespace:cluster
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: rook-ceph-osd
subjects:
  - kind: ServiceAccount
    name: rook-ceph-osd
    namespace: default # namespace:cluster
---
# Source: rook-ceph/templates/cluster-rbac.yaml
# Allow the ceph mgr to access resources scoped to the CephCluster namespace necessary for mgr modules
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-mgr
  namespace: default # namespace:cluster
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: rook-ceph-mgr
subjects:
  - kind: ServiceAccount
    name: rook-ceph-mgr
    namespace: default # namespace:cluster
---
# Source: rook-ceph/templates/cluster-rbac.yaml
# Allow the ceph mgr to access resources in the Rook operator namespace necessary for mgr modules
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-mgr-system
  namespace: default # namespace:operator
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: rook-ceph-mgr-system
subjects:
  - kind: ServiceAccount
    name: rook-ceph-mgr
    namespace: default # namespace:cluster
---
# Source: rook-ceph/templates/cluster-rbac.yaml
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-cmd-reporter
  namespace: default # namespace:cluster
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: rook-ceph-cmd-reporter
subjects:
  - kind: ServiceAccount
    name: rook-ceph-cmd-reporter
    namespace: default # namespace:cluster
---
# Source: rook-ceph/templates/cluster-rbac.yaml
# Allow the osd purge job to run in this namespace
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-purge-osd
  namespace: default # namespace:cluster
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: rook-ceph-purge-osd
subjects:
  - kind: ServiceAccount
    name: rook-ceph-purge-osd
    namespace: default # namespace:cluster
---
# Source: rook-ceph/templates/rolebinding.yaml
# Grant the operator, agent, and discovery agents access to resources in the rook-ceph-system namespace
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rook-ceph-system
  namespace: default # namespace:operator
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: rook-ceph-system
subjects:
  - kind: ServiceAccount
    name: rook-ceph-system
    namespace: default # namespace:operator
---
# Source: rook-ceph/templates/rolebinding.yaml
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: cephfs-csi-provisioner-role-cfg
  namespace: default # namespace:operator
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
subjects:
  - kind: ServiceAccount
    name: rook-csi-cephfs-provisioner-sa
    namespace: default # namespace:operator
roleRef:
  kind: Role
  name: cephfs-external-provisioner-cfg
  apiGroup: rbac.authorization.k8s.io
---
# Source: rook-ceph/templates/rolebinding.yaml
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: rbd-csi-provisioner-role-cfg
  namespace: default # namespace:operator
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
subjects:
  - kind: ServiceAccount
    name: rook-csi-rbd-provisioner-sa
    namespace: default # namespace:operator
roleRef:
  kind: Role
  name: rbd-external-provisioner-cfg
  apiGroup: rbac.authorization.k8s.io
---
# Source: rook-ceph/charts/ceph-csi-operator/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ceph-csi-controller-manager
  namespace: default
  labels:
    control-plane: controller-manager
    helm.sh/chart: ceph-csi-operator-0.6.0
    app.kubernetes.io/name: ceph-csi
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: "v0.6.0"
    app.kubernetes.io/managed-by: Helm
spec:
  replicas: 1
  selector:
    matchLabels:
      control-plane: ceph-csi-op-controller-manager
      app.kubernetes.io/name: ceph-csi
      app.kubernetes.io/instance: rook-ceph
  template:
    metadata:
      labels:
        control-plane: ceph-csi-op-controller-manager
        app.kubernetes.io/name: ceph-csi
        app.kubernetes.io/instance: rook-ceph
      annotations:
        kubectl.kubernetes.io/default-container: manager
    spec:
      containers:
      - args:
        - --leader-elect
        command:
        - /manager
        env:
        - name: OPERATOR_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: CSI_SERVICE_ACCOUNT_PREFIX
          value: "ceph-csi-"
        - name: WATCH_NAMESPACE
          value: ""
        - name: KUBERNETES_CLUSTER_DOMAIN
          value: "cluster.local"
        image: quay.io/cephcsi/ceph-csi-operator:v0.6.0
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8081
          initialDelaySeconds: 15
          periodSeconds: 20
        name: manager
        readinessProbe:
          httpGet:
            path: /readyz
            port: 8081
          initialDelaySeconds: 5
          periodSeconds: 10
        resources:
          limits:
            cpu: 500m
            memory: 128Mi
          requests:
            cpu: 10m
            memory: 64Mi
        securityContext:
          allowPrivilegeEscalation: false
          capabilities:
            drop:
            - ALL
          readOnlyRootFilesystem: true
      imagePullSecrets: []
      securityContext:
        runAsNonRoot: true
      serviceAccountName: ceph-csi-controller-manager
      terminationGracePeriodSeconds: 10
---
# Source: rook-ceph/templates/deployment.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
  name: rook-ceph-operator
  namespace: default # namespace:operator
  labels:
    operator: rook
    storage-backend: ceph
    app.kubernetes.io/name: rook-ceph
    app.kubernetes.io/instance: rook-ceph
    app.kubernetes.io/version: v1.19.5
    app.kubernetes.io/part-of: rook-ceph-operator
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/created-by: helm
    helm.sh/chart: "rook-ceph-v1.19.5"
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rook-ceph-operator
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: rook-ceph-operator
        helm.sh/chart: "rook-ceph-v1.19.5"
    spec:
      tolerations:
        - effect: NoExecute
          key: node.kubernetes.io/unreachable
          operator: Exists
          tolerationSeconds: 5
      containers:
        - name: rook-ceph-operator
          image: "docker.io/rook/ceph:v1.19.5"
          imagePullPolicy: IfNotPresent
          args: ["ceph", "operator"]
          securityContext:
            capabilities:
              drop:
              - ALL
            runAsGroup: 2016
            runAsNonRoot: true
            runAsUser: 2016
          volumeMounts:
            - mountPath: /var/lib/rook
              name: rook-config
            - mountPath: /etc/ceph
              name: default-config-dir
          env:
            - name: ROOK_CURRENT_NAMESPACE_ONLY
              value: "false"
            - name: ROOK_RECONCILE_CONCURRENT_CLUSTERS
              value: "1"
            - name: ROOK_HOSTPATH_REQUIRES_PRIVILEGED
              value: "false"
            - name: ROOK_DISABLE_DEVICE_HOTPLUG
              value: "false"
            - name: ROOK_DISCOVER_DEVICES_INTERVAL
              value: "60m"
            - name: ROOK_UNREACHABLE_NODE_TOLERATION_SECONDS
              value: "5"
            - name: NODE_NAME
              valueFrom:
                fieldRef:
                  fieldPath: spec.nodeName
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
          resources:
            limits:
              memory: 512Mi
            requests:
              cpu: 200m
              memory: 128Mi
      serviceAccountName: rook-ceph-system
      volumes:
        - name: rook-config
          emptyDir: {}
        - name: default-config-dir
          emptyDir: {}
