---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.4.1
  creationTimestamp: null
  name: clusterpolicies.nvidia.com
spec:
  group: nvidia.com
  names:
    kind: ClusterPolicy
    listKind: ClusterPolicyList
    plural: clusterpolicies
    singular: clusterpolicy
  scope: Cluster
  versions:
    - name: v1
      schema:
        openAPIV3Schema:
          description: ClusterPolicy is the Schema for the clusterpolicies API
          properties:
            apiVersion:
              description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
              type: string
            kind:
              description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
              type: string
            metadata:
              type: object
            spec:
              description: ClusterPolicySpec defines the desired state of ClusterPolicy
              properties:
                dcgmExporter:
                  description: DCGMExporter spec
                  properties:
                    affinity:
                      description: 'Optional: Set Node affinity'
                      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
                    args:
                      description: 'Optional: List of arguments'
                      items:
                        type: string
                      type: array
                    env:
                      description: 'Optional: List of 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[''<KEY>'']`,
                                `metadata.annotations[''<KEY>'']`, 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
                    image:
                      pattern: '[a-zA-Z0-9\-]+'
                      type: string
                    imagePullPolicy:
                      description: Image pull policy
                      type: string
                    imagePullSecrets:
                      description: Image pull secrets
                      items:
                        type: string
                      type: array
                    licensingConfig:
                      description: 'Optional: Licensing configuration for vGPU drivers'
                      properties:
                        configMapName:
                          type: string
                      type: object
                    nodeSelector:
                      additionalProperties:
                        type: string
                      description: Node selector to control the selection of nodes (optional)
                      type: object
                    podSecurityContext:
                      description: 'Optional: Pod Security Context'
                      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, "Always" is used.'
                          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
                        seccompProfile:
                          description: The seccomp options to use by the containers
                            in this pod.
                          properties:
                            localhostProfile:
                              description: localhostProfile indicates a profile defined
                                in a file on the node should be used. The profile must
                                be preconfigured on the node to work. Must be a descending
                                path, relative to the kubelet's configured seccomp profile
                                location. Must only be set if type is "Localhost".
                              type: string
                            type:
                              description: "type indicates which kind of seccomp profile
                              will be applied. Valid options are: \n Localhost - a
                              profile defined in a file on the node should be used.
                              RuntimeDefault - the container runtime default profile
                              should be used. Unconfined - no profile should be applied."
                              type: string
                          required:
                            - type
                          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
                    repoConfig:
                      description: 'Optional: Custom repo configuration for driver container'
                      properties:
                        configMapName:
                          type: string
                        destinationDir:
                          type: string
                      type: object
                    repository:
                      pattern: '[a-zA-Z0-9\.\-\/]+'
                      type: string
                    resources:
                      description: 'Optional: Define resources requests and limits for
                      each pod'
                      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: 'Optional: Security Context'
                      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
                        seccompProfile:
                          description: The seccomp options to use by this container.
                            If seccomp options are provided at both the pod & container
                            level, the container options override the pod options.
                          properties:
                            localhostProfile:
                              description: localhostProfile indicates a profile defined
                                in a file on the node should be used. The profile must
                                be preconfigured on the node to work. Must be a descending
                                path, relative to the kubelet's configured seccomp profile
                                location. Must only be set if type is "Localhost".
                              type: string
                            type:
                              description: "type indicates which kind of seccomp profile
                              will be applied. Valid options are: \n Localhost - a
                              profile defined in a file on the node should be used.
                              RuntimeDefault - the container runtime default profile
                              should be used. Unconfined - no profile should be applied."
                              type: string
                          required:
                            - type
                          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
                    tolerations:
                      description: 'Optional: Set 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
                    version:
                      pattern: '[a-zA-Z0-9\.-]+'
                      type: string
                  required:
                    - image
                    - repository
                    - version
                  type: object
                devicePlugin:
                  description: DevicePlugin component spec
                  properties:
                    affinity:
                      description: 'Optional: Set Node affinity'
                      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
                    args:
                      description: 'Optional: List of arguments'
                      items:
                        type: string
                      type: array
                    env:
                      description: 'Optional: List of 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[''<KEY>'']`,
                                `metadata.annotations[''<KEY>'']`, 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
                    image:
                      pattern: '[a-zA-Z0-9\-]+'
                      type: string
                    imagePullPolicy:
                      description: Image pull policy
                      type: string
                    imagePullSecrets:
                      description: Image pull secrets
                      items:
                        type: string
                      type: array
                    licensingConfig:
                      description: 'Optional: Licensing configuration for vGPU drivers'
                      properties:
                        configMapName:
                          type: string
                      type: object
                    nodeSelector:
                      additionalProperties:
                        type: string
                      description: Node selector to control the selection of nodes (optional)
                      type: object
                    podSecurityContext:
                      description: 'Optional: Pod Security Context'
                      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, "Always" is used.'
                          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
                        seccompProfile:
                          description: The seccomp options to use by the containers
                            in this pod.
                          properties:
                            localhostProfile:
                              description: localhostProfile indicates a profile defined
                                in a file on the node should be used. The profile must
                                be preconfigured on the node to work. Must be a descending
                                path, relative to the kubelet's configured seccomp profile
                                location. Must only be set if type is "Localhost".
                              type: string
                            type:
                              description: "type indicates which kind of seccomp profile
                              will be applied. Valid options are: \n Localhost - a
                              profile defined in a file on the node should be used.
                              RuntimeDefault - the container runtime default profile
                              should be used. Unconfined - no profile should be applied."
                              type: string
                          required:
                            - type
                          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
                    repoConfig:
                      description: 'Optional: Custom repo configuration for driver container'
                      properties:
                        configMapName:
                          type: string
                        destinationDir:
                          type: string
                      type: object
                    repository:
                      pattern: '[a-zA-Z0-9\.\-\/]+'
                      type: string
                    resources:
                      description: 'Optional: Define resources requests and limits for
                      each pod'
                      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: 'Optional: Security Context'
                      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
                        seccompProfile:
                          description: The seccomp options to use by this container.
                            If seccomp options are provided at both the pod & container
                            level, the container options override the pod options.
                          properties:
                            localhostProfile:
                              description: localhostProfile indicates a profile defined
                                in a file on the node should be used. The profile must
                                be preconfigured on the node to work. Must be a descending
                                path, relative to the kubelet's configured seccomp profile
                                location. Must only be set if type is "Localhost".
                              type: string
                            type:
                              description: "type indicates which kind of seccomp profile
                              will be applied. Valid options are: \n Localhost - a
                              profile defined in a file on the node should be used.
                              RuntimeDefault - the container runtime default profile
                              should be used. Unconfined - no profile should be applied."
                              type: string
                          required:
                            - type
                          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
                    tolerations:
                      description: 'Optional: Set 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
                    version:
                      pattern: '[a-zA-Z0-9\.-]+'
                      type: string
                  required:
                    - image
                    - repository
                    - version
                  type: object
                driver:
                  description: Driver component spec
                  properties:
                    affinity:
                      description: 'Optional: Set Node affinity'
                      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
                    args:
                      description: 'Optional: List of arguments'
                      items:
                        type: string
                      type: array
                    env:
                      description: 'Optional: List of 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[''<KEY>'']`,
                                `metadata.annotations[''<KEY>'']`, 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
                    image:
                      pattern: '[a-zA-Z0-9\-]+'
                      type: string
                    imagePullPolicy:
                      description: Image pull policy
                      type: string
                    imagePullSecrets:
                      description: Image pull secrets
                      items:
                        type: string
                      type: array
                    licensingConfig:
                      description: 'Optional: Licensing configuration for vGPU drivers'
                      properties:
                        configMapName:
                          type: string
                      type: object
                    nodeSelector:
                      additionalProperties:
                        type: string
                      description: Node selector to control the selection of nodes (optional)
                      type: object
                    podSecurityContext:
                      description: 'Optional: Pod Security Context'
                      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, "Always" is used.'
                          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
                        seccompProfile:
                          description: The seccomp options to use by the containers
                            in this pod.
                          properties:
                            localhostProfile:
                              description: localhostProfile indicates a profile defined
                                in a file on the node should be used. The profile must
                                be preconfigured on the node to work. Must be a descending
                                path, relative to the kubelet's configured seccomp profile
                                location. Must only be set if type is "Localhost".
                              type: string
                            type:
                              description: "type indicates which kind of seccomp profile
                              will be applied. Valid options are: \n Localhost - a
                              profile defined in a file on the node should be used.
                              RuntimeDefault - the container runtime default profile
                              should be used. Unconfined - no profile should be applied."
                              type: string
                          required:
                            - type
                          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
                    repoConfig:
                      description: 'Optional: Custom repo configuration for driver container'
                      properties:
                        configMapName:
                          type: string
                        destinationDir:
                          type: string
                      type: object
                    repository:
                      pattern: '[a-zA-Z0-9\.\-\/]+'
                      type: string
                    resources:
                      description: 'Optional: Define resources requests and limits for
                      each pod'
                      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: 'Optional: Security Context'
                      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
                        seccompProfile:
                          description: The seccomp options to use by this container.
                            If seccomp options are provided at both the pod & container
                            level, the container options override the pod options.
                          properties:
                            localhostProfile:
                              description: localhostProfile indicates a profile defined
                                in a file on the node should be used. The profile must
                                be preconfigured on the node to work. Must be a descending
                                path, relative to the kubelet's configured seccomp profile
                                location. Must only be set if type is "Localhost".
                              type: string
                            type:
                              description: "type indicates which kind of seccomp profile
                              will be applied. Valid options are: \n Localhost - a
                              profile defined in a file on the node should be used.
                              RuntimeDefault - the container runtime default profile
                              should be used. Unconfined - no profile should be applied."
                              type: string
                          required:
                            - type
                          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
                    tolerations:
                      description: 'Optional: Set 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
                    version:
                      pattern: '[a-zA-Z0-9\.-]+'
                      type: string
                  required:
                    - image
                    - repository
                    - version
                  type: object
                gfd:
                  description: GPUFeatureDiscovery spec
                  properties:
                    affinity:
                      description: 'Optional: Set Node affinity'
                      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
                    args:
                      description: 'Optional: List of arguments'
                      items:
                        type: string
                      type: array
                    discoveryIntervalSeconds:
                      description: 'Optional: Discovery Interval for GPU feature discovery
                      plugin'
                      type: integer
                    env:
                      description: 'Optional: List of 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[''<KEY>'']`,
                                `metadata.annotations[''<KEY>'']`, 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
                    image:
                      pattern: '[a-zA-Z0-9\-]+'
                      type: string
                    imagePullPolicy:
                      description: Image pull policy
                      type: string
                    imagePullSecrets:
                      description: Image pull secrets
                      items:
                        type: string
                      type: array
                    migStrategy:
                      description: 'Optional: MigStrategy for GPU feature discovery
                      plugin'
                      enum:
                        - none
                        - single
                        - mixed
                      type: string
                    nodeSelector:
                      additionalProperties:
                        type: string
                      description: Node selector to control the selection of nodes (optional)
                      type: object
                    podSecurityContext:
                      description: 'Optional: Pod Security Context'
                      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, "Always" is used.'
                          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
                        seccompProfile:
                          description: The seccomp options to use by the containers
                            in this pod.
                          properties:
                            localhostProfile:
                              description: localhostProfile indicates a profile defined
                                in a file on the node should be used. The profile must
                                be preconfigured on the node to work. Must be a descending
                                path, relative to the kubelet's configured seccomp profile
                                location. Must only be set if type is "Localhost".
                              type: string
                            type:
                              description: "type indicates which kind of seccomp profile
                              will be applied. Valid options are: \n Localhost - a
                              profile defined in a file on the node should be used.
                              RuntimeDefault - the container runtime default profile
                              should be used. Unconfined - no profile should be applied."
                              type: string
                          required:
                            - type
                          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
                    repository:
                      pattern: '[a-zA-Z0-9\.\-\/]+'
                      type: string
                    resources:
                      description: 'Optional: Define resources requests and limits for
                      each pod'
                      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: 'Optional: Security Context'
                      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
                        seccompProfile:
                          description: The seccomp options to use by this container.
                            If seccomp options are provided at both the pod & container
                            level, the container options override the pod options.
                          properties:
                            localhostProfile:
                              description: localhostProfile indicates a profile defined
                                in a file on the node should be used. The profile must
                                be preconfigured on the node to work. Must be a descending
                                path, relative to the kubelet's configured seccomp profile
                                location. Must only be set if type is "Localhost".
                              type: string
                            type:
                              description: "type indicates which kind of seccomp profile
                              will be applied. Valid options are: \n Localhost - a
                              profile defined in a file on the node should be used.
                              RuntimeDefault - the container runtime default profile
                              should be used. Unconfined - no profile should be applied."
                              type: string
                          required:
                            - type
                          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
                    tolerations:
                      description: 'Optional: Set 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
                    version:
                      pattern: '[a-zA-Z0-9\.-]+'
                      type: string
                  required:
                    - image
                    - repository
                    - version
                  type: object
                operator:
                  description: Operator component spec
                  properties:
                    defaultRuntime:
                      description: Runtime defines container runtime type
                      enum:
                        - docker
                        - crio
                        - containerd
                      type: string
                    validator:
                      description: ValidatorSpec describes configuration options for
                        validation pod
                      properties:
                        image:
                          pattern: '[a-zA-Z0-9\-]+'
                          type: string
                        imagePullPolicy:
                          description: Image pull policy
                          type: string
                        imagePullSecrets:
                          description: Image pull secrets
                          items:
                            type: string
                          type: array
                        repository:
                          pattern: '[a-zA-Z0-9\.\-\/]+'
                          type: string
                        version:
                          pattern: '[a-zA-Z0-9\.-]+'
                          type: string
                      type: object
                  required:
                    - defaultRuntime
                  type: object
                toolkit:
                  description: Toolkit component spec
                  properties:
                    affinity:
                      description: 'Optional: Set Node affinity'
                      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
                    args:
                      description: 'Optional: List of arguments'
                      items:
                        type: string
                      type: array
                    env:
                      description: 'Optional: List of 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[''<KEY>'']`,
                                `metadata.annotations[''<KEY>'']`, 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
                    image:
                      pattern: '[a-zA-Z0-9\-]+'
                      type: string
                    imagePullPolicy:
                      description: Image pull policy
                      type: string
                    imagePullSecrets:
                      description: Image pull secrets
                      items:
                        type: string
                      type: array
                    licensingConfig:
                      description: 'Optional: Licensing configuration for vGPU drivers'
                      properties:
                        configMapName:
                          type: string
                      type: object
                    nodeSelector:
                      additionalProperties:
                        type: string
                      description: Node selector to control the selection of nodes (optional)
                      type: object
                    podSecurityContext:
                      description: 'Optional: Pod Security Context'
                      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, "Always" is used.'
                          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
                        seccompProfile:
                          description: The seccomp options to use by the containers
                            in this pod.
                          properties:
                            localhostProfile:
                              description: localhostProfile indicates a profile defined
                                in a file on the node should be used. The profile must
                                be preconfigured on the node to work. Must be a descending
                                path, relative to the kubelet's configured seccomp profile
                                location. Must only be set if type is "Localhost".
                              type: string
                            type:
                              description: "type indicates which kind of seccomp profile
                              will be applied. Valid options are: \n Localhost - a
                              profile defined in a file on the node should be used.
                              RuntimeDefault - the container runtime default profile
                              should be used. Unconfined - no profile should be applied."
                              type: string
                          required:
                            - type
                          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
                    repoConfig:
                      description: 'Optional: Custom repo configuration for driver container'
                      properties:
                        configMapName:
                          type: string
                        destinationDir:
                          type: string
                      type: object
                    repository:
                      pattern: '[a-zA-Z0-9\.\-\/]+'
                      type: string
                    resources:
                      description: 'Optional: Define resources requests and limits for
                      each pod'
                      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: 'Optional: Security Context'
                      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
                        seccompProfile:
                          description: The seccomp options to use by this container.
                            If seccomp options are provided at both the pod & container
                            level, the container options override the pod options.
                          properties:
                            localhostProfile:
                              description: localhostProfile indicates a profile defined
                                in a file on the node should be used. The profile must
                                be preconfigured on the node to work. Must be a descending
                                path, relative to the kubelet's configured seccomp profile
                                location. Must only be set if type is "Localhost".
                              type: string
                            type:
                              description: "type indicates which kind of seccomp profile
                              will be applied. Valid options are: \n Localhost - a
                              profile defined in a file on the node should be used.
                              RuntimeDefault - the container runtime default profile
                              should be used. Unconfined - no profile should be applied."
                              type: string
                          required:
                            - type
                          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
                    tolerations:
                      description: 'Optional: Set 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
                    version:
                      pattern: '[a-zA-Z0-9\.-]+'
                      type: string
                  required:
                    - image
                    - repository
                    - version
                  type: object
              required:
                - dcgmExporter
                - devicePlugin
                - driver
                - gfd
                - operator
                - toolkit
              type: object
            status:
              description: ClusterPolicyStatus defines the observed state of ClusterPolicy
              properties:
                state:
                  enum:
                    - ignored
                    - ready
                    - notReady
                  type: string
              required:
                - state
              type: object
          type: object
      served: true
      storage: true
      subresources:
        status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []