apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: datadogagents.datadoghq.com
spec:
  group: datadoghq.com
  names:
    kind: DatadogAgent
    listKind: DatadogAgentList
    plural: datadogagents
    shortNames:
    - dd
    singular: datadogagent
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .status.conditions[?(@.type=='Active')].status
      name: active
      type: string
    - jsonPath: .status.agent.status
      name: agent
      type: string
    - jsonPath: .status.clusterAgent.status
      name: cluster-agent
      type: string
    - jsonPath: .status.clusterChecksRunner.status
      name: cluster-checks-runner
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: age
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: DatadogAgent Deployment with Datadog Operator
        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: DatadogAgentSpec defines the desired state of DatadogAgent
            properties:
              agent:
                description: The desired state of the Agent as an extended daemonset
                  Contains the Node Agent configuration and deployment strategy
                properties:
                  additionalAnnotations:
                    additionalProperties:
                      type: string
                    description: AdditionalAnnotations provide annotations that will
                      be added to the Agent Pods.
                    type: object
                  additionalLabels:
                    additionalProperties:
                      type: string
                    description: AdditionalLabels provide labels that will be added
                      to the cluster checks runner Pods.
                    type: object
                  apm:
                    description: Trace Agent configuration
                    properties:
                      enabled:
                        description: 'Enable this to enable APM and tracing, on port
                          8126 ref: https://github.com/DataDog/docker-dd-agent#tracing-from-the-host'
                        type: boolean
                      env:
                        description: 'The Datadog Agent supports many environment
                          variables Ref: https://docs.datadoghq.com/agent/docker/?tab=standard#environment-variables'
                        items:
                          description: EnvVar represents an environment variable present
                            in a Container.
                          properties:
                            name:
                              description: Name of the environment variable. Must
                                be a C_IDENTIFIER.
                              type: string
                            value:
                              description: 'Variable references $(VAR_NAME) are expanded
                                using the previous defined environment variables in
                                the container and any service environment variables.
                                If a variable cannot be resolved, the reference in
                                the input string will be unchanged. The $(VAR_NAME)
                                syntax can be escaped with a double $$, ie: $$(VAR_NAME).
                                Escaped references will never be expanded, regardless
                                of whether the variable exists or not. Defaults to
                                "".'
                              type: string
                            valueFrom:
                              description: Source for the environment variable's value.
                                Cannot be used if value is not empty.
                              properties:
                                configMapKeyRef:
                                  description: Selects a key of a ConfigMap.
                                  properties:
                                    key:
                                      description: The key to select.
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                    optional:
                                      description: Specify whether the ConfigMap or
                                        its key must be defined
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                fieldRef:
                                  description: 'Selects a field of the pod: supports
                                    metadata.name, metadata.namespace, metadata.labels,
                                    metadata.annotations, spec.nodeName, spec.serviceAccountName,
                                    status.hostIP, status.podIP, status.podIPs.'
                                  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
                                resourceFieldRef:
                                  description: 'Selects a resource of the container:
                                    only resources limits and requests (limits.cpu,
                                    limits.memory, limits.ephemeral-storage, requests.cpu,
                                    requests.memory and requests.ephemeral-storage)
                                    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
                                secretKeyRef:
                                  description: Selects a key of a secret in the pod's
                                    namespace
                                  properties:
                                    key:
                                      description: The key of the secret to select
                                        from.  Must be a valid secret key.
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                    optional:
                                      description: Specify whether the Secret or its
                                        key must be defined
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        x-kubernetes-list-type: map
                      hostPort:
                        description: Number of port to expose on the host. If specified,
                          this must be a valid port number, 0 < x < 65536. If HostNetwork
                          is specified, this must match ContainerPort. Most containers
                          do not need this.
                        format: int32
                        type: integer
                      resources:
                        description: 'Datadog APM Agent resource requests and limits
                          Make sure to keep requests and limits equal to keep the
                          pods in the Guaranteed QoS class Ref: http://kubernetes.io/docs/user-guide/compute-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-compute-resources-container/'
                            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.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                            type: object
                        type: object
                    type: object
                  config:
                    description: Agent configuration
                    properties:
                      checksd:
                        description: Checksd configuration allowing to specify custom
                          checks placed under /etc/datadog-agent/checks.d/ See https://docs.datadoghq.com/agent/guide/agent-configuration-files/?tab=agentv6
                          for more details.
                        properties:
                          configMapName:
                            description: ConfigMapName name of a ConfigMap used to
                              mount a directory
                            type: string
                        type: object
                      collectEvents:
                        description: 'nables this to start event collection from the
                          kubernetes API ref: https://docs.datadoghq.com/agent/kubernetes/event_collection/'
                        type: boolean
                      confd:
                        description: Confd configuration allowing to specify config
                          files for custom checks placed under /etc/datadog-agent/conf.d/.
                          See https://docs.datadoghq.com/agent/guide/agent-configuration-files/?tab=agentv6
                          for more details.
                        properties:
                          configMapName:
                            description: ConfigMapName name of a ConfigMap used to
                              mount a directory
                            type: string
                        type: object
                      criSocket:
                        description: Configure the CRI Socket
                        properties:
                          criSocketPath:
                            description: Path to the container runtime socket (if
                              different from Docker) This is supported starting from
                              agent 6.6.0
                            type: string
                          dockerSocketPath:
                            description: Path to the docker runtime socket
                            type: string
                        type: object
                      ddUrl:
                        description: The host of the Datadog intake server to send
                          Agent data to, only set this option if you need the Agent
                          to send data to a custom URL. Overrides the site setting
                          defined in "site".
                        type: string
                      dogstatsd:
                        description: Configure Dogstatsd
                        properties:
                          dogstatsdOriginDetection:
                            description: Enable origin detection for container tagging
                              https://docs.datadoghq.com/developers/dogstatsd/unix_socket/#using-origin-detection-for-container-tagging
                            type: boolean
                          useDogStatsDSocketVolume:
                            description: 'Enable dogstatsd over Unix Domain Socket
                              ref: https://docs.datadoghq.com/developers/dogstatsd/unix_socket/'
                            type: boolean
                        type: object
                      env:
                        description: 'The Datadog Agent supports many environment
                          variables Ref: https://docs.datadoghq.com/agent/docker/?tab=standard#environment-variables'
                        items:
                          description: EnvVar represents an environment variable present
                            in a Container.
                          properties:
                            name:
                              description: Name of the environment variable. Must
                                be a C_IDENTIFIER.
                              type: string
                            value:
                              description: 'Variable references $(VAR_NAME) are expanded
                                using the previous defined environment variables in
                                the container and any service environment variables.
                                If a variable cannot be resolved, the reference in
                                the input string will be unchanged. The $(VAR_NAME)
                                syntax can be escaped with a double $$, ie: $$(VAR_NAME).
                                Escaped references will never be expanded, regardless
                                of whether the variable exists or not. Defaults to
                                "".'
                              type: string
                            valueFrom:
                              description: Source for the environment variable's value.
                                Cannot be used if value is not empty.
                              properties:
                                configMapKeyRef:
                                  description: Selects a key of a ConfigMap.
                                  properties:
                                    key:
                                      description: The key to select.
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                    optional:
                                      description: Specify whether the ConfigMap or
                                        its key must be defined
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                fieldRef:
                                  description: 'Selects a field of the pod: supports
                                    metadata.name, metadata.namespace, metadata.labels,
                                    metadata.annotations, spec.nodeName, spec.serviceAccountName,
                                    status.hostIP, status.podIP, status.podIPs.'
                                  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
                                resourceFieldRef:
                                  description: 'Selects a resource of the container:
                                    only resources limits and requests (limits.cpu,
                                    limits.memory, limits.ephemeral-storage, requests.cpu,
                                    requests.memory and requests.ephemeral-storage)
                                    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
                                secretKeyRef:
                                  description: Selects a key of a secret in the pod's
                                    namespace
                                  properties:
                                    key:
                                      description: The key of the secret to select
                                        from.  Must be a valid secret key.
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                    optional:
                                      description: Specify whether the Secret or its
                                        key must be defined
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        x-kubernetes-list-type: map
                      hostPort:
                        description: Number of port to expose on the host. If specified,
                          this must be a valid port number, 0 < x < 65536. If HostNetwork
                          is specified, this must match ContainerPort. Most containers
                          do not need this.
                        format: int32
                        type: integer
                      leaderElection:
                        description: Enables leader election mechanism for event collection.
                        type: boolean
                      logLevel:
                        description: 'Set logging verbosity, valid log levels are:
                          trace, debug, info, warn, error, critical, and off'
                        type: string
                      podAnnotationsAsTags:
                        additionalProperties:
                          type: string
                        description: 'Provide a mapping of Kubernetes Annotations
                          to Datadog Tags. <KUBERNETES_ANNOTATIONS>: <DATADOG_TAG_KEY>'
                        type: object
                      podLabelsAsTags:
                        additionalProperties:
                          type: string
                        description: 'Provide a mapping of Kubernetes Labels to Datadog
                          Tags. <KUBERNETES_LABEL>: <DATADOG_TAG_KEY>'
                        type: object
                      resources:
                        description: 'Datadog Agent resource requests and limits Make
                          sure to keep requests and limits equal to keep the pods
                          in the Guaranteed QoS class Ref: http://kubernetes.io/docs/user-guide/compute-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-compute-resources-container/'
                            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.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                            type: object
                        type: object
                      securityContext:
                        description: Pod-level SecurityContext
                        properties:
                          fsGroup:
                            description: "A special supplemental group that applies
                              to all containers in a pod. Some volume types allow
                              the Kubelet to change the ownership of that volume to
                              be owned by the pod: \n 1. The owning GID will be the
                              FSGroup 2. The setgid bit is set (new files created
                              in the volume will be owned by FSGroup) 3. The permission
                              bits are OR'd with rw-rw---- \n If unset, the Kubelet
                              will not modify the ownership and permissions of any
                              volume."
                            format: int64
                            type: integer
                          fsGroupChangePolicy:
                            description: 'fsGroupChangePolicy defines behavior of
                              changing ownership and permission of the volume before
                              being exposed inside Pod. This field will only apply
                              to volume types which support fsGroup based ownership(and
                              permissions). It will have no effect on ephemeral volume
                              types such as: secret, configmaps and emptydir. Valid
                              values are "OnRootMismatch" and "Always". If not specified
                              defaults to "Always".'
                            type: string
                          runAsGroup:
                            description: The GID to run the entrypoint of the container
                              process. Uses runtime default if unset. May also be
                              set in SecurityContext.  If set in both SecurityContext
                              and PodSecurityContext, the value specified in SecurityContext
                              takes precedence for that container.
                            format: int64
                            type: integer
                          runAsNonRoot:
                            description: Indicates that the container must run as
                              a non-root user. If true, the Kubelet will validate
                              the image at runtime to ensure that it does not run
                              as UID 0 (root) and fail to start the container if it
                              does. If unset or false, no such validation will be
                              performed. May also be set in SecurityContext.  If set
                              in both SecurityContext and PodSecurityContext, the
                              value specified in SecurityContext takes precedence.
                            type: boolean
                          runAsUser:
                            description: The UID to run the entrypoint of the container
                              process. Defaults to user specified in image metadata
                              if unspecified. May also be set in SecurityContext.  If
                              set in both SecurityContext and PodSecurityContext,
                              the value specified in SecurityContext takes precedence
                              for that container.
                            format: int64
                            type: integer
                          seLinuxOptions:
                            description: The SELinux context to be applied to all
                              containers. If unspecified, the container runtime will
                              allocate a random SELinux context for each container.  May
                              also be set in SecurityContext.  If set in both SecurityContext
                              and PodSecurityContext, the value specified in SecurityContext
                              takes precedence for that container.
                            properties:
                              level:
                                description: Level is SELinux level label that applies
                                  to the container.
                                type: string
                              role:
                                description: Role is a SELinux role label that applies
                                  to the container.
                                type: string
                              type:
                                description: Type is a SELinux type label that applies
                                  to the container.
                                type: string
                              user:
                                description: User is a SELinux user label that applies
                                  to the container.
                                type: string
                            type: object
                          supplementalGroups:
                            description: A list of groups applied to the first process
                              run in each container, in addition to the container's
                              primary GID.  If unspecified, no groups will be added
                              to any container.
                            items:
                              format: int64
                              type: integer
                            type: array
                          sysctls:
                            description: Sysctls hold a list of namespaced sysctls
                              used for the pod. Pods with unsupported sysctls (by
                              the container runtime) might fail to launch.
                            items:
                              description: Sysctl defines a kernel parameter to be
                                set
                              properties:
                                name:
                                  description: Name of a property to set
                                  type: string
                                value:
                                  description: Value of a property to set
                                  type: string
                              required:
                              - name
                              - value
                              type: object
                            type: array
                          windowsOptions:
                            description: The Windows specific settings applied to
                              all containers. If unspecified, the options within a
                              container's SecurityContext will be used. If set in
                              both SecurityContext and PodSecurityContext, the value
                              specified in SecurityContext takes precedence.
                            properties:
                              gmsaCredentialSpec:
                                description: GMSACredentialSpec is where the GMSA
                                  admission webhook (https://github.com/kubernetes-sigs/windows-gmsa)
                                  inlines the contents of the GMSA credential spec
                                  named by the GMSACredentialSpecName field.
                                type: string
                              gmsaCredentialSpecName:
                                description: GMSACredentialSpecName is the name of
                                  the GMSA credential spec to use.
                                type: string
                              runAsUserName:
                                description: The UserName in Windows to run the entrypoint
                                  of the container process. Defaults to the user specified
                                  in image metadata if unspecified. May also be set
                                  in PodSecurityContext. If set in both SecurityContext
                                  and PodSecurityContext, the value specified in SecurityContext
                                  takes precedence.
                                type: string
                            type: object
                        type: object
                      tags:
                        description: 'List of tags to attach to every metric, event
                          and service check collected by this Agent. Learn more about
                          tagging: https://docs.datadoghq.com/tagging/'
                        items:
                          type: string
                        type: array
                        x-kubernetes-list-type: set
                      tolerations:
                        description: If specified, the Agent pod's tolerations.
                        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 and Equal.
                                Defaults to Equal. Exists is equivalent to wildcard
                                for value, so that a pod can tolerate all taints of
                                a particular category.
                              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
                        x-kubernetes-list-type: atomic
                      volumeMounts:
                        description: Specify additional volume mounts in the Datadog
                          Agent container
                        items:
                          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.
                              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
                            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
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        - mountPath
                        x-kubernetes-list-type: map
                      volumes:
                        description: Specify additional volumes in the Datadog Agent
                          container
                        items:
                          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. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
                              properties:
                                fsType:
                                  description: '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
                                    TODO: how do we prevent errors in the filesystem
                                    from compromising the machine'
                                  type: string
                                partition:
                                  description: '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: 'Specify "true" to force and set the
                                    ReadOnly property in VolumeMounts to "true". If
                                    omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
                                  type: boolean
                                volumeID:
                                  description: '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.
                              properties:
                                cachingMode:
                                  description: 'Host Caching mode: None, Read Only,
                                    Read Write.'
                                  type: string
                                diskName:
                                  description: The Name of the data disk in the blob
                                    storage
                                  type: string
                                diskURI:
                                  description: The URI the data disk in the blob storage
                                  type: string
                                fsType:
                                  description: 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: 'Expected values 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:
                                  description: 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.
                              properties:
                                readOnly:
                                  description: Defaults to false (read/write). ReadOnly
                                    here will force the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                secretName:
                                  description: the name of secret that contains Azure
                                    Storage Account Name and Key
                                  type: string
                                shareName:
                                  description: 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
                              properties:
                                monitors:
                                  description: '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
                                path:
                                  description: 'Optional: Used as the mounted root,
                                    rather than the full Ceph tree, default is /'
                                  type: string
                                readOnly:
                                  description: '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: '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: '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:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                user:
                                  description: '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. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
                              properties:
                                fsType:
                                  description: '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: 'Optional: 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: 'Optional: points to a secret object
                                    containing parameters used to connect to OpenStack.'
                                  properties:
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                volumeID:
                                  description: 'volume id 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: 'Optional: mode bits to use on created
                                    files by default. Must be a value between 0 and
                                    0777. 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: 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: The key to project.
                                        type: string
                                      mode:
                                        description: 'Optional: mode bits to use on
                                          this file, must be a value between 0 and
                                          0777. 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: 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
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    TODO: Add other useful fields. apiVersion, kind,
                                    uid?'
                                  type: string
                                optional:
                                  description: Specify whether the ConfigMap or its
                                    keys must be defined
                                  type: boolean
                              type: object
                            csi:
                              description: CSI (Container Storage Interface) represents
                                storage that is handled by an external CSI driver
                                (Alpha feature).
                              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: Filesystem type 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:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                readOnly:
                                  description: 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 value between 0 and
                                    0777. 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
                                          and namespace 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
                                      mode:
                                        description: 'Optional: mode bits to use on
                                          this file, must be a value between 0 and
                                          0777. 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
                                    required:
                                    - path
                                    type: object
                                  type: array
                              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: '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: '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: http://kubernetes.io/docs/user-guide/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
                            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: '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. TODO: how
                                    do we prevent errors in the filesystem from compromising
                                    the machine'
                                  type: string
                                lun:
                                  description: 'Optional: FC target lun number'
                                  format: int32
                                  type: integer
                                readOnly:
                                  description: 'Optional: Defaults to false (read/write).
                                    ReadOnly here will force the ReadOnly setting
                                    in VolumeMounts.'
                                  type: boolean
                                targetWWNs:
                                  description: 'Optional: FC target worldwide names
                                    (WWNs)'
                                  items:
                                    type: string
                                  type: array
                                wwids:
                                  description: '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
                              type: object
                            flexVolume:
                              description: FlexVolume represents a generic volume
                                resource that is provisioned/attached using an exec
                                based plugin.
                              properties:
                                driver:
                                  description: Driver is the name of the driver to
                                    use for this volume.
                                  type: string
                                fsType:
                                  description: 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: 'Optional: Extra command options if
                                    any.'
                                  type: object
                                readOnly:
                                  description: 'Optional: Defaults to false (read/write).
                                    ReadOnly here will force the ReadOnly setting
                                    in VolumeMounts.'
                                  type: boolean
                                secretRef:
                                  description: '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:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                              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
                              properties:
                                datasetName:
                                  description: Name of the dataset stored as metadata
                                    -> name on the dataset for Flocker should be considered
                                    as deprecated
                                  type: string
                                datasetUUID:
                                  description: 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. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
                              properties:
                                fsType:
                                  description: '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
                                    TODO: how do we prevent errors in the filesystem
                                    from compromising the machine'
                                  type: string
                                partition:
                                  description: '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: '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: 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 URL
                                  type: string
                                revision:
                                  description: 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. More info:
                                https://examples.k8s.io/volumes/glusterfs/README.md'
                              properties:
                                endpoints:
                                  description: 'EndpointsName is the endpoint name
                                    that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
                                  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
                                --- TODO(jonesdl) We need to restrict who can use
                                host directory mounts and who can/can not mount host
                                directories as read/write.'
                              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
                            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://examples.k8s.io/volumes/iscsi/README.md'
                              properties:
                                chapAuthDiscovery:
                                  description: whether support iSCSI Discovery CHAP
                                    authentication
                                  type: boolean
                                chapAuthSession:
                                  description: whether support iSCSI Session CHAP
                                    authentication
                                  type: boolean
                                fsType:
                                  description: '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
                                    TODO: how do we prevent errors in the filesystem
                                    from compromising the machine'
                                  type: string
                                initiatorName:
                                  description: 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: Target iSCSI Qualified Name.
                                  type: string
                                iscsiInterface:
                                  description: iSCSI Interface Name that uses an iSCSI
                                    transport. Defaults to 'default' (tcp).
                                  type: string
                                lun:
                                  description: iSCSI Target Lun number.
                                  format: int32
                                  type: integer
                                portals:
                                  description: 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
                                readOnly:
                                  description: ReadOnly here will force the ReadOnly
                                    setting in VolumeMounts. Defaults to false.
                                  type: boolean
                                secretRef:
                                  description: CHAP Secret for iSCSI target and initiator
                                    authentication
                                  properties:
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                targetPortal:
                                  description: 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: 'Volume''s name. 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: 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
                              properties:
                                fsType:
                                  description: 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: 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
                              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: 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: Items for all in one resources secrets,
                                configmaps, and downward API
                              properties:
                                defaultMode:
                                  description: Mode bits to use on created files by
                                    default. Must be a value between 0 and 0777. 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: list of volume projections
                                  items:
                                    description: Projection that may be projected
                                      along with other supported volume types
                                    properties:
                                      configMap:
                                        description: information about the configMap
                                          data to project
                                        properties:
                                          items:
                                            description: 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: The key to project.
                                                  type: string
                                                mode:
                                                  description: 'Optional: mode bits
                                                    to use on this file, must be a
                                                    value between 0 and 0777. 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: 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
                                          name:
                                            description: 'Name of the referent. More
                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                              TODO: Add other useful fields. apiVersion,
                                              kind, uid?'
                                            type: string
                                          optional:
                                            description: Specify whether the ConfigMap
                                              or its keys must be defined
                                            type: boolean
                                        type: object
                                      downwardAPI:
                                        description: 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 and namespace 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
                                                mode:
                                                  description: 'Optional: mode bits
                                                    to use on this file, must be a
                                                    value between 0 and 0777. 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
                                              required:
                                              - path
                                              type: object
                                            type: array
                                        type: object
                                      secret:
                                        description: information about the secret
                                          data to project
                                        properties:
                                          items:
                                            description: 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: The key to project.
                                                  type: string
                                                mode:
                                                  description: 'Optional: mode bits
                                                    to use on this file, must be a
                                                    value between 0 and 0777. 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: 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
                                          name:
                                            description: 'Name of the referent. More
                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                              TODO: Add other useful fields. apiVersion,
                                              kind, uid?'
                                            type: string
                                          optional:
                                            description: Specify whether the Secret
                                              or its key must be defined
                                            type: boolean
                                        type: object
                                      serviceAccountToken:
                                        description: 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
                              required:
                              - sources
                              type: object
                            quobyte:
                              description: Quobyte represents a Quobyte mount on the
                                host that shares a pod's lifetime
                              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. More info:
                                https://examples.k8s.io/volumes/rbd/README.md'
                              properties:
                                fsType:
                                  description: '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
                                    TODO: how do we prevent errors in the filesystem
                                    from compromising the machine'
                                  type: string
                                image:
                                  description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                                  type: string
                                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: 'A collection of Ceph monitors. More
                                    info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                                  items:
                                    type: string
                                  type: array
                                pool:
                                  description: '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:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                user:
                                  description: '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.
                              properties:
                                fsType:
                                  description: 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: The host address of the ScaleIO API
                                    Gateway.
                                  type: string
                                protectionDomain:
                                  description: The name of the ScaleIO Protection
                                    Domain for the configured storage.
                                  type: string
                                readOnly:
                                  description: 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:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                sslEnabled:
                                  description: Flag to enable/disable SSL communication
                                    with Gateway, default false
                                  type: boolean
                                storageMode:
                                  description: Indicates whether the storage for a
                                    volume should be ThickProvisioned or ThinProvisioned.
                                    Default is ThinProvisioned.
                                  type: string
                                storagePool:
                                  description: The ScaleIO Storage Pool associated
                                    with the protection domain.
                                  type: string
                                system:
                                  description: The name of the storage system as configured
                                    in ScaleIO.
                                  type: string
                                volumeName:
                                  description: 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: 'Optional: mode bits to use on created
                                    files by default. Must be a value between 0 and
                                    0777. 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: 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: The key to project.
                                        type: string
                                      mode:
                                        description: 'Optional: mode bits to use on
                                          this file, must be a value between 0 and
                                          0777. 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: 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
                                optional:
                                  description: Specify whether the Secret or its keys
                                    must be defined
                                  type: boolean
                                secretName:
                                  description: '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.
                              properties:
                                fsType:
                                  description: 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: 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:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                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
                              properties:
                                fsType:
                                  description: 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: Storage Policy Based Management (SPBM)
                                    profile ID associated with the StoragePolicyName.
                                  type: string
                                storagePolicyName:
                                  description: Storage Policy Based Management (SPBM)
                                    profile name.
                                  type: string
                                volumePath:
                                  description: Path that identifies vSphere volume
                                    vmdk
                                  type: string
                              required:
                              - volumePath
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        x-kubernetes-list-type: map
                    type: object
                  customConfig:
                    description: Allow to put custom configuration for the agent,
                      corresponding to the datadog.yaml config file See https://docs.datadoghq.com/agent/guide/agent-configuration-files/?tab=agentv6
                      for more details.
                    properties:
                      configData:
                        description: ConfigData corresponds to the configuration file
                          content
                        type: string
                      configMap:
                        description: ConfigMap name of a ConfigMap used to mount the
                          configuration file
                        properties:
                          fileKey:
                            description: FileKey corresponds to the key used in the
                              ConfigMap.Data to store the configuration file content
                            type: string
                          name:
                            description: Name the ConfigMap name
                            type: string
                        type: object
                    type: object
                  daemonsetName:
                    description: Name of the Daemonset to create or migrate from
                    type: string
                  deploymentStrategy:
                    description: Update strategy configuration for the DaemonSet
                    properties:
                      canary:
                        description: Configure the canary deployment configuration
                          using ExtendedDaemonSet
                        properties:
                          duration:
                            type: string
                          paused:
                            type: boolean
                          replicas:
                            anyOf:
                            - type: integer
                            - type: string
                            x-kubernetes-int-or-string: true
                        type: object
                      reconcileFrequency:
                        description: The reconcile frequency of the ExtendDaemonSet
                        type: string
                      rollingUpdate:
                        description: Configure the rolling updater strategy of the
                          DaemonSet or the ExtendedDaemonSet
                        properties:
                          maxParallelPodCreation:
                            description: The maxium number of pods created in parallel.
                              Default value is 250.
                            format: int32
                            type: integer
                          maxPodSchedulerFailure:
                            anyOf:
                            - type: integer
                            - type: string
                            description: 'MaxPodSchedulerFailure the maxinum number
                              of not scheduled on its Node due to a scheduler failure:
                              resource constraints. 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'
                            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. Default value is 1.'
                            x-kubernetes-int-or-string: true
                          slowStartAdditiveIncrease:
                            anyOf:
                            - type: integer
                            - type: string
                            description: 'SlowStartAdditiveIncrease 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%).
                              Default value is 5.'
                            x-kubernetes-int-or-string: true
                          slowStartIntervalDuration:
                            description: SlowStartIntervalDuration the duration between
                              to 2 Default value is 1min.
                            type: string
                        type: object
                      updateStrategyType:
                        description: The update strategy used for the DaemonSet
                        type: string
                    type: object
                  dnsConfig:
                    description: Specifies the DNS parameters of a pod. Parameters
                      specified here will be merged to the generated DNS configuration
                      based on DNSPolicy.
                    properties:
                      nameservers:
                        description: A list of DNS name server IP addresses. This
                          will be appended to the base nameservers generated from
                          DNSPolicy. Duplicated nameservers will be removed.
                        items:
                          type: string
                        type: array
                      options:
                        description: A list of DNS resolver options. This will be
                          merged with the base options generated from DNSPolicy. Duplicated
                          entries will be removed. Resolution options given in Options
                          will override those that appear in the base DNSPolicy.
                        items:
                          description: PodDNSConfigOption defines DNS resolver options
                            of a pod.
                          properties:
                            name:
                              description: Required.
                              type: string
                            value:
                              type: string
                          type: object
                        type: array
                      searches:
                        description: A list of DNS search domains for host-name lookup.
                          This will be appended to the base search paths generated
                          from DNSPolicy. Duplicated search paths will be removed.
                        items:
                          type: string
                        type: array
                    type: object
                  dnsPolicy:
                    description: Set DNS policy for the pod. Defaults to "ClusterFirst".
                      Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst',
                      'Default' or 'None'. DNS parameters given in DNSConfig will
                      be merged with the policy selected with DNSPolicy. To have DNS
                      options set along with hostNetwork, you have to specify DNS
                      policy explicitly to 'ClusterFirstWithHostNet'.
                    type: string
                  env:
                    description: 'Environment variables for all Datadog Agents Ref:
                      https://docs.datadoghq.com/agent/docker/?tab=standard#environment-variables'
                    items:
                      description: EnvVar represents an environment variable present
                        in a Container.
                      properties:
                        name:
                          description: Name of the environment variable. Must be a
                            C_IDENTIFIER.
                          type: string
                        value:
                          description: 'Variable references $(VAR_NAME) are expanded
                            using the previous defined environment variables in the
                            container and any service environment variables. If a
                            variable cannot be resolved, the reference in the input
                            string will be unchanged. The $(VAR_NAME) syntax can be
                            escaped with a double $$, ie: $$(VAR_NAME). Escaped references
                            will never be expanded, regardless of whether the variable
                            exists or not. Defaults to "".'
                          type: string
                        valueFrom:
                          description: Source for the environment variable's value.
                            Cannot be used if value is not empty.
                          properties:
                            configMapKeyRef:
                              description: Selects a key of a ConfigMap.
                              properties:
                                key:
                                  description: The key to select.
                                  type: string
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    TODO: Add other useful fields. apiVersion, kind,
                                    uid?'
                                  type: string
                                optional:
                                  description: Specify whether the ConfigMap or its
                                    key must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                            fieldRef:
                              description: 'Selects a field of the pod: supports metadata.name,
                                metadata.namespace, metadata.labels, metadata.annotations,
                                spec.nodeName, spec.serviceAccountName, status.hostIP,
                                status.podIP, status.podIPs.'
                              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
                            resourceFieldRef:
                              description: 'Selects a resource of the container: only
                                resources limits and requests (limits.cpu, limits.memory,
                                limits.ephemeral-storage, requests.cpu, requests.memory
                                and requests.ephemeral-storage) 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
                            secretKeyRef:
                              description: Selects a key of a secret in the pod's
                                namespace
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    TODO: Add other useful fields. apiVersion, kind,
                                    uid?'
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                          type: object
                      required:
                      - name
                      type: object
                    type: array
                    x-kubernetes-list-map-keys:
                    - name
                    x-kubernetes-list-type: map
                  hostNetwork:
                    description: Host networking requested for this pod. Use the host's
                      network namespace. If this option is set, the ports that will
                      be used must be specified. Default to false.
                    type: boolean
                  hostPID:
                    description: 'Use the host''s pid namespace. Optional: Default
                      to false.'
                    type: boolean
                  image:
                    description: The container image of the Datadog Agent
                    properties:
                      name:
                        description: Define the image to use Use "datadog/agent:latest"
                          for Datadog Agent 6 Use "datadog/dogstatsd:latest" for Standalone
                          Datadog Agent DogStatsD6 Use "datadog/cluster-agent:latest"
                          for Datadog Cluster Agent
                        type: string
                      pullPolicy:
                        description: The Kubernetes pull policy Use Always, Never
                          or IfNotPresent
                        type: string
                      pullSecrets:
                        description: It is possible to specify docker registry credentials
                          See https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
                        items:
                          description: LocalObjectReference contains enough information
                            to let you locate the referenced object inside the same
                            namespace.
                          properties:
                            name:
                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                TODO: Add other useful fields. apiVersion, kind, uid?'
                              type: string
                          type: object
                        type: array
                    required:
                    - name
                    type: object
                  log:
                    description: Log Agent configuration
                    properties:
                      containerCollectUsingFiles:
                        description: 'Collect logs from files in /var/log/pods instead
                          of using container runtime API. It''s usually the most efficient
                          way of collecting logs. ref: https://docs.datadoghq.com/agent/basic_agent_usage/kubernetes/#log-collection-setup
                          Default: true'
                        type: boolean
                      containerLogsPath:
                        description: 'This to allow log collection from container
                          log path. Set to a different path if not using docker runtime.
                          ref: https://docs.datadoghq.com/agent/kubernetes/daemonset_setup/?tab=k8sfile#create-manifest
                          Default to `/var/lib/docker/containers`'
                        type: string
                      enabled:
                        description: 'Enables this to activate Datadog Agent log collection.
                          ref: https://docs.datadoghq.com/agent/basic_agent_usage/kubernetes/#log-collection-setup'
                        type: boolean
                      logsConfigContainerCollectAll:
                        description: 'Enable this to allow log collection for all
                          containers. ref: https://docs.datadoghq.com/agent/basic_agent_usage/kubernetes/#log-collection-setup'
                        type: boolean
                      openFilesLimit:
                        description: 'Set the maximum number of logs files that the
                          Datadog Agent will tail up to. Increasing this limit can
                          increase resource consumption of the Agent. ref: https://docs.datadoghq.com/agent/basic_agent_usage/kubernetes/#log-collection-setup
                          Default to 100'
                        format: int32
                        type: integer
                      podLogsPath:
                        description: This to allow log collection from pod log path.
                          Default to `/var/log/pods`
                        type: string
                      tempStoragePath:
                        description: This path (always mounted from the host) is used
                          by Datadog Agent to store information about processed log
                          files. If the Datadog Agent is restarted, it allows to start
                          tailing the log files from the right offset Default to `/var/lib/datadog-agent/logs`
                        type: string
                    type: object
                  priorityClassName:
                    description: If specified, indicates the pod's priority. "system-node-critical"
                      and "system-cluster-critical" are two special keywords which
                      indicate the highest priorities with the former being the highest
                      priority. Any other name must be defined by creating a PriorityClass
                      object with that name. If not specified, the pod priority will
                      be default or zero if there is no default.
                    type: string
                  process:
                    description: Process Agent configuration
                    properties:
                      enabled:
                        description: 'Enable this to activate live process monitoring.
                          Note: /etc/passwd is automatically mounted to allow username
                          resolution. ref: https://docs.datadoghq.com/graphing/infrastructure/process/#kubernetes-daemonset'
                        type: boolean
                      env:
                        description: 'The Datadog Agent supports many environment
                          variables Ref: https://docs.datadoghq.com/agent/docker/?tab=standard#environment-variables'
                        items:
                          description: EnvVar represents an environment variable present
                            in a Container.
                          properties:
                            name:
                              description: Name of the environment variable. Must
                                be a C_IDENTIFIER.
                              type: string
                            value:
                              description: 'Variable references $(VAR_NAME) are expanded
                                using the previous defined environment variables in
                                the container and any service environment variables.
                                If a variable cannot be resolved, the reference in
                                the input string will be unchanged. The $(VAR_NAME)
                                syntax can be escaped with a double $$, ie: $$(VAR_NAME).
                                Escaped references will never be expanded, regardless
                                of whether the variable exists or not. Defaults to
                                "".'
                              type: string
                            valueFrom:
                              description: Source for the environment variable's value.
                                Cannot be used if value is not empty.
                              properties:
                                configMapKeyRef:
                                  description: Selects a key of a ConfigMap.
                                  properties:
                                    key:
                                      description: The key to select.
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                    optional:
                                      description: Specify whether the ConfigMap or
                                        its key must be defined
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                fieldRef:
                                  description: 'Selects a field of the pod: supports
                                    metadata.name, metadata.namespace, metadata.labels,
                                    metadata.annotations, spec.nodeName, spec.serviceAccountName,
                                    status.hostIP, status.podIP, status.podIPs.'
                                  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
                                resourceFieldRef:
                                  description: 'Selects a resource of the container:
                                    only resources limits and requests (limits.cpu,
                                    limits.memory, limits.ephemeral-storage, requests.cpu,
                                    requests.memory and requests.ephemeral-storage)
                                    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
                                secretKeyRef:
                                  description: Selects a key of a secret in the pod's
                                    namespace
                                  properties:
                                    key:
                                      description: The key of the secret to select
                                        from.  Must be a valid secret key.
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                    optional:
                                      description: Specify whether the Secret or its
                                        key must be defined
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        x-kubernetes-list-type: map
                      resources:
                        description: 'Datadog Process Agent resource requests and
                          limits Make sure to keep requests and limits equal to keep
                          the pods in the Guaranteed QoS class Ref: http://kubernetes.io/docs/user-guide/compute-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-compute-resources-container/'
                            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.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                            type: object
                        type: object
                    type: object
                  rbac:
                    description: RBAC configuration of the Agent
                    properties:
                      create:
                        description: Used to configure RBAC resources creation
                        type: boolean
                      serviceAccountName:
                        description: Used to set up the service account name to use
                          Ignored if the field Create is true
                        type: string
                    type: object
                  security:
                    description: Security Agent configuration
                    properties:
                      compliance:
                        description: Compliance configuration
                        properties:
                          checkInterval:
                            description: Check interval
                            format: int64
                            type: integer
                          configDir:
                            description: Config dir containing compliance benchmarks
                            properties:
                              configMapName:
                                description: ConfigMapName name of a ConfigMap used
                                  to mount a directory
                                type: string
                            type: object
                          enabled:
                            description: Enables continuous compliance monitoring
                            type: boolean
                        type: object
                      env:
                        description: 'The Datadog Security Agent supports many environment
                          variables Ref: https://docs.datadoghq.com/agent/docker/?tab=standard#environment-variables'
                        items:
                          description: EnvVar represents an environment variable present
                            in a Container.
                          properties:
                            name:
                              description: Name of the environment variable. Must
                                be a C_IDENTIFIER.
                              type: string
                            value:
                              description: 'Variable references $(VAR_NAME) are expanded
                                using the previous defined environment variables in
                                the container and any service environment variables.
                                If a variable cannot be resolved, the reference in
                                the input string will be unchanged. The $(VAR_NAME)
                                syntax can be escaped with a double $$, ie: $$(VAR_NAME).
                                Escaped references will never be expanded, regardless
                                of whether the variable exists or not. Defaults to
                                "".'
                              type: string
                            valueFrom:
                              description: Source for the environment variable's value.
                                Cannot be used if value is not empty.
                              properties:
                                configMapKeyRef:
                                  description: Selects a key of a ConfigMap.
                                  properties:
                                    key:
                                      description: The key to select.
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                    optional:
                                      description: Specify whether the ConfigMap or
                                        its key must be defined
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                fieldRef:
                                  description: 'Selects a field of the pod: supports
                                    metadata.name, metadata.namespace, metadata.labels,
                                    metadata.annotations, spec.nodeName, spec.serviceAccountName,
                                    status.hostIP, status.podIP, status.podIPs.'
                                  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
                                resourceFieldRef:
                                  description: 'Selects a resource of the container:
                                    only resources limits and requests (limits.cpu,
                                    limits.memory, limits.ephemeral-storage, requests.cpu,
                                    requests.memory and requests.ephemeral-storage)
                                    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
                                secretKeyRef:
                                  description: Selects a key of a secret in the pod's
                                    namespace
                                  properties:
                                    key:
                                      description: The key of the secret to select
                                        from.  Must be a valid secret key.
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                    optional:
                                      description: Specify whether the Secret or its
                                        key must be defined
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        x-kubernetes-list-type: map
                      resources:
                        description: 'Datadog Security Agent resource requests and
                          limits Make sure to keep requests and limits equal to keep
                          the pods in the Guaranteed QoS class Ref: http://kubernetes.io/docs/user-guide/compute-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-compute-resources-container/'
                            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.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                            type: object
                        type: object
                      runtime:
                        description: Runtime security configuration
                        properties:
                          enabled:
                            description: Enables runtime security features
                            type: boolean
                          policiesDir:
                            description: ConfigDir containing security policies
                            properties:
                              configMapName:
                                description: ConfigMapName name of a ConfigMap used
                                  to mount a directory
                                type: string
                            type: object
                          syscallMonitor:
                            description: Syscall monitor configuration
                            properties:
                              enabled:
                                description: Enabled enables syscall monitor
                                type: boolean
                            type: object
                        type: object
                    type: object
                  systemProbe:
                    description: SystemProbe configuration
                    properties:
                      appArmorProfileName:
                        description: AppArmorProfileName specify a apparmor profile
                        type: string
                      bpfDebugEnabled:
                        description: BPFDebugEnabled logging for kernel debug
                        type: boolean
                      collectDNSStats:
                        description: CollectDNSStats enables DNS stat collection
                        type: boolean
                      conntrackEnabled:
                        description: 'ConntrackEnabled enable the system-probe agent
                          to connect to the netlink/conntrack subsystem to add NAT
                          information to connection data Ref: http://conntrack-tools.netfilter.org/'
                        type: boolean
                      debugPort:
                        description: DebugPort Specify the port to expose pprof and
                          expvar for system-probe agent
                        format: int32
                        type: integer
                      enableOOMKill:
                        description: EnableOOMKill enables the OOM kill eBPF-based
                          check
                        type: boolean
                      enableTCPQueueLength:
                        description: EnableTCPQueueLength enables the TCP queue length
                          eBPF-based check
                        type: boolean
                      enabled:
                        description: 'Enable this to activate live process monitoring.
                          Note: /etc/passwd is automatically mounted to allow username
                          resolution. ref: https://docs.datadoghq.com/graphing/infrastructure/process/#kubernetes-daemonset'
                        type: boolean
                      env:
                        description: 'The Datadog SystemProbe supports many environment
                          variables Ref: https://docs.datadoghq.com/agent/docker/?tab=standard#environment-variables'
                        items:
                          description: EnvVar represents an environment variable present
                            in a Container.
                          properties:
                            name:
                              description: Name of the environment variable. Must
                                be a C_IDENTIFIER.
                              type: string
                            value:
                              description: 'Variable references $(VAR_NAME) are expanded
                                using the previous defined environment variables in
                                the container and any service environment variables.
                                If a variable cannot be resolved, the reference in
                                the input string will be unchanged. The $(VAR_NAME)
                                syntax can be escaped with a double $$, ie: $$(VAR_NAME).
                                Escaped references will never be expanded, regardless
                                of whether the variable exists or not. Defaults to
                                "".'
                              type: string
                            valueFrom:
                              description: Source for the environment variable's value.
                                Cannot be used if value is not empty.
                              properties:
                                configMapKeyRef:
                                  description: Selects a key of a ConfigMap.
                                  properties:
                                    key:
                                      description: The key to select.
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                    optional:
                                      description: Specify whether the ConfigMap or
                                        its key must be defined
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                fieldRef:
                                  description: 'Selects a field of the pod: supports
                                    metadata.name, metadata.namespace, metadata.labels,
                                    metadata.annotations, spec.nodeName, spec.serviceAccountName,
                                    status.hostIP, status.podIP, status.podIPs.'
                                  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
                                resourceFieldRef:
                                  description: 'Selects a resource of the container:
                                    only resources limits and requests (limits.cpu,
                                    limits.memory, limits.ephemeral-storage, requests.cpu,
                                    requests.memory and requests.ephemeral-storage)
                                    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
                                secretKeyRef:
                                  description: Selects a key of a secret in the pod's
                                    namespace
                                  properties:
                                    key:
                                      description: The key of the secret to select
                                        from.  Must be a valid secret key.
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                    optional:
                                      description: Specify whether the Secret or its
                                        key must be defined
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        x-kubernetes-list-type: map
                      resources:
                        description: 'Datadog SystemProbe resource requests and limits
                          Make sure to keep requests and limits equal to keep the
                          pods in the Guaranteed QoS class Ref: http://kubernetes.io/docs/user-guide/compute-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-compute-resources-container/'
                            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.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                            type: object
                        type: object
                      secCompCustomProfileConfigMap:
                        description: SecCompCustomProfileConfigMap specify a pre-existing
                          ConfigMap containing a custom SecComp profile
                        type: string
                      secCompProfileName:
                        description: SecCompProfileName specify a seccomp profile
                        type: string
                      secCompRootPath:
                        description: SecCompRootPath specify the seccomp profile root
                          directory
                        type: string
                      securityContext:
                        description: You can modify the security context used to run
                          the containers by modifying the label type
                        properties:
                          allowPrivilegeEscalation:
                            description: 'AllowPrivilegeEscalation controls whether
                              a process can gain more privileges than its parent process.
                              This bool directly controls if the no_new_privs flag
                              will be set on the container process. AllowPrivilegeEscalation
                              is true always when the container is: 1) run as Privileged
                              2) has CAP_SYS_ADMIN'
                            type: boolean
                          capabilities:
                            description: The capabilities to add/drop when running
                              containers. Defaults to the default set of capabilities
                              granted by the container runtime.
                            properties:
                              add:
                                description: Added capabilities
                                items:
                                  description: Capability represent POSIX capabilities
                                    type
                                  type: string
                                type: array
                              drop:
                                description: Removed capabilities
                                items:
                                  description: Capability represent POSIX capabilities
                                    type
                                  type: string
                                type: array
                            type: object
                          privileged:
                            description: Run container in privileged mode. Processes
                              in privileged containers are essentially equivalent
                              to root on the host. Defaults to false.
                            type: boolean
                          procMount:
                            description: procMount denotes the type of proc mount
                              to use for the containers. The default is DefaultProcMount
                              which uses the container runtime defaults for readonly
                              paths and masked paths. This requires the ProcMountType
                              feature flag to be enabled.
                            type: string
                          readOnlyRootFilesystem:
                            description: Whether this container has a read-only root
                              filesystem. Default is false.
                            type: boolean
                          runAsGroup:
                            description: The GID to run the entrypoint of the container
                              process. Uses runtime default if unset. May also be
                              set in PodSecurityContext.  If set in both SecurityContext
                              and PodSecurityContext, the value specified in SecurityContext
                              takes precedence.
                            format: int64
                            type: integer
                          runAsNonRoot:
                            description: Indicates that the container must run as
                              a non-root user. If true, the Kubelet will validate
                              the image at runtime to ensure that it does not run
                              as UID 0 (root) and fail to start the container if it
                              does. If unset or false, no such validation will be
                              performed. May also be set in PodSecurityContext.  If
                              set in both SecurityContext and PodSecurityContext,
                              the value specified in SecurityContext takes precedence.
                            type: boolean
                          runAsUser:
                            description: The UID to run the entrypoint of the container
                              process. Defaults to user specified in image metadata
                              if unspecified. May also be set in PodSecurityContext.  If
                              set in both SecurityContext and PodSecurityContext,
                              the value specified in SecurityContext takes precedence.
                            format: int64
                            type: integer
                          seLinuxOptions:
                            description: The SELinux context to be applied to the
                              container. If unspecified, the container runtime will
                              allocate a random SELinux context for each container.  May
                              also be set in PodSecurityContext.  If set in both SecurityContext
                              and PodSecurityContext, the value specified in SecurityContext
                              takes precedence.
                            properties:
                              level:
                                description: Level is SELinux level label that applies
                                  to the container.
                                type: string
                              role:
                                description: Role is a SELinux role label that applies
                                  to the container.
                                type: string
                              type:
                                description: Type is a SELinux type label that applies
                                  to the container.
                                type: string
                              user:
                                description: User is a SELinux user label that applies
                                  to the container.
                                type: string
                            type: object
                          windowsOptions:
                            description: The Windows specific settings applied to
                              all containers. If unspecified, the options from the
                              PodSecurityContext will be used. If set in both SecurityContext
                              and PodSecurityContext, the value specified in SecurityContext
                              takes precedence.
                            properties:
                              gmsaCredentialSpec:
                                description: GMSACredentialSpec is where the GMSA
                                  admission webhook (https://github.com/kubernetes-sigs/windows-gmsa)
                                  inlines the contents of the GMSA credential spec
                                  named by the GMSACredentialSpecName field.
                                type: string
                              gmsaCredentialSpecName:
                                description: GMSACredentialSpecName is the name of
                                  the GMSA credential spec to use.
                                type: string
                              runAsUserName:
                                description: The UserName in Windows to run the entrypoint
                                  of the container process. Defaults to the user specified
                                  in image metadata if unspecified. May also be set
                                  in PodSecurityContext. If set in both SecurityContext
                                  and PodSecurityContext, the value specified in SecurityContext
                                  takes precedence.
                                type: string
                            type: object
                        type: object
                    type: object
                  useExtendedDaemonset:
                    description: UseExtendedDaemonset use ExtendedDaemonset for Agent
                      deployment. default value is false.
                    type: boolean
                required:
                - image
                type: object
              clusterAgent:
                description: The desired state of the Cluster Agent as a deployment
                properties:
                  additionalAnnotations:
                    additionalProperties:
                      type: string
                    description: AdditionalAnnotations provide annotations that will
                      be added to the cluster-agent Pods.
                    type: object
                  additionalLabels:
                    additionalProperties:
                      type: string
                    description: AdditionalLabels provide labels that will be added
                      to the cluster checks runner Pods.
                    type: object
                  affinity:
                    description: If specified, the pod's scheduling constraints
                    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
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                    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
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                  type: object
                                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
                          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
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                    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
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                  type: object
                                type: array
                            required:
                            - nodeSelectorTerms
                            type: object
                        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.
                                      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
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                        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
                                    namespaces:
                                      description: namespaces specifies which namespaces
                                        the labelSelector applies to (matches against);
                                        null or empty list means "this pod's namespace"
                                      items:
                                        type: string
                                      type: array
                                    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
                          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.
                                  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
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                    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
                                namespaces:
                                  description: namespaces specifies which namespaces
                                    the labelSelector applies to (matches against);
                                    null or empty list means "this pod's namespace"
                                  items:
                                    type: string
                                  type: array
                                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
                        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 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.
                                      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
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                        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
                                    namespaces:
                                      description: namespaces specifies which namespaces
                                        the labelSelector applies to (matches against);
                                        null or empty list means "this pod's namespace"
                                      items:
                                        type: string
                                      type: array
                                    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
                          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.
                                  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
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                    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
                                namespaces:
                                  description: namespaces specifies which namespaces
                                    the labelSelector applies to (matches against);
                                    null or empty list means "this pod's namespace"
                                  items:
                                    type: string
                                  type: array
                                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
                        type: object
                    type: object
                  config:
                    description: Cluster Agent configuration
                    properties:
                      admissionController:
                        description: Configure the Admission Controller
                        properties:
                          enabled:
                            description: Enable the admission controller to be able
                              to inject APM/Dogstatsd config and standard tags (env,
                              service, version) automatically into your pods
                            type: boolean
                          mutateUnlabelled:
                            description: MutateUnlabelled enables injecting config
                              without having the pod label 'admission.datadoghq.com/enabled="true"'
                            type: boolean
                          serviceName:
                            description: ServiceName corresponds to the webhook service
                              name
                            type: string
                        type: object
                      clusterChecksEnabled:
                        description: 'Enable the Cluster Checks and Endpoint Checks
                          feature on both the cluster-agents and the daemonset ref:
                          https://docs.datadoghq.com/agent/cluster_agent/clusterchecks/
                          https://docs.datadoghq.com/agent/cluster_agent/endpointschecks/
                          Autodiscovery via Kube Service annotations is automatically
                          enabled'
                        type: boolean
                      confd:
                        description: Confd Provide additional cluster check configurations.
                          Each key will become a file in /conf.d see https://docs.datadoghq.com/agent/autodiscovery/
                          for more details.
                        properties:
                          configMapName:
                            description: ConfigMapName name of a ConfigMap used to
                              mount a directory
                            type: string
                        type: object
                      env:
                        description: 'The Datadog Agent supports many environment
                          variables Ref: https://docs.datadoghq.com/agent/docker/?tab=standard#environment-variables'
                        items:
                          description: EnvVar represents an environment variable present
                            in a Container.
                          properties:
                            name:
                              description: Name of the environment variable. Must
                                be a C_IDENTIFIER.
                              type: string
                            value:
                              description: 'Variable references $(VAR_NAME) are expanded
                                using the previous defined environment variables in
                                the container and any service environment variables.
                                If a variable cannot be resolved, the reference in
                                the input string will be unchanged. The $(VAR_NAME)
                                syntax can be escaped with a double $$, ie: $$(VAR_NAME).
                                Escaped references will never be expanded, regardless
                                of whether the variable exists or not. Defaults to
                                "".'
                              type: string
                            valueFrom:
                              description: Source for the environment variable's value.
                                Cannot be used if value is not empty.
                              properties:
                                configMapKeyRef:
                                  description: Selects a key of a ConfigMap.
                                  properties:
                                    key:
                                      description: The key to select.
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                    optional:
                                      description: Specify whether the ConfigMap or
                                        its key must be defined
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                fieldRef:
                                  description: 'Selects a field of the pod: supports
                                    metadata.name, metadata.namespace, metadata.labels,
                                    metadata.annotations, spec.nodeName, spec.serviceAccountName,
                                    status.hostIP, status.podIP, status.podIPs.'
                                  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
                                resourceFieldRef:
                                  description: 'Selects a resource of the container:
                                    only resources limits and requests (limits.cpu,
                                    limits.memory, limits.ephemeral-storage, requests.cpu,
                                    requests.memory and requests.ephemeral-storage)
                                    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
                                secretKeyRef:
                                  description: Selects a key of a secret in the pod's
                                    namespace
                                  properties:
                                    key:
                                      description: The key of the secret to select
                                        from.  Must be a valid secret key.
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                    optional:
                                      description: Specify whether the Secret or its
                                        key must be defined
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        x-kubernetes-list-type: map
                      externalMetrics:
                        description: ExternalMetricsConfig contains the configuration
                          of the external metrics provider in Cluster Agent
                        properties:
                          enabled:
                            description: Enable the metricsProvider to be able to
                              scale based on metrics in Datadog
                            type: boolean
                          port:
                            description: If specified configures the metricsProvider
                              external metrics service port
                            format: int32
                            type: integer
                          useDatadogMetrics:
                            description: Enable usage of DatadogMetrics CRD (allow
                              to scale on arbitrary queries)
                            type: boolean
                          wpaController:
                            description: 'Enable informer and controller of the watermark
                              pod autoscaler NOTE: The WatermarkPodAutoscaler controller
                              needs to be installed see https://github.com/DataDog/watermarkpodautoscaler
                              for more details.'
                            type: boolean
                        type: object
                      logLevel:
                        description: 'Set logging verbosity, valid log levels are:
                          trace, debug, info, warn, error, critical, and off'
                        type: string
                      resources:
                        description: Datadog cluster-agent resource requests and limits
                        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-compute-resources-container/'
                            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.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                            type: object
                        type: object
                      volumeMounts:
                        description: Specify additional volume mounts in the Datadog
                          Cluster Agent container
                        items:
                          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.
                              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
                            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
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        - mountPath
                        x-kubernetes-list-type: map
                      volumes:
                        description: Specify additional volumes in the Datadog Cluster
                          Agent container
                        items:
                          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. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
                              properties:
                                fsType:
                                  description: '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
                                    TODO: how do we prevent errors in the filesystem
                                    from compromising the machine'
                                  type: string
                                partition:
                                  description: '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: 'Specify "true" to force and set the
                                    ReadOnly property in VolumeMounts to "true". If
                                    omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
                                  type: boolean
                                volumeID:
                                  description: '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.
                              properties:
                                cachingMode:
                                  description: 'Host Caching mode: None, Read Only,
                                    Read Write.'
                                  type: string
                                diskName:
                                  description: The Name of the data disk in the blob
                                    storage
                                  type: string
                                diskURI:
                                  description: The URI the data disk in the blob storage
                                  type: string
                                fsType:
                                  description: 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: 'Expected values 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:
                                  description: 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.
                              properties:
                                readOnly:
                                  description: Defaults to false (read/write). ReadOnly
                                    here will force the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                secretName:
                                  description: the name of secret that contains Azure
                                    Storage Account Name and Key
                                  type: string
                                shareName:
                                  description: 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
                              properties:
                                monitors:
                                  description: '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
                                path:
                                  description: 'Optional: Used as the mounted root,
                                    rather than the full Ceph tree, default is /'
                                  type: string
                                readOnly:
                                  description: '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: '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: '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:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                user:
                                  description: '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. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
                              properties:
                                fsType:
                                  description: '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: 'Optional: 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: 'Optional: points to a secret object
                                    containing parameters used to connect to OpenStack.'
                                  properties:
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                volumeID:
                                  description: 'volume id 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: 'Optional: mode bits to use on created
                                    files by default. Must be a value between 0 and
                                    0777. 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: 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: The key to project.
                                        type: string
                                      mode:
                                        description: 'Optional: mode bits to use on
                                          this file, must be a value between 0 and
                                          0777. 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: 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
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    TODO: Add other useful fields. apiVersion, kind,
                                    uid?'
                                  type: string
                                optional:
                                  description: Specify whether the ConfigMap or its
                                    keys must be defined
                                  type: boolean
                              type: object
                            csi:
                              description: CSI (Container Storage Interface) represents
                                storage that is handled by an external CSI driver
                                (Alpha feature).
                              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: Filesystem type 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:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                readOnly:
                                  description: 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 value between 0 and
                                    0777. 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
                                          and namespace 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
                                      mode:
                                        description: 'Optional: mode bits to use on
                                          this file, must be a value between 0 and
                                          0777. 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
                                    required:
                                    - path
                                    type: object
                                  type: array
                              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: '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: '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: http://kubernetes.io/docs/user-guide/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
                            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: '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. TODO: how
                                    do we prevent errors in the filesystem from compromising
                                    the machine'
                                  type: string
                                lun:
                                  description: 'Optional: FC target lun number'
                                  format: int32
                                  type: integer
                                readOnly:
                                  description: 'Optional: Defaults to false (read/write).
                                    ReadOnly here will force the ReadOnly setting
                                    in VolumeMounts.'
                                  type: boolean
                                targetWWNs:
                                  description: 'Optional: FC target worldwide names
                                    (WWNs)'
                                  items:
                                    type: string
                                  type: array
                                wwids:
                                  description: '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
                              type: object
                            flexVolume:
                              description: FlexVolume represents a generic volume
                                resource that is provisioned/attached using an exec
                                based plugin.
                              properties:
                                driver:
                                  description: Driver is the name of the driver to
                                    use for this volume.
                                  type: string
                                fsType:
                                  description: 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: 'Optional: Extra command options if
                                    any.'
                                  type: object
                                readOnly:
                                  description: 'Optional: Defaults to false (read/write).
                                    ReadOnly here will force the ReadOnly setting
                                    in VolumeMounts.'
                                  type: boolean
                                secretRef:
                                  description: '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:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                              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
                              properties:
                                datasetName:
                                  description: Name of the dataset stored as metadata
                                    -> name on the dataset for Flocker should be considered
                                    as deprecated
                                  type: string
                                datasetUUID:
                                  description: 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. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
                              properties:
                                fsType:
                                  description: '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
                                    TODO: how do we prevent errors in the filesystem
                                    from compromising the machine'
                                  type: string
                                partition:
                                  description: '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: '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: 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 URL
                                  type: string
                                revision:
                                  description: 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. More info:
                                https://examples.k8s.io/volumes/glusterfs/README.md'
                              properties:
                                endpoints:
                                  description: 'EndpointsName is the endpoint name
                                    that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
                                  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
                                --- TODO(jonesdl) We need to restrict who can use
                                host directory mounts and who can/can not mount host
                                directories as read/write.'
                              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
                            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://examples.k8s.io/volumes/iscsi/README.md'
                              properties:
                                chapAuthDiscovery:
                                  description: whether support iSCSI Discovery CHAP
                                    authentication
                                  type: boolean
                                chapAuthSession:
                                  description: whether support iSCSI Session CHAP
                                    authentication
                                  type: boolean
                                fsType:
                                  description: '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
                                    TODO: how do we prevent errors in the filesystem
                                    from compromising the machine'
                                  type: string
                                initiatorName:
                                  description: 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: Target iSCSI Qualified Name.
                                  type: string
                                iscsiInterface:
                                  description: iSCSI Interface Name that uses an iSCSI
                                    transport. Defaults to 'default' (tcp).
                                  type: string
                                lun:
                                  description: iSCSI Target Lun number.
                                  format: int32
                                  type: integer
                                portals:
                                  description: 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
                                readOnly:
                                  description: ReadOnly here will force the ReadOnly
                                    setting in VolumeMounts. Defaults to false.
                                  type: boolean
                                secretRef:
                                  description: CHAP Secret for iSCSI target and initiator
                                    authentication
                                  properties:
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                targetPortal:
                                  description: 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: 'Volume''s name. 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: 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
                              properties:
                                fsType:
                                  description: 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: 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
                              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: 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: Items for all in one resources secrets,
                                configmaps, and downward API
                              properties:
                                defaultMode:
                                  description: Mode bits to use on created files by
                                    default. Must be a value between 0 and 0777. 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: list of volume projections
                                  items:
                                    description: Projection that may be projected
                                      along with other supported volume types
                                    properties:
                                      configMap:
                                        description: information about the configMap
                                          data to project
                                        properties:
                                          items:
                                            description: 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: The key to project.
                                                  type: string
                                                mode:
                                                  description: 'Optional: mode bits
                                                    to use on this file, must be a
                                                    value between 0 and 0777. 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: 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
                                          name:
                                            description: 'Name of the referent. More
                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                              TODO: Add other useful fields. apiVersion,
                                              kind, uid?'
                                            type: string
                                          optional:
                                            description: Specify whether the ConfigMap
                                              or its keys must be defined
                                            type: boolean
                                        type: object
                                      downwardAPI:
                                        description: 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 and namespace 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
                                                mode:
                                                  description: 'Optional: mode bits
                                                    to use on this file, must be a
                                                    value between 0 and 0777. 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
                                              required:
                                              - path
                                              type: object
                                            type: array
                                        type: object
                                      secret:
                                        description: information about the secret
                                          data to project
                                        properties:
                                          items:
                                            description: 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: The key to project.
                                                  type: string
                                                mode:
                                                  description: 'Optional: mode bits
                                                    to use on this file, must be a
                                                    value between 0 and 0777. 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: 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
                                          name:
                                            description: 'Name of the referent. More
                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                              TODO: Add other useful fields. apiVersion,
                                              kind, uid?'
                                            type: string
                                          optional:
                                            description: Specify whether the Secret
                                              or its key must be defined
                                            type: boolean
                                        type: object
                                      serviceAccountToken:
                                        description: 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
                              required:
                              - sources
                              type: object
                            quobyte:
                              description: Quobyte represents a Quobyte mount on the
                                host that shares a pod's lifetime
                              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. More info:
                                https://examples.k8s.io/volumes/rbd/README.md'
                              properties:
                                fsType:
                                  description: '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
                                    TODO: how do we prevent errors in the filesystem
                                    from compromising the machine'
                                  type: string
                                image:
                                  description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                                  type: string
                                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: 'A collection of Ceph monitors. More
                                    info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                                  items:
                                    type: string
                                  type: array
                                pool:
                                  description: '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:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                user:
                                  description: '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.
                              properties:
                                fsType:
                                  description: 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: The host address of the ScaleIO API
                                    Gateway.
                                  type: string
                                protectionDomain:
                                  description: The name of the ScaleIO Protection
                                    Domain for the configured storage.
                                  type: string
                                readOnly:
                                  description: 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:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                sslEnabled:
                                  description: Flag to enable/disable SSL communication
                                    with Gateway, default false
                                  type: boolean
                                storageMode:
                                  description: Indicates whether the storage for a
                                    volume should be ThickProvisioned or ThinProvisioned.
                                    Default is ThinProvisioned.
                                  type: string
                                storagePool:
                                  description: The ScaleIO Storage Pool associated
                                    with the protection domain.
                                  type: string
                                system:
                                  description: The name of the storage system as configured
                                    in ScaleIO.
                                  type: string
                                volumeName:
                                  description: 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: 'Optional: mode bits to use on created
                                    files by default. Must be a value between 0 and
                                    0777. 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: 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: The key to project.
                                        type: string
                                      mode:
                                        description: 'Optional: mode bits to use on
                                          this file, must be a value between 0 and
                                          0777. 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: 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
                                optional:
                                  description: Specify whether the Secret or its keys
                                    must be defined
                                  type: boolean
                                secretName:
                                  description: '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.
                              properties:
                                fsType:
                                  description: 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: 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:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                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
                              properties:
                                fsType:
                                  description: 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: Storage Policy Based Management (SPBM)
                                    profile ID associated with the StoragePolicyName.
                                  type: string
                                storagePolicyName:
                                  description: Storage Policy Based Management (SPBM)
                                    profile name.
                                  type: string
                                volumePath:
                                  description: Path that identifies vSphere volume
                                    vmdk
                                  type: string
                              required:
                              - volumePath
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        x-kubernetes-list-type: map
                    type: object
                  customConfig:
                    description: Allow to put custom configuration for the agent,
                      corresponding to the datadog-cluster.yaml config file
                    properties:
                      configData:
                        description: ConfigData corresponds to the configuration file
                          content
                        type: string
                      configMap:
                        description: ConfigMap name of a ConfigMap used to mount the
                          configuration file
                        properties:
                          fileKey:
                            description: FileKey corresponds to the key used in the
                              ConfigMap.Data to store the configuration file content
                            type: string
                          name:
                            description: Name the ConfigMap name
                            type: string
                        type: object
                    type: object
                  deploymentName:
                    description: Name of the Cluster Agent Deployment to create or
                      migrate from
                    type: string
                  image:
                    description: The container image of the Datadog Cluster Agent
                    properties:
                      name:
                        description: Define the image to use Use "datadog/agent:latest"
                          for Datadog Agent 6 Use "datadog/dogstatsd:latest" for Standalone
                          Datadog Agent DogStatsD6 Use "datadog/cluster-agent:latest"
                          for Datadog Cluster Agent
                        type: string
                      pullPolicy:
                        description: The Kubernetes pull policy Use Always, Never
                          or IfNotPresent
                        type: string
                      pullSecrets:
                        description: It is possible to specify docker registry credentials
                          See https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
                        items:
                          description: LocalObjectReference contains enough information
                            to let you locate the referenced object inside the same
                            namespace.
                          properties:
                            name:
                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                TODO: Add other useful fields. apiVersion, kind, uid?'
                              type: string
                          type: object
                        type: array
                    required:
                    - name
                    type: object
                  nodeSelector:
                    additionalProperties:
                      type: string
                    description: 'NodeSelector is a selector which must be true for
                      the pod to fit on a node. Selector which must match a node''s
                      labels for the pod to be scheduled on that node. More info:
                      https://kubernetes.io/docs/concepts/configuration/assign-pod-node/'
                    type: object
                  priorityClassName:
                    description: If specified, indicates the pod's priority. "system-node-critical"
                      and "system-cluster-critical" are two special keywords which
                      indicate the highest priorities with the former being the highest
                      priority. Any other name must be defined by creating a PriorityClass
                      object with that name. If not specified, the pod priority will
                      be default or zero if there is no default.
                    type: string
                  rbac:
                    description: RBAC configuration of the Datadog Cluster Agent
                    properties:
                      create:
                        description: Used to configure RBAC resources creation
                        type: boolean
                      serviceAccountName:
                        description: Used to set up the service account name to use
                          Ignored if the field Create is true
                        type: string
                    type: object
                  replicas:
                    description: Number of the Cluster Agent replicas
                    format: int32
                    type: integer
                  tolerations:
                    description: If specified, the Cluster-Agent pod's tolerations.
                    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 and Equal. Defaults
                            to Equal. Exists is equivalent to wildcard for value,
                            so that a pod can tolerate all taints of a particular
                            category.
                          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
                    x-kubernetes-list-type: atomic
                required:
                - image
                type: object
              clusterChecksRunner:
                description: The desired state of the Cluster Checks Runner as a deployment
                properties:
                  additionalAnnotations:
                    additionalProperties:
                      type: string
                    description: AdditionalAnnotations provide annotations that will
                      be added to the cluster checks runner Pods.
                    type: object
                  additionalLabels:
                    additionalProperties:
                      type: string
                    description: AdditionalLabels provide labels that will be added
                      to the cluster checks runner Pods.
                    type: object
                  affinity:
                    description: If specified, the pod's scheduling constraints
                    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
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                    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
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                  type: object
                                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
                          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
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                    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
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                  type: object
                                type: array
                            required:
                            - nodeSelectorTerms
                            type: object
                        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.
                                      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
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                        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
                                    namespaces:
                                      description: namespaces specifies which namespaces
                                        the labelSelector applies to (matches against);
                                        null or empty list means "this pod's namespace"
                                      items:
                                        type: string
                                      type: array
                                    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
                          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.
                                  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
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                    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
                                namespaces:
                                  description: namespaces specifies which namespaces
                                    the labelSelector applies to (matches against);
                                    null or empty list means "this pod's namespace"
                                  items:
                                    type: string
                                  type: array
                                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
                        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 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.
                                      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
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                        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
                                    namespaces:
                                      description: namespaces specifies which namespaces
                                        the labelSelector applies to (matches against);
                                        null or empty list means "this pod's namespace"
                                      items:
                                        type: string
                                      type: array
                                    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
                          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.
                                  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
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                    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
                                namespaces:
                                  description: namespaces specifies which namespaces
                                    the labelSelector applies to (matches against);
                                    null or empty list means "this pod's namespace"
                                  items:
                                    type: string
                                  type: array
                                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
                        type: object
                    type: object
                  config:
                    description: Agent configuration
                    properties:
                      env:
                        description: 'The Datadog Agent supports many environment
                          variables Ref: https://docs.datadoghq.com/agent/docker/?tab=standard#environment-variables'
                        items:
                          description: EnvVar represents an environment variable present
                            in a Container.
                          properties:
                            name:
                              description: Name of the environment variable. Must
                                be a C_IDENTIFIER.
                              type: string
                            value:
                              description: 'Variable references $(VAR_NAME) are expanded
                                using the previous defined environment variables in
                                the container and any service environment variables.
                                If a variable cannot be resolved, the reference in
                                the input string will be unchanged. The $(VAR_NAME)
                                syntax can be escaped with a double $$, ie: $$(VAR_NAME).
                                Escaped references will never be expanded, regardless
                                of whether the variable exists or not. Defaults to
                                "".'
                              type: string
                            valueFrom:
                              description: Source for the environment variable's value.
                                Cannot be used if value is not empty.
                              properties:
                                configMapKeyRef:
                                  description: Selects a key of a ConfigMap.
                                  properties:
                                    key:
                                      description: The key to select.
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                    optional:
                                      description: Specify whether the ConfigMap or
                                        its key must be defined
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                fieldRef:
                                  description: 'Selects a field of the pod: supports
                                    metadata.name, metadata.namespace, metadata.labels,
                                    metadata.annotations, spec.nodeName, spec.serviceAccountName,
                                    status.hostIP, status.podIP, status.podIPs.'
                                  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
                                resourceFieldRef:
                                  description: 'Selects a resource of the container:
                                    only resources limits and requests (limits.cpu,
                                    limits.memory, limits.ephemeral-storage, requests.cpu,
                                    requests.memory and requests.ephemeral-storage)
                                    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
                                secretKeyRef:
                                  description: Selects a key of a secret in the pod's
                                    namespace
                                  properties:
                                    key:
                                      description: The key of the secret to select
                                        from.  Must be a valid secret key.
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                    optional:
                                      description: Specify whether the Secret or its
                                        key must be defined
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        x-kubernetes-list-type: map
                      logLevel:
                        description: 'Set logging verbosity, valid log levels are:
                          trace, debug, info, warn, error, critical, and off'
                        type: string
                      resources:
                        description: Datadog Cluster Checks Runner resource requests
                          and limits
                        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-compute-resources-container/'
                            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.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                            type: object
                        type: object
                      volumeMounts:
                        description: Specify additional volume mounts in the Datadog
                          Cluster Check Runner container
                        items:
                          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.
                              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
                            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
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        - mountPath
                        x-kubernetes-list-type: map
                      volumes:
                        description: Specify additional volumes in the Datadog Cluster
                          Check Runner container
                        items:
                          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. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
                              properties:
                                fsType:
                                  description: '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
                                    TODO: how do we prevent errors in the filesystem
                                    from compromising the machine'
                                  type: string
                                partition:
                                  description: '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: 'Specify "true" to force and set the
                                    ReadOnly property in VolumeMounts to "true". If
                                    omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
                                  type: boolean
                                volumeID:
                                  description: '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.
                              properties:
                                cachingMode:
                                  description: 'Host Caching mode: None, Read Only,
                                    Read Write.'
                                  type: string
                                diskName:
                                  description: The Name of the data disk in the blob
                                    storage
                                  type: string
                                diskURI:
                                  description: The URI the data disk in the blob storage
                                  type: string
                                fsType:
                                  description: 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: 'Expected values 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:
                                  description: 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.
                              properties:
                                readOnly:
                                  description: Defaults to false (read/write). ReadOnly
                                    here will force the ReadOnly setting in VolumeMounts.
                                  type: boolean
                                secretName:
                                  description: the name of secret that contains Azure
                                    Storage Account Name and Key
                                  type: string
                                shareName:
                                  description: 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
                              properties:
                                monitors:
                                  description: '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
                                path:
                                  description: 'Optional: Used as the mounted root,
                                    rather than the full Ceph tree, default is /'
                                  type: string
                                readOnly:
                                  description: '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: '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: '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:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                user:
                                  description: '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. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
                              properties:
                                fsType:
                                  description: '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: 'Optional: 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: 'Optional: points to a secret object
                                    containing parameters used to connect to OpenStack.'
                                  properties:
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                volumeID:
                                  description: 'volume id 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: 'Optional: mode bits to use on created
                                    files by default. Must be a value between 0 and
                                    0777. 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: 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: The key to project.
                                        type: string
                                      mode:
                                        description: 'Optional: mode bits to use on
                                          this file, must be a value between 0 and
                                          0777. 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: 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
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    TODO: Add other useful fields. apiVersion, kind,
                                    uid?'
                                  type: string
                                optional:
                                  description: Specify whether the ConfigMap or its
                                    keys must be defined
                                  type: boolean
                              type: object
                            csi:
                              description: CSI (Container Storage Interface) represents
                                storage that is handled by an external CSI driver
                                (Alpha feature).
                              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: Filesystem type 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:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                readOnly:
                                  description: 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 value between 0 and
                                    0777. 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
                                          and namespace 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
                                      mode:
                                        description: 'Optional: mode bits to use on
                                          this file, must be a value between 0 and
                                          0777. 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
                                    required:
                                    - path
                                    type: object
                                  type: array
                              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: '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: '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: http://kubernetes.io/docs/user-guide/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
                            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: '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. TODO: how
                                    do we prevent errors in the filesystem from compromising
                                    the machine'
                                  type: string
                                lun:
                                  description: 'Optional: FC target lun number'
                                  format: int32
                                  type: integer
                                readOnly:
                                  description: 'Optional: Defaults to false (read/write).
                                    ReadOnly here will force the ReadOnly setting
                                    in VolumeMounts.'
                                  type: boolean
                                targetWWNs:
                                  description: 'Optional: FC target worldwide names
                                    (WWNs)'
                                  items:
                                    type: string
                                  type: array
                                wwids:
                                  description: '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
                              type: object
                            flexVolume:
                              description: FlexVolume represents a generic volume
                                resource that is provisioned/attached using an exec
                                based plugin.
                              properties:
                                driver:
                                  description: Driver is the name of the driver to
                                    use for this volume.
                                  type: string
                                fsType:
                                  description: 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: 'Optional: Extra command options if
                                    any.'
                                  type: object
                                readOnly:
                                  description: 'Optional: Defaults to false (read/write).
                                    ReadOnly here will force the ReadOnly setting
                                    in VolumeMounts.'
                                  type: boolean
                                secretRef:
                                  description: '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:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                              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
                              properties:
                                datasetName:
                                  description: Name of the dataset stored as metadata
                                    -> name on the dataset for Flocker should be considered
                                    as deprecated
                                  type: string
                                datasetUUID:
                                  description: 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. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
                              properties:
                                fsType:
                                  description: '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
                                    TODO: how do we prevent errors in the filesystem
                                    from compromising the machine'
                                  type: string
                                partition:
                                  description: '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: '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: 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 URL
                                  type: string
                                revision:
                                  description: 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. More info:
                                https://examples.k8s.io/volumes/glusterfs/README.md'
                              properties:
                                endpoints:
                                  description: 'EndpointsName is the endpoint name
                                    that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
                                  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
                                --- TODO(jonesdl) We need to restrict who can use
                                host directory mounts and who can/can not mount host
                                directories as read/write.'
                              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
                            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://examples.k8s.io/volumes/iscsi/README.md'
                              properties:
                                chapAuthDiscovery:
                                  description: whether support iSCSI Discovery CHAP
                                    authentication
                                  type: boolean
                                chapAuthSession:
                                  description: whether support iSCSI Session CHAP
                                    authentication
                                  type: boolean
                                fsType:
                                  description: '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
                                    TODO: how do we prevent errors in the filesystem
                                    from compromising the machine'
                                  type: string
                                initiatorName:
                                  description: 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: Target iSCSI Qualified Name.
                                  type: string
                                iscsiInterface:
                                  description: iSCSI Interface Name that uses an iSCSI
                                    transport. Defaults to 'default' (tcp).
                                  type: string
                                lun:
                                  description: iSCSI Target Lun number.
                                  format: int32
                                  type: integer
                                portals:
                                  description: 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
                                readOnly:
                                  description: ReadOnly here will force the ReadOnly
                                    setting in VolumeMounts. Defaults to false.
                                  type: boolean
                                secretRef:
                                  description: CHAP Secret for iSCSI target and initiator
                                    authentication
                                  properties:
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                targetPortal:
                                  description: 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: 'Volume''s name. 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: 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
                              properties:
                                fsType:
                                  description: 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: 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
                              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: 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: Items for all in one resources secrets,
                                configmaps, and downward API
                              properties:
                                defaultMode:
                                  description: Mode bits to use on created files by
                                    default. Must be a value between 0 and 0777. 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: list of volume projections
                                  items:
                                    description: Projection that may be projected
                                      along with other supported volume types
                                    properties:
                                      configMap:
                                        description: information about the configMap
                                          data to project
                                        properties:
                                          items:
                                            description: 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: The key to project.
                                                  type: string
                                                mode:
                                                  description: 'Optional: mode bits
                                                    to use on this file, must be a
                                                    value between 0 and 0777. 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: 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
                                          name:
                                            description: 'Name of the referent. More
                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                              TODO: Add other useful fields. apiVersion,
                                              kind, uid?'
                                            type: string
                                          optional:
                                            description: Specify whether the ConfigMap
                                              or its keys must be defined
                                            type: boolean
                                        type: object
                                      downwardAPI:
                                        description: 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 and namespace 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
                                                mode:
                                                  description: 'Optional: mode bits
                                                    to use on this file, must be a
                                                    value between 0 and 0777. 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
                                              required:
                                              - path
                                              type: object
                                            type: array
                                        type: object
                                      secret:
                                        description: information about the secret
                                          data to project
                                        properties:
                                          items:
                                            description: 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: The key to project.
                                                  type: string
                                                mode:
                                                  description: 'Optional: mode bits
                                                    to use on this file, must be a
                                                    value between 0 and 0777. 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: 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
                                          name:
                                            description: 'Name of the referent. More
                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                              TODO: Add other useful fields. apiVersion,
                                              kind, uid?'
                                            type: string
                                          optional:
                                            description: Specify whether the Secret
                                              or its key must be defined
                                            type: boolean
                                        type: object
                                      serviceAccountToken:
                                        description: 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
                              required:
                              - sources
                              type: object
                            quobyte:
                              description: Quobyte represents a Quobyte mount on the
                                host that shares a pod's lifetime
                              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. More info:
                                https://examples.k8s.io/volumes/rbd/README.md'
                              properties:
                                fsType:
                                  description: '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
                                    TODO: how do we prevent errors in the filesystem
                                    from compromising the machine'
                                  type: string
                                image:
                                  description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                                  type: string
                                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: 'A collection of Ceph monitors. More
                                    info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                                  items:
                                    type: string
                                  type: array
                                pool:
                                  description: '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:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                user:
                                  description: '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.
                              properties:
                                fsType:
                                  description: 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: The host address of the ScaleIO API
                                    Gateway.
                                  type: string
                                protectionDomain:
                                  description: The name of the ScaleIO Protection
                                    Domain for the configured storage.
                                  type: string
                                readOnly:
                                  description: 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:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                sslEnabled:
                                  description: Flag to enable/disable SSL communication
                                    with Gateway, default false
                                  type: boolean
                                storageMode:
                                  description: Indicates whether the storage for a
                                    volume should be ThickProvisioned or ThinProvisioned.
                                    Default is ThinProvisioned.
                                  type: string
                                storagePool:
                                  description: The ScaleIO Storage Pool associated
                                    with the protection domain.
                                  type: string
                                system:
                                  description: The name of the storage system as configured
                                    in ScaleIO.
                                  type: string
                                volumeName:
                                  description: 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: 'Optional: mode bits to use on created
                                    files by default. Must be a value between 0 and
                                    0777. 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: 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: The key to project.
                                        type: string
                                      mode:
                                        description: 'Optional: mode bits to use on
                                          this file, must be a value between 0 and
                                          0777. 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: 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
                                optional:
                                  description: Specify whether the Secret or its keys
                                    must be defined
                                  type: boolean
                                secretName:
                                  description: '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.
                              properties:
                                fsType:
                                  description: 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: 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:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields. apiVersion,
                                        kind, uid?'
                                      type: string
                                  type: object
                                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
                              properties:
                                fsType:
                                  description: 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: Storage Policy Based Management (SPBM)
                                    profile ID associated with the StoragePolicyName.
                                  type: string
                                storagePolicyName:
                                  description: Storage Policy Based Management (SPBM)
                                    profile name.
                                  type: string
                                volumePath:
                                  description: Path that identifies vSphere volume
                                    vmdk
                                  type: string
                              required:
                              - volumePath
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        x-kubernetes-list-type: map
                    type: object
                  customConfig:
                    description: Allow to put custom configuration for the agent,
                      corresponding to the datadog.yaml config file See https://docs.datadoghq.com/agent/guide/agent-configuration-files/?tab=agentv6
                      for more details.
                    properties:
                      configData:
                        description: ConfigData corresponds to the configuration file
                          content
                        type: string
                      configMap:
                        description: ConfigMap name of a ConfigMap used to mount the
                          configuration file
                        properties:
                          fileKey:
                            description: FileKey corresponds to the key used in the
                              ConfigMap.Data to store the configuration file content
                            type: string
                          name:
                            description: Name the ConfigMap name
                            type: string
                        type: object
                    type: object
                  deploymentName:
                    description: Name of the cluster checks deployment to create or
                      migrate from
                    type: string
                  image:
                    description: The container image of the Datadog Cluster Checks
                      Runner
                    properties:
                      name:
                        description: Define the image to use Use "datadog/agent:latest"
                          for Datadog Agent 6 Use "datadog/dogstatsd:latest" for Standalone
                          Datadog Agent DogStatsD6 Use "datadog/cluster-agent:latest"
                          for Datadog Cluster Agent
                        type: string
                      pullPolicy:
                        description: The Kubernetes pull policy Use Always, Never
                          or IfNotPresent
                        type: string
                      pullSecrets:
                        description: It is possible to specify docker registry credentials
                          See https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
                        items:
                          description: LocalObjectReference contains enough information
                            to let you locate the referenced object inside the same
                            namespace.
                          properties:
                            name:
                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                TODO: Add other useful fields. apiVersion, kind, uid?'
                              type: string
                          type: object
                        type: array
                    required:
                    - name
                    type: object
                  nodeSelector:
                    additionalProperties:
                      type: string
                    description: 'NodeSelector is a selector which must be true for
                      the pod to fit on a node. Selector which must match a node''s
                      labels for the pod to be scheduled on that node. More info:
                      https://kubernetes.io/docs/concepts/configuration/assign-pod-node/'
                    type: object
                  priorityClassName:
                    description: If specified, indicates the pod's priority. "system-node-critical"
                      and "system-cluster-critical" are two special keywords which
                      indicate the highest priorities with the former being the highest
                      priority. Any other name must be defined by creating a PriorityClass
                      object with that name. If not specified, the pod priority will
                      be default or zero if there is no default.
                    type: string
                  rbac:
                    description: RBAC configuration of the Datadog Cluster Checks
                      Runner
                    properties:
                      create:
                        description: Used to configure RBAC resources creation
                        type: boolean
                      serviceAccountName:
                        description: Used to set up the service account name to use
                          Ignored if the field Create is true
                        type: string
                    type: object
                  replicas:
                    description: Number of the Cluster Agent replicas
                    format: int32
                    type: integer
                  tolerations:
                    description: If specified, the Cluster-Checks pod's tolerations.
                    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 and Equal. Defaults
                            to Equal. Exists is equivalent to wildcard for value,
                            so that a pod can tolerate all taints of a particular
                            category.
                          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
                    x-kubernetes-list-type: atomic
                required:
                - image
                type: object
              clusterName:
                description: Set a unique cluster name to allow scoping hosts and
                  Cluster Checks Runner easily
                type: string
              credentials:
                description: Configure the credentials required to run Agents
                properties:
                  apiKey:
                    description: 'APIKey Set this to your Datadog API key before the
                      Agent runs. ref: https://app.datadoghq.com/account/settings#agent/kubernetes'
                    type: string
                  apiKeyExistingSecret:
                    description: APIKeyExistingSecret is DEPRECATED. In order to pass
                      the API key through an existing secret, please consider "apiSecret"
                      instead. If set, this parameter takes precedence over "apiKey".
                    type: string
                  apiSecret:
                    description: APISecret Use existing Secret which stores API key
                      instead of creating a new one. If set, this parameter takes
                      precedence over "apiKey" and "apiKeyExistingSecret".
                    properties:
                      keyName:
                        description: KeyName is the key of the secret to use
                        type: string
                      secretName:
                        description: SecretName is the name of the secret
                        type: string
                    required:
                    - secretName
                    type: object
                  appKey:
                    description: If you are using clusterAgent.metricsProvider.enabled
                      = true, you must set a Datadog application key for read access
                      to your metrics.
                    type: string
                  appKeyExistingSecret:
                    description: AppKeyExistingSecret is DEPRECATED. In order to pass
                      the APP key through an existing secret, please consider "appSecret"
                      instead. If set, this parameter takes precedence over "appKey".
                    type: string
                  appSecret:
                    description: APPSecret Use existing Secret which stores API key
                      instead of creating a new one. If set, this parameter takes
                      precedence over "apiKey" and "appKeyExistingSecret".
                    properties:
                      keyName:
                        description: KeyName is the key of the secret to use
                        type: string
                      secretName:
                        description: SecretName is the name of the secret
                        type: string
                    required:
                    - secretName
                    type: object
                  token:
                    description: This needs to be at least 32 characters a-zA-z It
                      is a preshared key between the node agents and the cluster agent
                    type: string
                  useSecretBackend:
                    description: 'UseSecretBackend use the Agent secret backend feature
                      for retreiving all credentials needed by the different components:
                      Agent, Cluster, Cluster-Checks. If `useSecretBackend: true`,
                      other credential parameters will be ignored. default value is
                      false.'
                    type: boolean
                type: object
              site:
                description: The site of the Datadog intake to send Agent data to.
                  Set to 'datadoghq.eu' to send data to the EU site.
                type: string
            required:
            - credentials
            type: object
          status:
            description: DatadogAgentStatus defines the observed state of DatadogAgent
            properties:
              agent:
                description: The actual state of the Agent as an extended daemonset
                properties:
                  available:
                    format: int32
                    type: integer
                  current:
                    format: int32
                    type: integer
                  currentHash:
                    type: string
                  daemonsetName:
                    description: DaemonsetName corresponds to the name of the created
                      DaemonSet
                    type: string
                  desired:
                    format: int32
                    type: integer
                  lastUpdate:
                    format: date-time
                    type: string
                  ready:
                    format: int32
                    type: integer
                  state:
                    type: string
                  status:
                    type: string
                  upToDate:
                    format: int32
                    type: integer
                required:
                - available
                - current
                - desired
                - ready
                - upToDate
                type: object
              clusterAgent:
                description: The actual state of the Cluster Agent as a deployment
                properties:
                  availableReplicas:
                    description: Total number of available pods (ready for at least
                      minReadySeconds) targeted by this deployment.
                    format: int32
                    type: integer
                  currentHash:
                    type: string
                  deploymentName:
                    description: DeploymentName corresponds to the name of the Cluster
                      Agent Deployment
                    type: string
                  generatedToken:
                    description: GeneratedToken corresponds to the generated token
                      if any token was provided in the Credential configuration when
                      ClusterAgent is enabled
                    type: string
                  lastUpdate:
                    format: date-time
                    type: string
                  readyReplicas:
                    description: Total number of ready pods targeted by this deployment.
                    format: int32
                    type: integer
                  replicas:
                    description: Total number of non-terminated pods targeted by this
                      deployment (their labels match the selector).
                    format: int32
                    type: integer
                  state:
                    description: State corresponds to the ClusterAgent deployment
                      state
                    type: string
                  status:
                    description: Status corresponds to the ClusterAgent deployment
                      computed status
                    type: string
                  unavailableReplicas:
                    description: Total number of unavailable pods targeted by this
                      deployment. This is the total number of pods that are still
                      required for the deployment to have 100% available capacity.
                      They may either be pods that are running but not yet available
                      or pods that still have not been created.
                    format: int32
                    type: integer
                  updatedReplicas:
                    description: Total number of non-terminated pods targeted by this
                      deployment that have the desired template spec.
                    format: int32
                    type: integer
                type: object
              clusterChecksRunner:
                description: The actual state of the Cluster Checks Runner as a deployment
                properties:
                  availableReplicas:
                    description: Total number of available pods (ready for at least
                      minReadySeconds) targeted by this deployment.
                    format: int32
                    type: integer
                  currentHash:
                    type: string
                  deploymentName:
                    description: DeploymentName corresponds to the name of the Cluster
                      Agent Deployment
                    type: string
                  generatedToken:
                    description: GeneratedToken corresponds to the generated token
                      if any token was provided in the Credential configuration when
                      ClusterAgent is enabled
                    type: string
                  lastUpdate:
                    format: date-time
                    type: string
                  readyReplicas:
                    description: Total number of ready pods targeted by this deployment.
                    format: int32
                    type: integer
                  replicas:
                    description: Total number of non-terminated pods targeted by this
                      deployment (their labels match the selector).
                    format: int32
                    type: integer
                  state:
                    description: State corresponds to the ClusterAgent deployment
                      state
                    type: string
                  status:
                    description: Status corresponds to the ClusterAgent deployment
                      computed status
                    type: string
                  unavailableReplicas:
                    description: Total number of unavailable pods targeted by this
                      deployment. This is the total number of pods that are still
                      required for the deployment to have 100% available capacity.
                      They may either be pods that are running but not yet available
                      or pods that still have not been created.
                    format: int32
                    type: integer
                  updatedReplicas:
                    description: Total number of non-terminated pods targeted by this
                      deployment that have the desired template spec.
                    format: int32
                    type: integer
                type: object
              conditions:
                description: Conditions Represents the latest available observations
                  of a DatadogAgent's current state.
                items:
                  description: DatadogAgentCondition describes the state of a DatadogAgent
                    at a certain point.
                  properties:
                    lastTransitionTime:
                      description: Last time the condition transitioned from one status
                        to another.
                      format: date-time
                      type: string
                    lastUpdateTime:
                      description: Last time the condition was updated.
                      format: date-time
                      type: string
                    message:
                      description: A human readable message indicating details about
                        the transition.
                      type: string
                    reason:
                      description: The reason for the condition's last transition.
                      type: string
                    status:
                      description: Status of the condition, one of True, False, Unknown.
                      type: string
                    type:
                      description: Type of DatadogAgent condition.
                      type: string
                  required:
                  - status
                  - type
                  type: object
                type: array
                x-kubernetes-list-map-keys:
                - type
                x-kubernetes-list-type: map
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
