apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: workflows.argoproj.io
  annotations:
    helm.sh/resource-policy: keep
spec:
  group: argoproj.io
  names:
    kind: Workflow
    listKind: WorkflowList
    plural: workflows
    shortNames:
    - wf
    singular: workflow
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: Status of the workflow
      jsonPath: .status.phase
      name: Status
      type: string
    - description: When the workflow was started
      format: date-time
      jsonPath: .status.startedAt
      name: Age
      type: date
    - description: Human readable message indicating details about why the workflow
        is in this condition.
      jsonPath: .status.message
      name: Message
      type: string
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: Workflow is the definition of a workflow resource
        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: WorkflowSpec is the specification of a Workflow.
            properties:
              activeDeadlineSeconds:
                description: |-
                  Optional duration in seconds relative to the workflow start time which the workflow is
                  allowed to run before the controller terminates the workflow. A value of zero is used to
                  terminate a Running workflow
                format: int64
                type: integer
              affinity:
                description: |-
                  Affinity sets the scheduling constraints for all pods in the workflow.
                  Can be overridden by an affinity specified in the template
                properties:
                  nodeAffinity:
                    description: Describes node affinity scheduling rules for the
                      pod.
                    properties:
                      preferredDuringSchedulingIgnoredDuringExecution:
                        description: |-
                          The scheduler will prefer to schedule pods to nodes that satisfy
                          the affinity expressions specified by this field, but it may choose
                          a node that violates one or more of the expressions. The node that is
                          most preferred is the one with the greatest sum of weights, i.e.
                          for each node that meets all of the scheduling requirements (resource
                          request, requiredDuringScheduling affinity expressions, etc.),
                          compute a sum by iterating through the elements of this field and adding
                          "weight" to the sum if the node matches the corresponding matchExpressions; the
                          node(s) with the highest sum are the most preferred.
                        items:
                          description: |-
                            An empty preferred scheduling term matches all objects with implicit weight 0
                            (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
                          properties:
                            preference:
                              description: A node selector term, associated with the
                                corresponding weight.
                              properties:
                                matchExpressions:
                                  description: A list of node selector requirements
                                    by node's labels.
                                  items:
                                    description: |-
                                      A node selector requirement is a selector that contains values, a key, and an operator
                                      that relates the key and values.
                                    properties:
                                      key:
                                        description: The label key that the selector
                                          applies to.
                                        type: string
                                      operator:
                                        description: |-
                                          Represents a key's relationship to a set of values.
                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                        type: string
                                      values:
                                        description: |-
                                          An array of string values. If the operator is In or NotIn,
                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                          the values array must be empty. If the operator is Gt or Lt, the values
                                          array must have a single element, which will be interpreted as an integer.
                                          This array is replaced during a strategic merge patch.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    required:
                                    - key
                                    - operator
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                matchFields:
                                  description: A list of node selector requirements
                                    by node's fields.
                                  items:
                                    description: |-
                                      A node selector requirement is a selector that contains values, a key, and an operator
                                      that relates the key and values.
                                    properties:
                                      key:
                                        description: The label key that the selector
                                          applies to.
                                        type: string
                                      operator:
                                        description: |-
                                          Represents a key's relationship to a set of values.
                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                        type: string
                                      values:
                                        description: |-
                                          An array of string values. If the operator is In or NotIn,
                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                          the values array must be empty. If the operator is Gt or Lt, the values
                                          array must have a single element, which will be interpreted as an integer.
                                          This array is replaced during a strategic merge patch.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    required:
                                    - key
                                    - operator
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                              x-kubernetes-map-type: atomic
                            weight:
                              description: Weight associated with matching the corresponding
                                nodeSelectorTerm, in the range 1-100.
                              format: int32
                              type: integer
                          required:
                          - preference
                          - weight
                          type: object
                        type: array
                        x-kubernetes-list-type: atomic
                      requiredDuringSchedulingIgnoredDuringExecution:
                        description: |-
                          If the affinity requirements specified by this field are not met at
                          scheduling time, the pod will not be scheduled onto the node.
                          If the affinity requirements specified by this field cease to be met
                          at some point during pod execution (e.g. due to an update), the system
                          may or may not try to eventually evict the pod from its node.
                        properties:
                          nodeSelectorTerms:
                            description: Required. A list of node selector terms.
                              The terms are ORed.
                            items:
                              description: |-
                                A null or empty node selector term matches no objects. The requirements of
                                them are ANDed.
                                The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
                              properties:
                                matchExpressions:
                                  description: A list of node selector requirements
                                    by node's labels.
                                  items:
                                    description: |-
                                      A node selector requirement is a selector that contains values, a key, and an operator
                                      that relates the key and values.
                                    properties:
                                      key:
                                        description: The label key that the selector
                                          applies to.
                                        type: string
                                      operator:
                                        description: |-
                                          Represents a key's relationship to a set of values.
                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                        type: string
                                      values:
                                        description: |-
                                          An array of string values. If the operator is In or NotIn,
                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                          the values array must be empty. If the operator is Gt or Lt, the values
                                          array must have a single element, which will be interpreted as an integer.
                                          This array is replaced during a strategic merge patch.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    required:
                                    - key
                                    - operator
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                matchFields:
                                  description: A list of node selector requirements
                                    by node's fields.
                                  items:
                                    description: |-
                                      A node selector requirement is a selector that contains values, a key, and an operator
                                      that relates the key and values.
                                    properties:
                                      key:
                                        description: The label key that the selector
                                          applies to.
                                        type: string
                                      operator:
                                        description: |-
                                          Represents a key's relationship to a set of values.
                                          Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                        type: string
                                      values:
                                        description: |-
                                          An array of string values. If the operator is In or NotIn,
                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                          the values array must be empty. If the operator is Gt or Lt, the values
                                          array must have a single element, which will be interpreted as an integer.
                                          This array is replaced during a strategic merge patch.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    required:
                                    - key
                                    - operator
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                              x-kubernetes-map-type: atomic
                            type: array
                            x-kubernetes-list-type: atomic
                        required:
                        - nodeSelectorTerms
                        type: object
                        x-kubernetes-map-type: atomic
                    type: object
                  podAffinity:
                    description: Describes pod affinity scheduling rules (e.g. co-locate
                      this pod in the same node, zone, etc. as some other pod(s)).
                    properties:
                      preferredDuringSchedulingIgnoredDuringExecution:
                        description: |-
                          The scheduler will prefer to schedule pods to nodes that satisfy
                          the affinity expressions specified by this field, but it may choose
                          a node that violates one or more of the expressions. The node that is
                          most preferred is the one with the greatest sum of weights, i.e.
                          for each node that meets all of the scheduling requirements (resource
                          request, requiredDuringScheduling affinity expressions, etc.),
                          compute a sum by iterating through the elements of this field and adding
                          "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
                          node(s) with the highest sum are the most preferred.
                        items:
                          description: The weights of all of the matched WeightedPodAffinityTerm
                            fields are added per-node to find the most preferred node(s)
                          properties:
                            podAffinityTerm:
                              description: Required. A pod affinity term, associated
                                with the corresponding weight.
                              properties:
                                labelSelector:
                                  description: |-
                                    A label query over a set of resources, in this case pods.
                                    If it's null, this PodAffinityTerm matches with no Pods.
                                  properties:
                                    matchExpressions:
                                      description: matchExpressions is a list of label
                                        selector requirements. The requirements are
                                        ANDed.
                                      items:
                                        description: |-
                                          A label selector requirement is a selector that contains values, a key, and an operator that
                                          relates the key and values.
                                        properties:
                                          key:
                                            description: key is the label key that
                                              the selector applies to.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                matchLabelKeys:
                                  description: |-
                                    MatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                mismatchLabelKeys:
                                  description: |-
                                    MismatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                namespaceSelector:
                                  description: |-
                                    A label query over the set of namespaces that the term applies to.
                                    The term is applied to the union of the namespaces selected by this field
                                    and the ones listed in the namespaces field.
                                    null selector and null or empty namespaces list means "this pod's namespace".
                                    An empty selector ({}) matches all namespaces.
                                  properties:
                                    matchExpressions:
                                      description: matchExpressions is a list of label
                                        selector requirements. The requirements are
                                        ANDed.
                                      items:
                                        description: |-
                                          A label selector requirement is a selector that contains values, a key, and an operator that
                                          relates the key and values.
                                        properties:
                                          key:
                                            description: key is the label key that
                                              the selector applies to.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                namespaces:
                                  description: |-
                                    namespaces specifies a static list of namespace names that the term applies to.
                                    The term is applied to the union of the namespaces listed in this field
                                    and the ones selected by namespaceSelector.
                                    null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                topologyKey:
                                  description: |-
                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                    whose value of the label with key topologyKey matches that of any node on which any of the
                                    selected pods is running.
                                    Empty topologyKey is not allowed.
                                  type: string
                              required:
                              - topologyKey
                              type: object
                            weight:
                              description: |-
                                weight associated with matching the corresponding podAffinityTerm,
                                in the range 1-100.
                              format: int32
                              type: integer
                          required:
                          - podAffinityTerm
                          - weight
                          type: object
                        type: array
                        x-kubernetes-list-type: atomic
                      requiredDuringSchedulingIgnoredDuringExecution:
                        description: |-
                          If the affinity requirements specified by this field are not met at
                          scheduling time, the pod will not be scheduled onto the node.
                          If the affinity requirements specified by this field cease to be met
                          at some point during pod execution (e.g. due to a pod label update), the
                          system may or may not try to eventually evict the pod from its node.
                          When there are multiple elements, the lists of nodes corresponding to each
                          podAffinityTerm are intersected, i.e. all terms must be satisfied.
                        items:
                          description: |-
                            Defines a set of pods (namely those matching the labelSelector
                            relative to the given namespace(s)) that this pod should be
                            co-located (affinity) or not co-located (anti-affinity) with,
                            where co-located is defined as running on a node whose value of
                            the label with key <topologyKey> matches that of any node on which
                            a pod of the set of pods is running
                          properties:
                            labelSelector:
                              description: |-
                                A label query over a set of resources, in this case pods.
                                If it's null, this PodAffinityTerm matches with no Pods.
                              properties:
                                matchExpressions:
                                  description: matchExpressions is a list of label
                                    selector requirements. The requirements are ANDed.
                                  items:
                                    description: |-
                                      A label selector requirement is a selector that contains values, a key, and an operator that
                                      relates the key and values.
                                    properties:
                                      key:
                                        description: key is the label key that the
                                          selector applies to.
                                        type: string
                                      operator:
                                        description: |-
                                          operator represents a key's relationship to a set of values.
                                          Valid operators are In, NotIn, Exists and DoesNotExist.
                                        type: string
                                      values:
                                        description: |-
                                          values is an array of string values. If the operator is In or NotIn,
                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                          the values array must be empty. This array is replaced during a strategic
                                          merge patch.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    required:
                                    - key
                                    - operator
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                matchLabels:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                    map is equivalent to an element of matchExpressions, whose key field is "key", the
                                    operator is "In", and the values array contains only "value". The requirements are ANDed.
                                  type: object
                              type: object
                              x-kubernetes-map-type: atomic
                            matchLabelKeys:
                              description: |-
                                MatchLabelKeys is a set of pod label keys to select which pods will
                                be taken into consideration. The keys are used to lookup values from the
                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                to select the group of existing pods which pods will be taken into consideration
                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                pod labels will be ignored. The default value is empty.
                                The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                Also, matchLabelKeys cannot be set when labelSelector isn't set.
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                            mismatchLabelKeys:
                              description: |-
                                MismatchLabelKeys is a set of pod label keys to select which pods will
                                be taken into consideration. The keys are used to lookup values from the
                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                to select the group of existing pods which pods will be taken into consideration
                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                pod labels will be ignored. The default value is empty.
                                The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                            namespaceSelector:
                              description: |-
                                A label query over the set of namespaces that the term applies to.
                                The term is applied to the union of the namespaces selected by this field
                                and the ones listed in the namespaces field.
                                null selector and null or empty namespaces list means "this pod's namespace".
                                An empty selector ({}) matches all namespaces.
                              properties:
                                matchExpressions:
                                  description: matchExpressions is a list of label
                                    selector requirements. The requirements are ANDed.
                                  items:
                                    description: |-
                                      A label selector requirement is a selector that contains values, a key, and an operator that
                                      relates the key and values.
                                    properties:
                                      key:
                                        description: key is the label key that the
                                          selector applies to.
                                        type: string
                                      operator:
                                        description: |-
                                          operator represents a key's relationship to a set of values.
                                          Valid operators are In, NotIn, Exists and DoesNotExist.
                                        type: string
                                      values:
                                        description: |-
                                          values is an array of string values. If the operator is In or NotIn,
                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                          the values array must be empty. This array is replaced during a strategic
                                          merge patch.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    required:
                                    - key
                                    - operator
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                matchLabels:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                    map is equivalent to an element of matchExpressions, whose key field is "key", the
                                    operator is "In", and the values array contains only "value". The requirements are ANDed.
                                  type: object
                              type: object
                              x-kubernetes-map-type: atomic
                            namespaces:
                              description: |-
                                namespaces specifies a static list of namespace names that the term applies to.
                                The term is applied to the union of the namespaces listed in this field
                                and the ones selected by namespaceSelector.
                                null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                            topologyKey:
                              description: |-
                                This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                whose value of the label with key topologyKey matches that of any node on which any of the
                                selected pods is running.
                                Empty topologyKey is not allowed.
                              type: string
                          required:
                          - topologyKey
                          type: object
                        type: array
                        x-kubernetes-list-type: atomic
                    type: object
                  podAntiAffinity:
                    description: Describes pod anti-affinity scheduling rules (e.g.
                      avoid putting this pod in the same node, zone, etc. as some
                      other pod(s)).
                    properties:
                      preferredDuringSchedulingIgnoredDuringExecution:
                        description: |-
                          The scheduler will prefer to schedule pods to nodes that satisfy
                          the anti-affinity expressions specified by this field, but it may choose
                          a node that violates one or more of the expressions. The node that is
                          most preferred is the one with the greatest sum of weights, i.e.
                          for each node that meets all of the scheduling requirements (resource
                          request, requiredDuringScheduling anti-affinity expressions, etc.),
                          compute a sum by iterating through the elements of this field and adding
                          "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
                          node(s) with the highest sum are the most preferred.
                        items:
                          description: The weights of all of the matched WeightedPodAffinityTerm
                            fields are added per-node to find the most preferred node(s)
                          properties:
                            podAffinityTerm:
                              description: Required. A pod affinity term, associated
                                with the corresponding weight.
                              properties:
                                labelSelector:
                                  description: |-
                                    A label query over a set of resources, in this case pods.
                                    If it's null, this PodAffinityTerm matches with no Pods.
                                  properties:
                                    matchExpressions:
                                      description: matchExpressions is a list of label
                                        selector requirements. The requirements are
                                        ANDed.
                                      items:
                                        description: |-
                                          A label selector requirement is a selector that contains values, a key, and an operator that
                                          relates the key and values.
                                        properties:
                                          key:
                                            description: key is the label key that
                                              the selector applies to.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                matchLabelKeys:
                                  description: |-
                                    MatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                    Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                mismatchLabelKeys:
                                  description: |-
                                    MismatchLabelKeys is a set of pod label keys to select which pods will
                                    be taken into consideration. The keys are used to lookup values from the
                                    incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                    to select the group of existing pods which pods will be taken into consideration
                                    for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                    pod labels will be ignored. The default value is empty.
                                    The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                    Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                namespaceSelector:
                                  description: |-
                                    A label query over the set of namespaces that the term applies to.
                                    The term is applied to the union of the namespaces selected by this field
                                    and the ones listed in the namespaces field.
                                    null selector and null or empty namespaces list means "this pod's namespace".
                                    An empty selector ({}) matches all namespaces.
                                  properties:
                                    matchExpressions:
                                      description: matchExpressions is a list of label
                                        selector requirements. The requirements are
                                        ANDed.
                                      items:
                                        description: |-
                                          A label selector requirement is a selector that contains values, a key, and an operator that
                                          relates the key and values.
                                        properties:
                                          key:
                                            description: key is the label key that
                                              the selector applies to.
                                            type: string
                                          operator:
                                            description: |-
                                              operator represents a key's relationship to a set of values.
                                              Valid operators are In, NotIn, Exists and DoesNotExist.
                                            type: string
                                          values:
                                            description: |-
                                              values is an array of string values. If the operator is In or NotIn,
                                              the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: |-
                                        matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions, whose key field is "key", the
                                        operator is "In", and the values array contains only "value". The requirements are ANDed.
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                namespaces:
                                  description: |-
                                    namespaces specifies a static list of namespace names that the term applies to.
                                    The term is applied to the union of the namespaces listed in this field
                                    and the ones selected by namespaceSelector.
                                    null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                topologyKey:
                                  description: |-
                                    This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                    the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                    whose value of the label with key topologyKey matches that of any node on which any of the
                                    selected pods is running.
                                    Empty topologyKey is not allowed.
                                  type: string
                              required:
                              - topologyKey
                              type: object
                            weight:
                              description: |-
                                weight associated with matching the corresponding podAffinityTerm,
                                in the range 1-100.
                              format: int32
                              type: integer
                          required:
                          - podAffinityTerm
                          - weight
                          type: object
                        type: array
                        x-kubernetes-list-type: atomic
                      requiredDuringSchedulingIgnoredDuringExecution:
                        description: |-
                          If the anti-affinity requirements specified by this field are not met at
                          scheduling time, the pod will not be scheduled onto the node.
                          If the anti-affinity requirements specified by this field cease to be met
                          at some point during pod execution (e.g. due to a pod label update), the
                          system may or may not try to eventually evict the pod from its node.
                          When there are multiple elements, the lists of nodes corresponding to each
                          podAffinityTerm are intersected, i.e. all terms must be satisfied.
                        items:
                          description: |-
                            Defines a set of pods (namely those matching the labelSelector
                            relative to the given namespace(s)) that this pod should be
                            co-located (affinity) or not co-located (anti-affinity) with,
                            where co-located is defined as running on a node whose value of
                            the label with key <topologyKey> matches that of any node on which
                            a pod of the set of pods is running
                          properties:
                            labelSelector:
                              description: |-
                                A label query over a set of resources, in this case pods.
                                If it's null, this PodAffinityTerm matches with no Pods.
                              properties:
                                matchExpressions:
                                  description: matchExpressions is a list of label
                                    selector requirements. The requirements are ANDed.
                                  items:
                                    description: |-
                                      A label selector requirement is a selector that contains values, a key, and an operator that
                                      relates the key and values.
                                    properties:
                                      key:
                                        description: key is the label key that the
                                          selector applies to.
                                        type: string
                                      operator:
                                        description: |-
                                          operator represents a key's relationship to a set of values.
                                          Valid operators are In, NotIn, Exists and DoesNotExist.
                                        type: string
                                      values:
                                        description: |-
                                          values is an array of string values. If the operator is In or NotIn,
                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                          the values array must be empty. This array is replaced during a strategic
                                          merge patch.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    required:
                                    - key
                                    - operator
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                matchLabels:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                    map is equivalent to an element of matchExpressions, whose key field is "key", the
                                    operator is "In", and the values array contains only "value". The requirements are ANDed.
                                  type: object
                              type: object
                              x-kubernetes-map-type: atomic
                            matchLabelKeys:
                              description: |-
                                MatchLabelKeys is a set of pod label keys to select which pods will
                                be taken into consideration. The keys are used to lookup values from the
                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                to select the group of existing pods which pods will be taken into consideration
                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                pod labels will be ignored. The default value is empty.
                                The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                Also, matchLabelKeys cannot be set when labelSelector isn't set.
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                            mismatchLabelKeys:
                              description: |-
                                MismatchLabelKeys is a set of pod label keys to select which pods will
                                be taken into consideration. The keys are used to lookup values from the
                                incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                to select the group of existing pods which pods will be taken into consideration
                                for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                pod labels will be ignored. The default value is empty.
                                The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                            namespaceSelector:
                              description: |-
                                A label query over the set of namespaces that the term applies to.
                                The term is applied to the union of the namespaces selected by this field
                                and the ones listed in the namespaces field.
                                null selector and null or empty namespaces list means "this pod's namespace".
                                An empty selector ({}) matches all namespaces.
                              properties:
                                matchExpressions:
                                  description: matchExpressions is a list of label
                                    selector requirements. The requirements are ANDed.
                                  items:
                                    description: |-
                                      A label selector requirement is a selector that contains values, a key, and an operator that
                                      relates the key and values.
                                    properties:
                                      key:
                                        description: key is the label key that the
                                          selector applies to.
                                        type: string
                                      operator:
                                        description: |-
                                          operator represents a key's relationship to a set of values.
                                          Valid operators are In, NotIn, Exists and DoesNotExist.
                                        type: string
                                      values:
                                        description: |-
                                          values is an array of string values. If the operator is In or NotIn,
                                          the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                          the values array must be empty. This array is replaced during a strategic
                                          merge patch.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    required:
                                    - key
                                    - operator
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                matchLabels:
                                  additionalProperties:
                                    type: string
                                  description: |-
                                    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                    map is equivalent to an element of matchExpressions, whose key field is "key", the
                                    operator is "In", and the values array contains only "value". The requirements are ANDed.
                                  type: object
                              type: object
                              x-kubernetes-map-type: atomic
                            namespaces:
                              description: |-
                                namespaces specifies a static list of namespace names that the term applies to.
                                The term is applied to the union of the namespaces listed in this field
                                and the ones selected by namespaceSelector.
                                null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                            topologyKey:
                              description: |-
                                This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                whose value of the label with key topologyKey matches that of any node on which any of the
                                selected pods is running.
                                Empty topologyKey is not allowed.
                              type: string
                          required:
                          - topologyKey
                          type: object
                        type: array
                        x-kubernetes-list-type: atomic
                    type: object
                type: object
              archiveLogs:
                description: ArchiveLogs indicates if the container logs should be
                  archived
                type: boolean
              arguments:
                description: |-
                  Arguments contain the parameters and artifacts sent to the workflow entrypoint
                  Parameters are referencable globally using the 'workflow' variable prefix.
                  e.g. {{workflow.parameters.myparam}}
                properties:
                  artifacts:
                    description: Artifacts is the list of artifacts to pass to the
                      template or workflow
                    items:
                      description: Artifact indicates an artifact to place at a specified
                        path
                      properties:
                        archive:
                          description: Archive controls how the artifact will be saved
                            to the artifact repository.
                          properties:
                            none:
                              description: |-
                                NoneStrategy indicates to skip tar process and upload the files or directory tree as independent
                                files. Note that if the artifact is a directory, the artifact driver must support the ability to
                                save/load the directory appropriately.
                              type: object
                            tar:
                              description: TarStrategy will tar and gzip the file
                                or directory when saving
                              properties:
                                compressionLevel:
                                  description: |-
                                    CompressionLevel specifies the gzip compression level to use for the artifact.
                                    Defaults to gzip.DefaultCompression.
                                  format: int32
                                  type: integer
                              type: object
                            zip:
                              description: ZipStrategy will unzip zipped input artifacts
                              type: object
                          type: object
                        archiveLogs:
                          description: ArchiveLogs indicates if the container logs
                            should be archived
                          type: boolean
                        artifactGC:
                          description: ArtifactGC describes the strategy to use when
                            to deleting an artifact from completed or deleted workflows
                          properties:
                            podMetadata:
                              description: PodMetadata is an optional field for specifying
                                the Labels and Annotations that should be assigned
                                to the Pod doing the deletion
                              properties:
                                annotations:
                                  additionalProperties:
                                    type: string
                                  type: object
                                labels:
                                  additionalProperties:
                                    type: string
                                  type: object
                              type: object
                            serviceAccountName:
                              description: ServiceAccountName is an optional field
                                for specifying the Service Account that should be
                                assigned to the Pod doing the deletion
                              type: string
                            strategy:
                              description: Strategy is the strategy to use.
                              enum:
                              - ""
                              - OnWorkflowCompletion
                              - OnWorkflowDeletion
                              - Never
                              type: string
                          type: object
                        artifactory:
                          description: Artifactory contains artifactory artifact location
                            details
                          properties:
                            passwordSecret:
                              description: PasswordSecret is the secret selector to
                                the repository password
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            url:
                              description: URL of the artifact
                              type: string
                            usernameSecret:
                              description: UsernameSecret is the secret selector to
                                the repository username
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                          required:
                          - url
                          type: object
                        azure:
                          description: Azure contains Azure Storage artifact location
                            details
                          properties:
                            accountKeySecret:
                              description: AccountKeySecret is the secret selector
                                to the Azure Blob Storage account access key
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            blob:
                              description: Blob is the blob name (i.e., path) in the
                                container where the artifact resides
                              type: string
                            container:
                              description: Container is the container where resources
                                will be stored
                              type: string
                            endpoint:
                              description: Endpoint is the service url associated
                                with an account. It is most likely "https://<ACCOUNT_NAME>.blob.core.windows.net"
                              type: string
                            useSDKCreds:
                              description: UseSDKCreds tells the driver to figure
                                out credentials based on sdk defaults.
                              type: boolean
                          required:
                          - blob
                          - container
                          - endpoint
                          type: object
                        deleted:
                          description: Has this been deleted?
                          type: boolean
                        from:
                          description: From allows an artifact to reference an artifact
                            from a previous step
                          type: string
                        fromExpression:
                          description: FromExpression, if defined, is evaluated to
                            specify the value for the artifact
                          type: string
                        gcs:
                          description: GCS contains GCS artifact location details
                          properties:
                            bucket:
                              description: Bucket is the name of the bucket
                              type: string
                            key:
                              description: Key is the path in the bucket where the
                                artifact resides
                              type: string
                            serviceAccountKeySecret:
                              description: ServiceAccountKeySecret is the secret selector
                                to the bucket's service account key
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                          required:
                          - key
                          type: object
                        git:
                          description: Git contains git artifact location details
                          properties:
                            branch:
                              description: Branch is the branch to fetch when `SingleBranch`
                                is enabled
                              type: string
                            depth:
                              description: |-
                                Depth specifies clones/fetches should be shallow and include the given
                                number of commits from the branch tip
                              format: int64
                              type: integer
                            disableSubmodules:
                              description: DisableSubmodules disables submodules during
                                git clone
                              type: boolean
                            fetch:
                              description: Fetch specifies a number of refs that should
                                be fetched before checkout
                              items:
                                type: string
                              type: array
                            insecureIgnoreHostKey:
                              description: InsecureIgnoreHostKey disables SSH strict
                                host key checking during git clone
                              type: boolean
                            insecureSkipTLS:
                              description: InsecureSkipTLS disables server certificate
                                verification resulting in insecure HTTPS connections
                              type: boolean
                            passwordSecret:
                              description: PasswordSecret is the secret selector to
                                the repository password
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            repo:
                              description: Repo is the git repository
                              type: string
                            revision:
                              description: Revision is the git commit, tag, branch
                                to checkout
                              type: string
                            singleBranch:
                              description: SingleBranch enables single branch clone,
                                using the `branch` parameter
                              type: boolean
                            sshPrivateKeySecret:
                              description: SSHPrivateKeySecret is the secret selector
                                to the repository ssh private key
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            usernameSecret:
                              description: UsernameSecret is the secret selector to
                                the repository username
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                          required:
                          - repo
                          type: object
                        globalName:
                          description: |-
                            GlobalName exports an output artifact to the global scope, making it available as
                            '{{workflow.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts
                          type: string
                        hdfs:
                          description: HDFS contains HDFS artifact location details
                          properties:
                            addresses:
                              description: Addresses is accessible addresses of HDFS
                                name nodes
                              items:
                                type: string
                              type: array
                            dataTransferProtection:
                              description: |-
                                DataTransferProtection is the protection level for HDFS data transfer.
                                It corresponds to the dfs.data.transfer.protection configuration in HDFS.
                              type: string
                            force:
                              description: Force copies a file forcibly even if it
                                exists
                              type: boolean
                            hdfsUser:
                              description: |-
                                HDFSUser is the user to access HDFS file system.
                                It is ignored if either ccache or keytab is used.
                              type: string
                            krbCCacheSecret:
                              description: |-
                                KrbCCacheSecret is the secret selector for Kerberos ccache
                                Either ccache or keytab can be set to use Kerberos.
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            krbConfigConfigMap:
                              description: |-
                                KrbConfig is the configmap selector for Kerberos config as string
                                It must be set if either ccache or keytab is used.
                              properties:
                                key:
                                  description: The key to select.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the ConfigMap or its
                                    key must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            krbKeytabSecret:
                              description: |-
                                KrbKeytabSecret is the secret selector for Kerberos keytab
                                Either ccache or keytab can be set to use Kerberos.
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            krbRealm:
                              description: |-
                                KrbRealm is the Kerberos realm used with Kerberos keytab
                                It must be set if keytab is used.
                              type: string
                            krbServicePrincipalName:
                              description: |-
                                KrbServicePrincipalName is the principal name of Kerberos service
                                It must be set if either ccache or keytab is used.
                              type: string
                            krbUsername:
                              description: |-
                                KrbUsername is the Kerberos username used with Kerberos keytab
                                It must be set if keytab is used.
                              type: string
                            path:
                              description: Path is a file path in HDFS
                              type: string
                          required:
                          - path
                          type: object
                        http:
                          description: HTTP contains HTTP artifact location details
                          properties:
                            auth:
                              description: Auth contains information for client authentication
                              properties:
                                basicAuth:
                                  description: BasicAuth describes the secret selectors
                                    required for basic authentication
                                  properties:
                                    passwordSecret:
                                      description: PasswordSecret is the secret selector
                                        to the repository password
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    usernameSecret:
                                      description: UsernameSecret is the secret selector
                                        to the repository username
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  type: object
                                clientCert:
                                  description: ClientCertAuth holds necessary information
                                    for client authentication via certificates
                                  properties:
                                    clientCertSecret:
                                      description: SecretKeySelector selects a key
                                        of a Secret.
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    clientKeySecret:
                                      description: SecretKeySelector selects a key
                                        of a Secret.
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  type: object
                                oauth2:
                                  description: OAuth2Auth holds all information for
                                    client authentication via OAuth2 tokens
                                  properties:
                                    clientIDSecret:
                                      description: SecretKeySelector selects a key
                                        of a Secret.
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    clientSecretSecret:
                                      description: SecretKeySelector selects a key
                                        of a Secret.
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    endpointParams:
                                      items:
                                        description: EndpointParam is for requesting
                                          optional fields that should be sent in the
                                          oauth request
                                        properties:
                                          key:
                                            description: Name is the header name
                                            type: string
                                          value:
                                            description: Value is the literal value
                                              to use for the header
                                            type: string
                                        required:
                                        - key
                                        type: object
                                      type: array
                                    scopes:
                                      items:
                                        type: string
                                      type: array
                                    tokenURLSecret:
                                      description: SecretKeySelector selects a key
                                        of a Secret.
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  type: object
                              type: object
                            headers:
                              description: Headers are an optional list of headers
                                to send with HTTP requests for artifacts
                              items:
                                description: Header indicate a key-value request header
                                  to be used when fetching artifacts over HTTP
                                properties:
                                  name:
                                    description: Name is the header name
                                    type: string
                                  value:
                                    description: Value is the literal value to use
                                      for the header
                                    type: string
                                required:
                                - name
                                - value
                                type: object
                              type: array
                            url:
                              description: URL of the artifact
                              type: string
                          required:
                          - url
                          type: object
                        mode:
                          description: |-
                            mode bits to use on this file, must be a value between 0 and 0777.
                            Set when loading input artifacts. It is recommended to set the mode value
                            to ensure the artifact has the expected permissions in your container.
                          format: int32
                          maximum: 511
                          minimum: 0
                          type: integer
                        name:
                          description: name of the artifact. must be unique within
                            a template's inputs/outputs.
                          pattern: ^[-a-zA-Z0-9_{}.]+$
                          type: string
                        optional:
                          description: Make Artifacts optional, if Artifacts doesn't
                            generate or exist
                          type: boolean
                        oss:
                          description: OSS contains OSS artifact location details
                          properties:
                            accessKeySecret:
                              description: AccessKeySecret is the secret selector
                                to the bucket's access key
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            bucket:
                              description: Bucket is the name of the bucket
                              type: string
                            createBucketIfNotPresent:
                              description: CreateBucketIfNotPresent tells the driver
                                to attempt to create the OSS bucket for output artifacts,
                                if it doesn't exist
                              type: boolean
                            endpoint:
                              description: Endpoint is the hostname of the bucket
                                endpoint
                              type: string
                            key:
                              description: Key is the path in the bucket where the
                                artifact resides
                              type: string
                            lifecycleRule:
                              description: LifecycleRule specifies how to manage bucket's
                                lifecycle
                              properties:
                                markDeletionAfterDays:
                                  description: MarkDeletionAfterDays is the number
                                    of days before we delete objects in the bucket
                                  format: int32
                                  type: integer
                                markInfrequentAccessAfterDays:
                                  description: MarkInfrequentAccessAfterDays is the
                                    number of days before we convert the objects in
                                    the bucket to Infrequent Access (IA) storage type
                                  format: int32
                                  type: integer
                              type: object
                            secretKeySecret:
                              description: SecretKeySecret is the secret selector
                                to the bucket's secret key
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            securityToken:
                              description: 'SecurityToken is the user''s temporary
                                security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm'
                              type: string
                            useSDKCreds:
                              description: UseSDKCreds tells the driver to figure
                                out credentials based on sdk defaults.
                              type: boolean
                          required:
                          - key
                          type: object
                        path:
                          description: Path is the container path to the artifact
                          type: string
                        plugin:
                          description: Plugin contains plugin artifact location details
                          properties:
                            configuration:
                              description: Configuration is the plugin defined configuration
                                for the artifact driver plugin
                              type: string
                            connectionTimeoutSeconds:
                              description: ConnectionTimeoutSeconds is the timeout
                                for the artifact driver connection, overriding the
                                driver's timeout
                              format: int32
                              type: integer
                            key:
                              description: Key is the path in the artifact repository
                                where the artifact resides
                              type: string
                            name:
                              description: Name is the name of the artifact driver
                                plugin
                              type: string
                          required:
                          - key
                          type: object
                        raw:
                          description: Raw contains raw artifact location details
                          properties:
                            data:
                              description: Data is the string contents of the artifact
                              type: string
                          required:
                          - data
                          type: object
                        recurseMode:
                          description: If mode is set, apply the permission recursively
                            into the artifact if it is a folder
                          type: boolean
                        s3:
                          description: S3 contains S3 artifact location details
                          properties:
                            accessKeySecret:
                              description: AccessKeySecret is the secret selector
                                to the bucket's access key
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            bucket:
                              description: Bucket is the name of the bucket
                              type: string
                            caSecret:
                              description: CASecret specifies the secret that contains
                                the CA, used to verify the TLS connection
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            createBucketIfNotPresent:
                              description: CreateBucketIfNotPresent tells the driver
                                to attempt to create the S3 bucket for output artifacts,
                                if it doesn't exist. Setting Enabled Encryption will
                                apply either SSE-S3 to the bucket if KmsKeyId is not
                                set or SSE-KMS if it is.
                              properties:
                                objectLocking:
                                  description: ObjectLocking Enable object locking
                                  type: boolean
                              type: object
                            encryptionOptions:
                              description: S3EncryptionOptions used to determine encryption
                                options during s3 operations
                              properties:
                                enableEncryption:
                                  description: EnableEncryption tells the driver to
                                    encrypt objects if set to true. If kmsKeyId and
                                    serverSideCustomerKeySecret are not set, SSE-S3
                                    will be used
                                  type: boolean
                                kmsEncryptionContext:
                                  description: KmsEncryptionContext is a json blob
                                    that contains an encryption context. See https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
                                    for more information
                                  type: string
                                kmsKeyId:
                                  description: KMSKeyId tells the driver to encrypt
                                    the object using the specified KMS Key.
                                  type: string
                                serverSideCustomerKeySecret:
                                  description: ServerSideCustomerKeySecret tells the
                                    driver to encrypt the output artifacts using SSE-C
                                    with the specified secret.
                                  properties:
                                    key:
                                      description: The key of the secret to select
                                        from.  Must be a valid secret key.
                                      type: string
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                    optional:
                                      description: Specify whether the Secret or its
                                        key must be defined
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                              type: object
                            endpoint:
                              description: Endpoint is the hostname of the bucket
                                endpoint
                              type: string
                            insecure:
                              description: Insecure will connect to the service with
                                TLS
                              type: boolean
                            key:
                              description: Key is the key in the bucket where the
                                artifact resides
                              type: string
                            region:
                              description: Region contains the optional bucket region
                              type: string
                            roleARN:
                              description: RoleARN is the Amazon Resource Name (ARN)
                                of the role to assume.
                              type: string
                            secretKeySecret:
                              description: SecretKeySecret is the secret selector
                                to the bucket's secret key
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            sessionTokenSecret:
                              description: SessionTokenSecret is used for ephemeral
                                credentials like an IAM assume role or S3 access grant
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            useSDKCreds:
                              description: UseSDKCreds tells the driver to figure
                                out credentials based on sdk defaults.
                              type: boolean
                          type: object
                        subPath:
                          description: SubPath allows an artifact to be sourced from
                            a subpath within the specified source
                          type: string
                      required:
                      - name
                      type: object
                      x-kubernetes-validations:
                      - message: at most one artifact location can be specified
                        rule: '(has(self.s3) ? 1 : 0) + (has(self.git) ? 1 : 0) +
                          (has(self.http) ? 1 : 0) + (has(self.artifactory) ? 1 :
                          0) + (has(self.hdfs) ? 1 : 0) + (has(self.raw) ? 1 : 0)
                          + (has(self.oss) ? 1 : 0) + (has(self.gcs) ? 1 : 0) + (has(self.azure)
                          ? 1 : 0) + (has(self.plugin) ? 1 : 0) <= 1'
                    type: array
                  parameters:
                    description: Parameters is the list of parameters to pass to the
                      template or workflow
                    items:
                      description: Parameter indicate a passed string parameter to
                        a service template with an optional default value
                      properties:
                        default:
                          description: Default is the default value to use for an
                            input parameter if a value was not supplied
                          type: string
                        description:
                          description: Description is the parameter description
                          type: string
                        enum:
                          description: Enum holds a list of string values to choose
                            from, for the actual value of the parameter
                          items:
                            description: |-
                              * It's JSON type is just string.
                              * It will unmarshall int64, int32, float64, float32, boolean, a plain string and represents it as string.
                              * It will marshall back to string - marshalling is not symmetric.
                            type: string
                          minItems: 1
                          type: array
                        globalName:
                          description: |-
                            GlobalName exports an output parameter to the global scope, making it available as
                            '{{workflow.outputs.parameters.XXXX}} and in workflow.status.outputs.parameters
                          type: string
                        name:
                          description: Name is the parameter name
                          pattern: ^[-a-zA-Z0-9_]+$
                          type: string
                        value:
                          description: |-
                            Value is the literal value to use for the parameter.
                            If specified in the context of an input parameter, any passed values take precedence over the specified value
                          type: string
                        valueFrom:
                          description: ValueFrom is the source for the output parameter's
                            value
                          properties:
                            configMapKeyRef:
                              description: ConfigMapKeyRef is configmap selector for
                                input parameter configuration
                              properties:
                                key:
                                  description: The key to select.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the ConfigMap or its
                                    key must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            default:
                              description: Default specifies a value to be used if
                                retrieving the value from the specified source fails
                              type: string
                            event:
                              description: Selector (https://github.com/expr-lang/expr)
                                that is evaluated against the event to get the value
                                of the parameter. E.g. `payload.message`
                              type: string
                            expression:
                              description: Expression, if defined, is evaluated to
                                specify the value for the parameter
                              type: string
                            jqFilter:
                              description: JQFilter expression against the resource
                                object in resource templates
                              type: string
                            jsonPath:
                              description: JSONPath of a resource to retrieve an output
                                parameter value from in resource templates
                              type: string
                            parameter:
                              description: |-
                                Parameter reference to a step or dag task in which to retrieve an output parameter value from
                                (e.g. '{{steps.mystep.outputs.myparam}}')
                              type: string
                            path:
                              description: Path in the container to retrieve an output
                                parameter value from in container templates
                              type: string
                            supplied:
                              description: Supplied value to be filled in directly,
                                either through the CLI, API, etc.
                              type: object
                          type: object
                      required:
                      - name
                      type: object
                    type: array
                type: object
              artifactGC:
                description: |-
                  ArtifactGC describes the strategy to use when deleting artifacts from completed or deleted workflows (applies to all output Artifacts
                  unless Artifact.ArtifactGC is specified, which overrides this)
                properties:
                  forceFinalizerRemoval:
                    description: 'ForceFinalizerRemoval: if set to true, the finalizer
                      will be removed in the case that Artifact GC fails'
                    type: boolean
                  podMetadata:
                    description: PodMetadata is an optional field for specifying the
                      Labels and Annotations that should be assigned to the Pod doing
                      the deletion
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        type: object
                      labels:
                        additionalProperties:
                          type: string
                        type: object
                    type: object
                  podSpecPatch:
                    description: PodSpecPatch holds strategic merge patch to apply
                      against the artgc pod spec.
                    type: string
                  serviceAccountName:
                    description: ServiceAccountName is an optional field for specifying
                      the Service Account that should be assigned to the Pod doing
                      the deletion
                    type: string
                  strategy:
                    description: Strategy is the strategy to use.
                    enum:
                    - ""
                    - OnWorkflowCompletion
                    - OnWorkflowDeletion
                    - Never
                    type: string
                type: object
              artifactRepositoryRef:
                description: ArtifactRepositoryRef specifies the configMap name and
                  key containing the artifact repository config.
                properties:
                  configMap:
                    description: The name of the config map. Defaults to "artifact-repositories".
                    type: string
                  key:
                    description: The config map key. Defaults to the value of the
                      "workflows.argoproj.io/default-artifact-repository" annotation.
                    type: string
                type: object
              automountServiceAccountToken:
                description: |-
                  AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in pods.
                  ServiceAccountName of ExecutorConfig must be specified if this value is false.
                type: boolean
              dnsConfig:
                description: |-
                  PodDNSConfig defines the DNS parameters of a pod in addition to
                  those generated from DNSPolicy.
                properties:
                  nameservers:
                    description: |-
                      A list of DNS name server IP addresses.
                      This will be appended to the base nameservers generated from DNSPolicy.
                      Duplicated nameservers will be removed.
                    items:
                      type: string
                    type: array
                    x-kubernetes-list-type: atomic
                  options:
                    description: |-
                      A list of DNS resolver options.
                      This will be merged with the base options generated from DNSPolicy.
                      Duplicated entries will be removed. Resolution options given in Options
                      will override those that appear in the base DNSPolicy.
                    items:
                      description: PodDNSConfigOption defines DNS resolver options
                        of a pod.
                      properties:
                        name:
                          description: |-
                            Name is this DNS resolver option's name.
                            Required.
                          type: string
                        value:
                          description: Value is this DNS resolver option's value.
                          type: string
                      type: object
                    type: array
                    x-kubernetes-list-type: atomic
                  searches:
                    description: |-
                      A list of DNS search domains for host-name lookup.
                      This will be appended to the base search paths generated from DNSPolicy.
                      Duplicated search paths will be removed.
                    items:
                      type: string
                    type: array
                    x-kubernetes-list-type: atomic
                type: object
              dnsPolicy:
                description: |-
                  Set DNS policy for workflow pods.
                  Defaults to "ClusterFirst".
                  Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.
                  DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.
                  To have DNS options set along with hostNetwork, you have to specify DNS policy
                  explicitly to 'ClusterFirstWithHostNet'.
                type: string
              entrypoint:
                description: Entrypoint is a template reference to the starting point
                  of the workflow.
                type: string
              executor:
                description: Executor holds configurations of executor containers
                  of the workflow.
                properties:
                  serviceAccountName:
                    description: ServiceAccountName specifies the service account
                      name of the executor container.
                    type: string
                type: object
              hooks:
                additionalProperties:
                  properties:
                    arguments:
                      description: Arguments hold arguments to the template
                      properties:
                        artifacts:
                          description: Artifacts is the list of artifacts to pass
                            to the template or workflow
                          items:
                            description: Artifact indicates an artifact to place at
                              a specified path
                            properties:
                              archive:
                                description: Archive controls how the artifact will
                                  be saved to the artifact repository.
                                properties:
                                  none:
                                    description: |-
                                      NoneStrategy indicates to skip tar process and upload the files or directory tree as independent
                                      files. Note that if the artifact is a directory, the artifact driver must support the ability to
                                      save/load the directory appropriately.
                                    type: object
                                  tar:
                                    description: TarStrategy will tar and gzip the
                                      file or directory when saving
                                    properties:
                                      compressionLevel:
                                        description: |-
                                          CompressionLevel specifies the gzip compression level to use for the artifact.
                                          Defaults to gzip.DefaultCompression.
                                        format: int32
                                        type: integer
                                    type: object
                                  zip:
                                    description: ZipStrategy will unzip zipped input
                                      artifacts
                                    type: object
                                type: object
                              archiveLogs:
                                description: ArchiveLogs indicates if the container
                                  logs should be archived
                                type: boolean
                              artifactGC:
                                description: ArtifactGC describes the strategy to
                                  use when to deleting an artifact from completed
                                  or deleted workflows
                                properties:
                                  podMetadata:
                                    description: PodMetadata is an optional field
                                      for specifying the Labels and Annotations that
                                      should be assigned to the Pod doing the deletion
                                    properties:
                                      annotations:
                                        additionalProperties:
                                          type: string
                                        type: object
                                      labels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                  serviceAccountName:
                                    description: ServiceAccountName is an optional
                                      field for specifying the Service Account that
                                      should be assigned to the Pod doing the deletion
                                    type: string
                                  strategy:
                                    description: Strategy is the strategy to use.
                                    enum:
                                    - ""
                                    - OnWorkflowCompletion
                                    - OnWorkflowDeletion
                                    - Never
                                    type: string
                                type: object
                              artifactory:
                                description: Artifactory contains artifactory artifact
                                  location details
                                properties:
                                  passwordSecret:
                                    description: PasswordSecret is the secret selector
                                      to the repository password
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  url:
                                    description: URL of the artifact
                                    type: string
                                  usernameSecret:
                                    description: UsernameSecret is the secret selector
                                      to the repository username
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - url
                                type: object
                              azure:
                                description: Azure contains Azure Storage artifact
                                  location details
                                properties:
                                  accountKeySecret:
                                    description: AccountKeySecret is the secret selector
                                      to the Azure Blob Storage account access key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  blob:
                                    description: Blob is the blob name (i.e., path)
                                      in the container where the artifact resides
                                    type: string
                                  container:
                                    description: Container is the container where
                                      resources will be stored
                                    type: string
                                  endpoint:
                                    description: Endpoint is the service url associated
                                      with an account. It is most likely "https://<ACCOUNT_NAME>.blob.core.windows.net"
                                    type: string
                                  useSDKCreds:
                                    description: UseSDKCreds tells the driver to figure
                                      out credentials based on sdk defaults.
                                    type: boolean
                                required:
                                - blob
                                - container
                                - endpoint
                                type: object
                              deleted:
                                description: Has this been deleted?
                                type: boolean
                              from:
                                description: From allows an artifact to reference
                                  an artifact from a previous step
                                type: string
                              fromExpression:
                                description: FromExpression, if defined, is evaluated
                                  to specify the value for the artifact
                                type: string
                              gcs:
                                description: GCS contains GCS artifact location details
                                properties:
                                  bucket:
                                    description: Bucket is the name of the bucket
                                    type: string
                                  key:
                                    description: Key is the path in the bucket where
                                      the artifact resides
                                    type: string
                                  serviceAccountKeySecret:
                                    description: ServiceAccountKeySecret is the secret
                                      selector to the bucket's service account key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - key
                                type: object
                              git:
                                description: Git contains git artifact location details
                                properties:
                                  branch:
                                    description: Branch is the branch to fetch when
                                      `SingleBranch` is enabled
                                    type: string
                                  depth:
                                    description: |-
                                      Depth specifies clones/fetches should be shallow and include the given
                                      number of commits from the branch tip
                                    format: int64
                                    type: integer
                                  disableSubmodules:
                                    description: DisableSubmodules disables submodules
                                      during git clone
                                    type: boolean
                                  fetch:
                                    description: Fetch specifies a number of refs
                                      that should be fetched before checkout
                                    items:
                                      type: string
                                    type: array
                                  insecureIgnoreHostKey:
                                    description: InsecureIgnoreHostKey disables SSH
                                      strict host key checking during git clone
                                    type: boolean
                                  insecureSkipTLS:
                                    description: InsecureSkipTLS disables server certificate
                                      verification resulting in insecure HTTPS connections
                                    type: boolean
                                  passwordSecret:
                                    description: PasswordSecret is the secret selector
                                      to the repository password
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  repo:
                                    description: Repo is the git repository
                                    type: string
                                  revision:
                                    description: Revision is the git commit, tag,
                                      branch to checkout
                                    type: string
                                  singleBranch:
                                    description: SingleBranch enables single branch
                                      clone, using the `branch` parameter
                                    type: boolean
                                  sshPrivateKeySecret:
                                    description: SSHPrivateKeySecret is the secret
                                      selector to the repository ssh private key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  usernameSecret:
                                    description: UsernameSecret is the secret selector
                                      to the repository username
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - repo
                                type: object
                              globalName:
                                description: |-
                                  GlobalName exports an output artifact to the global scope, making it available as
                                  '{{workflow.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts
                                type: string
                              hdfs:
                                description: HDFS contains HDFS artifact location
                                  details
                                properties:
                                  addresses:
                                    description: Addresses is accessible addresses
                                      of HDFS name nodes
                                    items:
                                      type: string
                                    type: array
                                  dataTransferProtection:
                                    description: |-
                                      DataTransferProtection is the protection level for HDFS data transfer.
                                      It corresponds to the dfs.data.transfer.protection configuration in HDFS.
                                    type: string
                                  force:
                                    description: Force copies a file forcibly even
                                      if it exists
                                    type: boolean
                                  hdfsUser:
                                    description: |-
                                      HDFSUser is the user to access HDFS file system.
                                      It is ignored if either ccache or keytab is used.
                                    type: string
                                  krbCCacheSecret:
                                    description: |-
                                      KrbCCacheSecret is the secret selector for Kerberos ccache
                                      Either ccache or keytab can be set to use Kerberos.
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbConfigConfigMap:
                                    description: |-
                                      KrbConfig is the configmap selector for Kerberos config as string
                                      It must be set if either ccache or keytab is used.
                                    properties:
                                      key:
                                        description: The key to select.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the ConfigMap
                                          or its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbKeytabSecret:
                                    description: |-
                                      KrbKeytabSecret is the secret selector for Kerberos keytab
                                      Either ccache or keytab can be set to use Kerberos.
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbRealm:
                                    description: |-
                                      KrbRealm is the Kerberos realm used with Kerberos keytab
                                      It must be set if keytab is used.
                                    type: string
                                  krbServicePrincipalName:
                                    description: |-
                                      KrbServicePrincipalName is the principal name of Kerberos service
                                      It must be set if either ccache or keytab is used.
                                    type: string
                                  krbUsername:
                                    description: |-
                                      KrbUsername is the Kerberos username used with Kerberos keytab
                                      It must be set if keytab is used.
                                    type: string
                                  path:
                                    description: Path is a file path in HDFS
                                    type: string
                                required:
                                - path
                                type: object
                              http:
                                description: HTTP contains HTTP artifact location
                                  details
                                properties:
                                  auth:
                                    description: Auth contains information for client
                                      authentication
                                    properties:
                                      basicAuth:
                                        description: BasicAuth describes the secret
                                          selectors required for basic authentication
                                        properties:
                                          passwordSecret:
                                            description: PasswordSecret is the secret
                                              selector to the repository password
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          usernameSecret:
                                            description: UsernameSecret is the secret
                                              selector to the repository username
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                      clientCert:
                                        description: ClientCertAuth holds necessary
                                          information for client authentication via
                                          certificates
                                        properties:
                                          clientCertSecret:
                                            description: SecretKeySelector selects
                                              a key of a Secret.
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          clientKeySecret:
                                            description: SecretKeySelector selects
                                              a key of a Secret.
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                      oauth2:
                                        description: OAuth2Auth holds all information
                                          for client authentication via OAuth2 tokens
                                        properties:
                                          clientIDSecret:
                                            description: SecretKeySelector selects
                                              a key of a Secret.
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          clientSecretSecret:
                                            description: SecretKeySelector selects
                                              a key of a Secret.
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          endpointParams:
                                            items:
                                              description: EndpointParam is for requesting
                                                optional fields that should be sent
                                                in the oauth request
                                              properties:
                                                key:
                                                  description: Name is the header
                                                    name
                                                  type: string
                                                value:
                                                  description: Value is the literal
                                                    value to use for the header
                                                  type: string
                                              required:
                                              - key
                                              type: object
                                            type: array
                                          scopes:
                                            items:
                                              type: string
                                            type: array
                                          tokenURLSecret:
                                            description: SecretKeySelector selects
                                              a key of a Secret.
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                    type: object
                                  headers:
                                    description: Headers are an optional list of headers
                                      to send with HTTP requests for artifacts
                                    items:
                                      description: Header indicate a key-value request
                                        header to be used when fetching artifacts
                                        over HTTP
                                      properties:
                                        name:
                                          description: Name is the header name
                                          type: string
                                        value:
                                          description: Value is the literal value
                                            to use for the header
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  url:
                                    description: URL of the artifact
                                    type: string
                                required:
                                - url
                                type: object
                              mode:
                                description: |-
                                  mode bits to use on this file, must be a value between 0 and 0777.
                                  Set when loading input artifacts. It is recommended to set the mode value
                                  to ensure the artifact has the expected permissions in your container.
                                format: int32
                                maximum: 511
                                minimum: 0
                                type: integer
                              name:
                                description: name of the artifact. must be unique
                                  within a template's inputs/outputs.
                                pattern: ^[-a-zA-Z0-9_{}.]+$
                                type: string
                              optional:
                                description: Make Artifacts optional, if Artifacts
                                  doesn't generate or exist
                                type: boolean
                              oss:
                                description: OSS contains OSS artifact location details
                                properties:
                                  accessKeySecret:
                                    description: AccessKeySecret is the secret selector
                                      to the bucket's access key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  bucket:
                                    description: Bucket is the name of the bucket
                                    type: string
                                  createBucketIfNotPresent:
                                    description: CreateBucketIfNotPresent tells the
                                      driver to attempt to create the OSS bucket for
                                      output artifacts, if it doesn't exist
                                    type: boolean
                                  endpoint:
                                    description: Endpoint is the hostname of the bucket
                                      endpoint
                                    type: string
                                  key:
                                    description: Key is the path in the bucket where
                                      the artifact resides
                                    type: string
                                  lifecycleRule:
                                    description: LifecycleRule specifies how to manage
                                      bucket's lifecycle
                                    properties:
                                      markDeletionAfterDays:
                                        description: MarkDeletionAfterDays is the
                                          number of days before we delete objects
                                          in the bucket
                                        format: int32
                                        type: integer
                                      markInfrequentAccessAfterDays:
                                        description: MarkInfrequentAccessAfterDays
                                          is the number of days before we convert
                                          the objects in the bucket to Infrequent
                                          Access (IA) storage type
                                        format: int32
                                        type: integer
                                    type: object
                                  secretKeySecret:
                                    description: SecretKeySecret is the secret selector
                                      to the bucket's secret key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  securityToken:
                                    description: 'SecurityToken is the user''s temporary
                                      security token. For more details, check out:
                                      https://www.alibabacloud.com/help/doc-detail/100624.htm'
                                    type: string
                                  useSDKCreds:
                                    description: UseSDKCreds tells the driver to figure
                                      out credentials based on sdk defaults.
                                    type: boolean
                                required:
                                - key
                                type: object
                              path:
                                description: Path is the container path to the artifact
                                type: string
                              plugin:
                                description: Plugin contains plugin artifact location
                                  details
                                properties:
                                  configuration:
                                    description: Configuration is the plugin defined
                                      configuration for the artifact driver plugin
                                    type: string
                                  connectionTimeoutSeconds:
                                    description: ConnectionTimeoutSeconds is the timeout
                                      for the artifact driver connection, overriding
                                      the driver's timeout
                                    format: int32
                                    type: integer
                                  key:
                                    description: Key is the path in the artifact repository
                                      where the artifact resides
                                    type: string
                                  name:
                                    description: Name is the name of the artifact
                                      driver plugin
                                    type: string
                                required:
                                - key
                                type: object
                              raw:
                                description: Raw contains raw artifact location details
                                properties:
                                  data:
                                    description: Data is the string contents of the
                                      artifact
                                    type: string
                                required:
                                - data
                                type: object
                              recurseMode:
                                description: If mode is set, apply the permission
                                  recursively into the artifact if it is a folder
                                type: boolean
                              s3:
                                description: S3 contains S3 artifact location details
                                properties:
                                  accessKeySecret:
                                    description: AccessKeySecret is the secret selector
                                      to the bucket's access key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  bucket:
                                    description: Bucket is the name of the bucket
                                    type: string
                                  caSecret:
                                    description: CASecret specifies the secret that
                                      contains the CA, used to verify the TLS connection
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  createBucketIfNotPresent:
                                    description: CreateBucketIfNotPresent tells the
                                      driver to attempt to create the S3 bucket for
                                      output artifacts, if it doesn't exist. Setting
                                      Enabled Encryption will apply either SSE-S3
                                      to the bucket if KmsKeyId is not set or SSE-KMS
                                      if it is.
                                    properties:
                                      objectLocking:
                                        description: ObjectLocking Enable object locking
                                        type: boolean
                                    type: object
                                  encryptionOptions:
                                    description: S3EncryptionOptions used to determine
                                      encryption options during s3 operations
                                    properties:
                                      enableEncryption:
                                        description: EnableEncryption tells the driver
                                          to encrypt objects if set to true. If kmsKeyId
                                          and serverSideCustomerKeySecret are not
                                          set, SSE-S3 will be used
                                        type: boolean
                                      kmsEncryptionContext:
                                        description: KmsEncryptionContext is a json
                                          blob that contains an encryption context.
                                          See https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
                                          for more information
                                        type: string
                                      kmsKeyId:
                                        description: KMSKeyId tells the driver to
                                          encrypt the object using the specified KMS
                                          Key.
                                        type: string
                                      serverSideCustomerKeySecret:
                                        description: ServerSideCustomerKeySecret tells
                                          the driver to encrypt the output artifacts
                                          using SSE-C with the specified secret.
                                        properties:
                                          key:
                                            description: The key of the secret to
                                              select from.  Must be a valid secret
                                              key.
                                            type: string
                                          name:
                                            default: ""
                                            description: |-
                                              Name of the referent.
                                              This field is effectively required, but due to backwards compatibility is
                                              allowed to be empty. Instances of this type with an empty value here are
                                              almost certainly wrong.
                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                            type: string
                                          optional:
                                            description: Specify whether the Secret
                                              or its key must be defined
                                            type: boolean
                                        required:
                                        - key
                                        type: object
                                        x-kubernetes-map-type: atomic
                                    type: object
                                  endpoint:
                                    description: Endpoint is the hostname of the bucket
                                      endpoint
                                    type: string
                                  insecure:
                                    description: Insecure will connect to the service
                                      with TLS
                                    type: boolean
                                  key:
                                    description: Key is the key in the bucket where
                                      the artifact resides
                                    type: string
                                  region:
                                    description: Region contains the optional bucket
                                      region
                                    type: string
                                  roleARN:
                                    description: RoleARN is the Amazon Resource Name
                                      (ARN) of the role to assume.
                                    type: string
                                  secretKeySecret:
                                    description: SecretKeySecret is the secret selector
                                      to the bucket's secret key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  sessionTokenSecret:
                                    description: SessionTokenSecret is used for ephemeral
                                      credentials like an IAM assume role or S3 access
                                      grant
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  useSDKCreds:
                                    description: UseSDKCreds tells the driver to figure
                                      out credentials based on sdk defaults.
                                    type: boolean
                                type: object
                              subPath:
                                description: SubPath allows an artifact to be sourced
                                  from a subpath within the specified source
                                type: string
                            required:
                            - name
                            type: object
                            x-kubernetes-validations:
                            - message: at most one artifact location can be specified
                              rule: '(has(self.s3) ? 1 : 0) + (has(self.git) ? 1 :
                                0) + (has(self.http) ? 1 : 0) + (has(self.artifactory)
                                ? 1 : 0) + (has(self.hdfs) ? 1 : 0) + (has(self.raw)
                                ? 1 : 0) + (has(self.oss) ? 1 : 0) + (has(self.gcs)
                                ? 1 : 0) + (has(self.azure) ? 1 : 0) + (has(self.plugin)
                                ? 1 : 0) <= 1'
                          type: array
                        parameters:
                          description: Parameters is the list of parameters to pass
                            to the template or workflow
                          items:
                            description: Parameter indicate a passed string parameter
                              to a service template with an optional default value
                            properties:
                              default:
                                description: Default is the default value to use for
                                  an input parameter if a value was not supplied
                                type: string
                              description:
                                description: Description is the parameter description
                                type: string
                              enum:
                                description: Enum holds a list of string values to
                                  choose from, for the actual value of the parameter
                                items:
                                  description: |-
                                    * It's JSON type is just string.
                                    * It will unmarshall int64, int32, float64, float32, boolean, a plain string and represents it as string.
                                    * It will marshall back to string - marshalling is not symmetric.
                                  type: string
                                minItems: 1
                                type: array
                              globalName:
                                description: |-
                                  GlobalName exports an output parameter to the global scope, making it available as
                                  '{{workflow.outputs.parameters.XXXX}} and in workflow.status.outputs.parameters
                                type: string
                              name:
                                description: Name is the parameter name
                                pattern: ^[-a-zA-Z0-9_]+$
                                type: string
                              value:
                                description: |-
                                  Value is the literal value to use for the parameter.
                                  If specified in the context of an input parameter, any passed values take precedence over the specified value
                                type: string
                              valueFrom:
                                description: ValueFrom is the source for the output
                                  parameter's value
                                properties:
                                  configMapKeyRef:
                                    description: ConfigMapKeyRef is configmap selector
                                      for input parameter configuration
                                    properties:
                                      key:
                                        description: The key to select.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the ConfigMap
                                          or its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  default:
                                    description: Default specifies a value to be used
                                      if retrieving the value from the specified source
                                      fails
                                    type: string
                                  event:
                                    description: Selector (https://github.com/expr-lang/expr)
                                      that is evaluated against the event to get the
                                      value of the parameter. E.g. `payload.message`
                                    type: string
                                  expression:
                                    description: Expression, if defined, is evaluated
                                      to specify the value for the parameter
                                    type: string
                                  jqFilter:
                                    description: JQFilter expression against the resource
                                      object in resource templates
                                    type: string
                                  jsonPath:
                                    description: JSONPath of a resource to retrieve
                                      an output parameter value from in resource templates
                                    type: string
                                  parameter:
                                    description: |-
                                      Parameter reference to a step or dag task in which to retrieve an output parameter value from
                                      (e.g. '{{steps.mystep.outputs.myparam}}')
                                    type: string
                                  path:
                                    description: Path in the container to retrieve
                                      an output parameter value from in container
                                      templates
                                    type: string
                                  supplied:
                                    description: Supplied value to be filled in directly,
                                      either through the CLI, API, etc.
                                    type: object
                                type: object
                            required:
                            - name
                            type: object
                          type: array
                      type: object
                    expression:
                      description: |-
                        Expression is a condition expression for when a node will be retried. If it evaluates to false, the node will not
                        be retried and the retry strategy will be ignored
                      type: string
                    template:
                      description: Template is the name of the template to execute
                        by the hook
                      type: string
                    templateRef:
                      description: TemplateRef is the reference to the template resource
                        to execute by the hook
                      properties:
                        clusterScope:
                          description: ClusterScope indicates the referred template
                            is cluster scoped (i.e. a ClusterWorkflowTemplate).
                          type: boolean
                        name:
                          description: Name is the resource name of the template.
                          type: string
                        template:
                          description: Template is the name of referred template in
                            the resource.
                          type: string
                      type: object
                  type: object
                description: |-
                  Hooks holds the lifecycle hook which is invoked at lifecycle of
                  step, irrespective of the success, failure, or error status of the primary step
                type: object
              hostAliases:
                items:
                  description: |-
                    HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the
                    pod's hosts file.
                  properties:
                    hostnames:
                      description: Hostnames for the above IP address.
                      items:
                        type: string
                      type: array
                      x-kubernetes-list-type: atomic
                    ip:
                      description: IP address of the host file entry.
                      type: string
                  required:
                  - ip
                  type: object
                type: array
              hostNetwork:
                description: Host networking requested for this workflow pod. Default
                  to false.
                type: boolean
              imagePullSecrets:
                description: |-
                  ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images
                  in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets
                  can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet.
                  More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
                items:
                  description: |-
                    LocalObjectReference contains enough information to let you locate the
                    referenced object inside the same namespace.
                  properties:
                    name:
                      default: ""
                      description: |-
                        Name of the referent.
                        This field is effectively required, but due to backwards compatibility is
                        allowed to be empty. Instances of this type with an empty value here are
                        almost certainly wrong.
                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      type: string
                  type: object
                  x-kubernetes-map-type: atomic
                type: array
              metrics:
                description: Metrics are a list of metrics emitted from this Workflow
                properties:
                  prometheus:
                    description: |-
                      Prometheus is a list of prometheus metrics to be emitted
                      MaxItems is an artificial limit to limit CEL validation costs - see note at top of file
                    items:
                      description: Prometheus is a prometheus metric to be emitted
                      properties:
                        counter:
                          description: Counter is a counter metric
                          properties:
                            value:
                              description: Value is the value of the metric
                              minLength: 1
                              type: string
                          required:
                          - value
                          type: object
                        gauge:
                          description: Gauge is a gauge metric
                          properties:
                            operation:
                              description: Operation defines the operation to apply
                                with value and the metrics' current value
                              enum:
                              - Set
                              - Add
                              - Sub
                              type: string
                            realtime:
                              description: Realtime emits this metric in real time
                                if applicable
                              type: boolean
                            value:
                              description: |-
                                Value is the value to be used in the operation with the metric's current value. If no operation is set,
                                value is the value of the metric
                                MaxLength is an artificial limit to limit CEL validation costs - see note at top of file
                              maxLength: 256
                              minLength: 1
                              type: string
                          required:
                          - realtime
                          - value
                          type: object
                          x-kubernetes-validations:
                          - message: '''resourcesDuration.*'' metrics cannot be used
                              in real-time gauges'
                            rule: '!has(self.realtime) || !self.realtime || !self.value.contains(''resourcesDuration.'')'
                        help:
                          description: Help is a string that describes the metric
                          minLength: 1
                          type: string
                        histogram:
                          description: Histogram is a histogram metric
                          properties:
                            buckets:
                              description: Buckets is a list of bucket divisors for
                                the histogram
                              items:
                                type: number
                              type: array
                            value:
                              description: Value is the value of the metric
                              minLength: 1
                              type: string
                          required:
                          - buckets
                          - value
                          type: object
                        labels:
                          description: Labels is a list of metric labels
                          items:
                            description: MetricLabel is a single label for a prometheus
                              metric
                            properties:
                              key:
                                pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
                                type: string
                              value:
                                type: string
                            required:
                            - key
                            - value
                            type: object
                          type: array
                        name:
                          description: Name is the name of the metric
                          pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
                          type: string
                        when:
                          description: When is a conditional statement that decides
                            when to emit the metric
                          type: string
                      required:
                      - help
                      - name
                      type: object
                    maxItems: 100
                    type: array
                required:
                - prometheus
                type: object
              nodeSelector:
                additionalProperties:
                  type: string
                description: |-
                  NodeSelector is a selector which will result in all pods of the workflow
                  to be scheduled on the selected node(s). This is able to be overridden by
                  a nodeSelector specified in the template.
                type: object
              onExit:
                description: |-
                  OnExit is a template reference which is invoked at the end of the
                  workflow, irrespective of the success, failure, or error of the
                  primary workflow.
                type: string
              parallelism:
                description: Parallelism limits the max total parallel pods that can
                  execute at the same time in a workflow
                format: int64
                minimum: 1
                type: integer
              podDisruptionBudget:
                description: |-
                  PodDisruptionBudget holds the number of concurrent disruptions that you allow for Workflow's Pods.
                  Controller will automatically add the selector with workflow name, if selector is empty.
                  Optional: Defaults to empty.
                properties:
                  maxUnavailable:
                    anyOf:
                    - type: integer
                    - type: string
                    description: |-
                      An eviction is allowed if at most "maxUnavailable" pods selected by
                      "selector" are unavailable after the eviction, i.e. even in absence of
                      the evicted pod. For example, one can prevent all voluntary evictions
                      by specifying 0. This is a mutually exclusive setting with "minAvailable".
                    x-kubernetes-int-or-string: true
                  minAvailable:
                    anyOf:
                    - type: integer
                    - type: string
                    description: |-
                      An eviction is allowed if at least "minAvailable" pods selected by
                      "selector" will still be available after the eviction, i.e. even in the
                      absence of the evicted pod.  So for example you can prevent all voluntary
                      evictions by specifying "100%".
                    x-kubernetes-int-or-string: true
                  selector:
                    description: |-
                      Label query over pods whose evictions are managed by the disruption
                      budget.
                      A null selector will match no pods, while an empty ({}) selector will select
                      all pods within the namespace.
                    properties:
                      matchExpressions:
                        description: matchExpressions is a list of label selector
                          requirements. The requirements are ANDed.
                        items:
                          description: |-
                            A label selector requirement is a selector that contains values, a key, and an operator that
                            relates the key and values.
                          properties:
                            key:
                              description: key is the label key that the selector
                                applies to.
                              type: string
                            operator:
                              description: |-
                                operator represents a key's relationship to a set of values.
                                Valid operators are In, NotIn, Exists and DoesNotExist.
                              type: string
                            values:
                              description: |-
                                values is an array of string values. If the operator is In or NotIn,
                                the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                the values array must be empty. This array is replaced during a strategic
                                merge patch.
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                          required:
                          - key
                          - operator
                          type: object
                        type: array
                        x-kubernetes-list-type: atomic
                      matchLabels:
                        additionalProperties:
                          type: string
                        description: |-
                          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                          map is equivalent to an element of matchExpressions, whose key field is "key", the
                          operator is "In", and the values array contains only "value". The requirements are ANDed.
                        type: object
                    type: object
                    x-kubernetes-map-type: atomic
                  unhealthyPodEvictionPolicy:
                    description: |-
                      UnhealthyPodEvictionPolicy defines the criteria for when unhealthy pods
                      should be considered for eviction. Current implementation considers healthy pods,
                      as pods that have status.conditions item with type="Ready",status="True".

                      Valid policies are IfHealthyBudget and AlwaysAllow.
                      If no policy is specified, the default behavior will be used,
                      which corresponds to the IfHealthyBudget policy.

                      IfHealthyBudget policy means that running pods (status.phase="Running"),
                      but not yet healthy can be evicted only if the guarded application is not
                      disrupted (status.currentHealthy is at least equal to status.desiredHealthy).
                      Healthy pods will be subject to the PDB for eviction.

                      AlwaysAllow policy means that all running pods (status.phase="Running"),
                      but not yet healthy are considered disrupted and can be evicted regardless
                      of whether the criteria in a PDB is met. This means perspective running
                      pods of a disrupted application might not get a chance to become healthy.
                      Healthy pods will be subject to the PDB for eviction.

                      Additional policies may be added in the future.
                      Clients making eviction decisions should disallow eviction of unhealthy pods
                      if they encounter an unrecognized policy in this field.
                    type: string
                type: object
              podGC:
                description: PodGC describes the strategy to use when deleting completed
                  pods
                properties:
                  deleteDelayDuration:
                    description: DeleteDelayDuration specifies the duration before
                      pods in the GC queue get deleted.
                    type: string
                  labelSelector:
                    description: LabelSelector is the label selector to check if the
                      pods match the labels before being added to the pod GC queue.
                    properties:
                      matchExpressions:
                        description: matchExpressions is a list of label selector
                          requirements. The requirements are ANDed.
                        items:
                          description: |-
                            A label selector requirement is a selector that contains values, a key, and an operator that
                            relates the key and values.
                          properties:
                            key:
                              description: key is the label key that the selector
                                applies to.
                              type: string
                            operator:
                              description: |-
                                operator represents a key's relationship to a set of values.
                                Valid operators are In, NotIn, Exists and DoesNotExist.
                              type: string
                            values:
                              description: |-
                                values is an array of string values. If the operator is In or NotIn,
                                the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                the values array must be empty. This array is replaced during a strategic
                                merge patch.
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                          required:
                          - key
                          - operator
                          type: object
                        type: array
                        x-kubernetes-list-type: atomic
                      matchLabels:
                        additionalProperties:
                          type: string
                        description: |-
                          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                          map is equivalent to an element of matchExpressions, whose key field is "key", the
                          operator is "In", and the values array contains only "value". The requirements are ANDed.
                        type: object
                    type: object
                    x-kubernetes-map-type: atomic
                  strategy:
                    description: Strategy is the strategy to use. One of "OnPodCompletion",
                      "OnPodSuccess", "OnWorkflowCompletion", "OnWorkflowSuccess".
                      If unset, does not delete Pods
                    enum:
                    - ""
                    - OnPodCompletion
                    - OnPodSuccess
                    - OnWorkflowCompletion
                    - OnWorkflowSuccess
                    type: string
                type: object
              podMetadata:
                description: PodMetadata defines additional metadata that should be
                  applied to workflow pods
                properties:
                  annotations:
                    additionalProperties:
                      type: string
                    type: object
                  labels:
                    additionalProperties:
                      type: string
                    type: object
                type: object
              podPriorityClassName:
                description: PriorityClassName to apply to workflow pods.
                type: string
              podSpecPatch:
                description: |-
                  PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of
                  container fields which are not strings (e.g. resource limits).
                type: string
              priority:
                description: Priority is used if controller is configured to process
                  limited number of workflows in parallel. Workflows with higher priority
                  are processed first.
                format: int32
                type: integer
              retryStrategy:
                description: RetryStrategy for all templates in the workflow.
                properties:
                  affinity:
                    description: Affinity prevents running workflow's step on the
                      same host
                    properties:
                      nodeAntiAffinity:
                        description: |-
                          RetryNodeAntiAffinity is a placeholder for future expansion, only empty nodeAntiAffinity is allowed.
                          In order to prevent running steps on the same host, it uses "kubernetes.io/hostname".
                        type: object
                    type: object
                  backoff:
                    description: Backoff is a backoff strategy
                    properties:
                      cap:
                        description: |-
                          Cap is a limit on revised values of the duration parameter. If a
                          multiplication by the factor parameter would make the duration
                          exceed the cap then the duration is set to the cap
                        type: string
                      duration:
                        description: Duration is the amount to back off. Default unit
                          is seconds, but could also be a duration (e.g. "2m", "1h")
                        type: string
                      factor:
                        anyOf:
                        - type: integer
                        - type: string
                        description: Factor is a factor to multiply the base duration
                          after each failed retry
                        x-kubernetes-int-or-string: true
                      maxDuration:
                        description: |-
                          MaxDuration is the maximum amount of time allowed for a workflow in the backoff strategy.
                          It is important to note that if the workflow template includes activeDeadlineSeconds, the pod's deadline is initially set with activeDeadlineSeconds.
                          However, when the workflow fails, the pod's deadline is then overridden by maxDuration.
                          This ensures that the workflow does not exceed the specified maximum duration when retries are involved.
                        type: string
                    type: object
                  expression:
                    description: |-
                      Expression is a condition expression for when a node will be retried. If it evaluates to false, the node will not
                      be retried and the retry strategy will be ignored
                    type: string
                  limit:
                    anyOf:
                    - type: integer
                    - type: string
                    description: |-
                      Limit is the maximum number of retry attempts when retrying a container. It does not include the original
                      container; the maximum number of total attempts will be `limit + 1`.
                    x-kubernetes-int-or-string: true
                  retryPolicy:
                    description: RetryPolicy is a policy of NodePhase statuses that
                      will be retried
                    enum:
                    - Always
                    - OnFailure
                    - OnError
                    - OnTransientError
                    type: string
                type: object
              schedulerName:
                description: |-
                  Set scheduler name for all pods.
                  Will be overridden if container/script template's scheduler name is set.
                  Default scheduler will be used if neither specified.
                type: string
              securityContext:
                description: |-
                  SecurityContext holds pod-level security attributes and common container settings.
                  Optional: Defaults to empty.  See type description for default values of each field.
                properties:
                  appArmorProfile:
                    description: |-
                      appArmorProfile is the AppArmor options to use by the containers in this pod.
                      Note that this field cannot be set when spec.os.name is windows.
                    properties:
                      localhostProfile:
                        description: |-
                          localhostProfile indicates a profile loaded on the node that should be used.
                          The profile must be preconfigured on the node to work.
                          Must match the loaded name of the profile.
                          Must be set if and only if type is "Localhost".
                        type: string
                      type:
                        description: |-
                          type indicates which kind of AppArmor profile will be applied.
                          Valid options are:
                            Localhost - a profile pre-loaded on the node.
                            RuntimeDefault - the container runtime's default profile.
                            Unconfined - no AppArmor enforcement.
                        type: string
                    required:
                    - type
                    type: object
                  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:

                      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----

                      If unset, the Kubelet will not modify the ownership and permissions of any volume.
                      Note that this field cannot be set when spec.os.name is windows.
                    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.
                      Note that this field cannot be set when spec.os.name is windows.
                    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.
                      Note that this field cannot be set when spec.os.name is windows.
                    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.
                      Note that this field cannot be set when spec.os.name is windows.
                    format: int64
                    type: integer
                  seLinuxChangePolicy:
                    description: |-
                      seLinuxChangePolicy defines how the container's SELinux label is applied to all volumes used by the Pod.
                      It has no effect on nodes that do not support SELinux or to volumes does not support SELinux.
                      Valid values are "MountOption" and "Recursive".

                      "Recursive" means relabeling of all files on all Pod volumes by the container runtime.
                      This may be slow for large volumes, but allows mixing privileged and unprivileged Pods sharing the same volume on the same node.

                      "MountOption" mounts all eligible Pod volumes with `-o context` mount option.
                      This requires all Pods that share the same volume to use the same SELinux label.
                      It is not possible to share the same volume among privileged and unprivileged Pods.
                      Eligible volumes are in-tree FibreChannel and iSCSI volumes, and all CSI volumes
                      whose CSI driver announces SELinux support by setting spec.seLinuxMount: true in their
                      CSIDriver instance. Other volumes are always re-labelled recursively.
                      "MountOption" value is allowed only when SELinuxMount feature gate is enabled.

                      If not specified and SELinuxMount feature gate is enabled, "MountOption" is used.
                      If not specified and SELinuxMount feature gate is disabled, "MountOption" is used for ReadWriteOncePod volumes
                      and "Recursive" for all other volumes.

                      This field affects only Pods that have SELinux label set, either in PodSecurityContext or in SecurityContext of all containers.

                      All Pods that use the same volume should use the same seLinuxChangePolicy, otherwise some pods can get stuck in ContainerCreating state.
                      Note that this field cannot be set when spec.os.name is windows.
                    type: string
                  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.
                      Note that this field cannot be set when spec.os.name is windows.
                    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.
                      Note that this field cannot be set when spec.os.name is windows.
                    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 be set if type is "Localhost". Must NOT be set for any other type.
                        type: string
                      type:
                        description: |-
                          type indicates which kind of seccomp profile will be applied.
                          Valid options are:

                          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 and fsGroup (if specified).  If
                      the SupplementalGroupsPolicy feature is enabled, the
                      supplementalGroupsPolicy field determines whether these are in addition
                      to or instead of any group memberships defined in the container image.
                      If unspecified, no additional groups are added, though group memberships
                      defined in the container image may still be used, depending on the
                      supplementalGroupsPolicy field.
                      Note that this field cannot be set when spec.os.name is windows.
                    items:
                      format: int64
                      type: integer
                    type: array
                    x-kubernetes-list-type: atomic
                  supplementalGroupsPolicy:
                    description: |-
                      Defines how supplemental groups of the first container processes are calculated.
                      Valid values are "Merge" and "Strict". If not specified, "Merge" is used.
                      (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled
                      and the container runtime must implement support for this feature.
                      Note that this field cannot be set when spec.os.name is windows.
                    type: string
                  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.
                      Note that this field cannot be set when spec.os.name is windows.
                    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
                    x-kubernetes-list-type: atomic
                  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.
                      Note that this field cannot be set when spec.os.name is linux.
                    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
                      hostProcess:
                        description: |-
                          HostProcess determines if a container should be run as a 'Host Process' container.
                          All of a Pod's containers must have the same effective HostProcess value
                          (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).
                          In addition, if HostProcess is true then HostNetwork must also be set to true.
                        type: boolean
                      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
              serviceAccountName:
                description: ServiceAccountName is the name of the ServiceAccount
                  to run all pods of the workflow as.
                type: string
              shutdown:
                description: Shutdown will shutdown the workflow according to its
                  ShutdownStrategy
                type: string
              suspend:
                description: Suspend will suspend the workflow and prevent execution
                  of any future steps in the workflow
                type: boolean
              synchronization:
                description: Synchronization holds synchronization lock configuration
                  for this Workflow
                properties:
                  mutexes:
                    description: 'v3.6 and after: Mutexes holds the list of Mutex
                      lock details'
                    items:
                      description: Mutex holds Mutex configuration
                      properties:
                        database:
                          description: Database specifies this is database controlled
                            if this is set true
                          type: boolean
                        name:
                          description: name of the mutex
                          type: string
                        namespace:
                          description: 'Namespace is the namespace of the mutex, default:
                            [namespace of workflow]'
                          type: string
                      type: object
                    type: array
                  semaphores:
                    description: 'v3.6 and after: Semaphores holds the list of Semaphores
                      configuration'
                    items:
                      description: SemaphoreRef is a reference of Semaphore
                      properties:
                        configMapKeyRef:
                          description: ConfigMapKeyRef is a configmap selector for
                            Semaphore configuration
                          properties:
                            key:
                              description: The key to select.
                              type: string
                            name:
                              default: ""
                              description: |-
                                Name of the referent.
                                This field is effectively required, but due to backwards compatibility is
                                allowed to be empty. Instances of this type with an empty value here are
                                almost certainly wrong.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                            optional:
                              description: Specify whether the ConfigMap or its key
                                must be defined
                              type: boolean
                          required:
                          - key
                          type: object
                          x-kubernetes-map-type: atomic
                        database:
                          description: SyncDatabaseRef is a database reference for
                            Semaphore configuration
                          properties:
                            key:
                              type: string
                          required:
                          - key
                          type: object
                        namespace:
                          description: 'Namespace is the namespace of the configmap,
                            default: [namespace of workflow]'
                          type: string
                      type: object
                    type: array
                type: object
              templateDefaults:
                description: |-
                  TemplateDefaults holds default template values that will apply to all templates in the Workflow, unless overridden on the template-level.
                  All nested field descriptions have been dropped due to Kubernetes size limitations.
                properties:
                  activeDeadlineSeconds:
                    anyOf:
                    - type: integer
                    - type: string
                    x-kubernetes-int-or-string: true
                  affinity:
                    properties:
                      nodeAffinity:
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                preference:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchFields:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                  x-kubernetes-map-type: atomic
                                weight:
                                  format: int32
                                  type: integer
                              required:
                              - preference
                              - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            properties:
                              nodeSelectorTerms:
                                items:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchFields:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                  x-kubernetes-map-type: atomic
                                type: array
                                x-kubernetes-list-type: atomic
                            required:
                            - nodeSelectorTerms
                            type: object
                            x-kubernetes-map-type: atomic
                        type: object
                      podAffinity:
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                podAffinityTerm:
                                  properties:
                                    labelSelector:
                                      properties:
                                        matchExpressions:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              operator:
                                                type: string
                                              values:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      properties:
                                        matchExpressions:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              operator:
                                                type: string
                                              values:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                weight:
                                  format: int32
                                  type: integer
                              required:
                              - podAffinityTerm
                              - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                labelSelector:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                matchLabelKeys:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                mismatchLabelKeys:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                namespaceSelector:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                namespaces:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                topologyKey:
                                  type: string
                              required:
                              - topologyKey
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                        type: object
                      podAntiAffinity:
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                podAffinityTerm:
                                  properties:
                                    labelSelector:
                                      properties:
                                        matchExpressions:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              operator:
                                                type: string
                                              values:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    matchLabelKeys:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    mismatchLabelKeys:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    namespaceSelector:
                                      properties:
                                        matchExpressions:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              operator:
                                                type: string
                                              values:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    namespaces:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    topologyKey:
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                weight:
                                  format: int32
                                  type: integer
                              required:
                              - podAffinityTerm
                              - weight
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          requiredDuringSchedulingIgnoredDuringExecution:
                            items:
                              properties:
                                labelSelector:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                matchLabelKeys:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                mismatchLabelKeys:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                namespaceSelector:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                namespaces:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                topologyKey:
                                  type: string
                              required:
                              - topologyKey
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                        type: object
                    type: object
                  annotations:
                    additionalProperties:
                      type: string
                    type: object
                  archiveLocation:
                    properties:
                      archiveLogs:
                        type: boolean
                      artifactory:
                        properties:
                          passwordSecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          url:
                            type: string
                          usernameSecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                        required:
                        - url
                        type: object
                      azure:
                        properties:
                          accountKeySecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          blob:
                            type: string
                          container:
                            type: string
                          endpoint:
                            type: string
                          useSDKCreds:
                            type: boolean
                        required:
                        - blob
                        - container
                        - endpoint
                        type: object
                      gcs:
                        properties:
                          bucket:
                            type: string
                          key:
                            type: string
                          serviceAccountKeySecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                        required:
                        - key
                        type: object
                      git:
                        properties:
                          branch:
                            type: string
                          depth:
                            format: int64
                            type: integer
                          disableSubmodules:
                            type: boolean
                          fetch:
                            items:
                              type: string
                            type: array
                          insecureIgnoreHostKey:
                            type: boolean
                          insecureSkipTLS:
                            type: boolean
                          passwordSecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          repo:
                            type: string
                          revision:
                            type: string
                          singleBranch:
                            type: boolean
                          sshPrivateKeySecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          usernameSecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                        required:
                        - repo
                        type: object
                      hdfs:
                        properties:
                          addresses:
                            items:
                              type: string
                            type: array
                          dataTransferProtection:
                            type: string
                          force:
                            type: boolean
                          hdfsUser:
                            type: string
                          krbCCacheSecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          krbConfigConfigMap:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          krbKeytabSecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          krbRealm:
                            type: string
                          krbServicePrincipalName:
                            type: string
                          krbUsername:
                            type: string
                          path:
                            type: string
                        required:
                        - path
                        type: object
                      http:
                        properties:
                          auth:
                            properties:
                              basicAuth:
                                properties:
                                  passwordSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  usernameSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                type: object
                              clientCert:
                                properties:
                                  clientCertSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  clientKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                type: object
                              oauth2:
                                properties:
                                  clientIDSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  clientSecretSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  endpointParams:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - key
                                      type: object
                                    type: array
                                  scopes:
                                    items:
                                      type: string
                                    type: array
                                  tokenURLSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                type: object
                            type: object
                          headers:
                            items:
                              properties:
                                name:
                                  type: string
                                value:
                                  type: string
                              required:
                              - name
                              - value
                              type: object
                            type: array
                          url:
                            type: string
                        required:
                        - url
                        type: object
                      oss:
                        properties:
                          accessKeySecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          bucket:
                            type: string
                          createBucketIfNotPresent:
                            type: boolean
                          endpoint:
                            type: string
                          key:
                            type: string
                          lifecycleRule:
                            properties:
                              markDeletionAfterDays:
                                format: int32
                                type: integer
                              markInfrequentAccessAfterDays:
                                format: int32
                                type: integer
                            type: object
                          secretKeySecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          securityToken:
                            type: string
                          useSDKCreds:
                            type: boolean
                        required:
                        - key
                        type: object
                      plugin:
                        properties:
                          configuration:
                            type: string
                          connectionTimeoutSeconds:
                            format: int32
                            type: integer
                          key:
                            type: string
                          name:
                            type: string
                        required:
                        - key
                        type: object
                      raw:
                        properties:
                          data:
                            type: string
                        required:
                        - data
                        type: object
                      s3:
                        properties:
                          accessKeySecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          bucket:
                            type: string
                          caSecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          createBucketIfNotPresent:
                            properties:
                              objectLocking:
                                type: boolean
                            type: object
                          encryptionOptions:
                            properties:
                              enableEncryption:
                                type: boolean
                              kmsEncryptionContext:
                                type: string
                              kmsKeyId:
                                type: string
                              serverSideCustomerKeySecret:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    default: ""
                                    type: string
                                  optional:
                                    type: boolean
                                required:
                                - key
                                type: object
                                x-kubernetes-map-type: atomic
                            type: object
                          endpoint:
                            type: string
                          insecure:
                            type: boolean
                          key:
                            type: string
                          region:
                            type: string
                          roleARN:
                            type: string
                          secretKeySecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          sessionTokenSecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          useSDKCreds:
                            type: boolean
                        type: object
                    type: object
                    x-kubernetes-validations:
                    - message: at most one artifact location can be specified
                      rule: '(has(self.s3) ? 1 : 0) + (has(self.git) ? 1 : 0) + (has(self.http)
                        ? 1 : 0) + (has(self.artifactory) ? 1 : 0) + (has(self.hdfs)
                        ? 1 : 0) + (has(self.raw) ? 1 : 0) + (has(self.oss) ? 1 :
                        0) + (has(self.gcs) ? 1 : 0) + (has(self.azure) ? 1 : 0) +
                        (has(self.plugin) ? 1 : 0) <= 1'
                  automountServiceAccountToken:
                    type: boolean
                  container:
                    properties:
                      args:
                        items:
                          type: string
                        type: array
                        x-kubernetes-list-type: atomic
                      command:
                        items:
                          type: string
                        type: array
                        x-kubernetes-list-type: atomic
                      env:
                        items:
                          properties:
                            name:
                              type: string
                            value:
                              type: string
                            valueFrom:
                              properties:
                                configMapKeyRef:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                fieldRef:
                                  properties:
                                    apiVersion:
                                      type: string
                                    fieldPath:
                                      type: string
                                  required:
                                  - fieldPath
                                  type: object
                                  x-kubernetes-map-type: atomic
                                resourceFieldRef:
                                  properties:
                                    containerName:
                                      type: string
                                    divisor:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                    resource:
                                      type: string
                                  required:
                                  - resource
                                  type: object
                                  x-kubernetes-map-type: atomic
                                secretKeyRef:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        x-kubernetes-list-type: map
                      envFrom:
                        items:
                          properties:
                            configMapRef:
                              properties:
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              type: object
                              x-kubernetes-map-type: atomic
                            prefix:
                              type: string
                            secretRef:
                              properties:
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              type: object
                              x-kubernetes-map-type: atomic
                          type: object
                        type: array
                        x-kubernetes-list-type: atomic
                      image:
                        type: string
                      imagePullPolicy:
                        type: string
                      lifecycle:
                        properties:
                          postStart:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              sleep:
                                properties:
                                  seconds:
                                    format: int64
                                    type: integer
                                required:
                                - seconds
                                type: object
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                            type: object
                          preStop:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              sleep:
                                properties:
                                  seconds:
                                    format: int64
                                    type: integer
                                required:
                                - seconds
                                type: object
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                            type: object
                          stopSignal:
                            type: string
                        type: object
                      livenessProbe:
                        properties:
                          exec:
                            properties:
                              command:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                            type: object
                          failureThreshold:
                            format: int32
                            type: integer
                          grpc:
                            properties:
                              port:
                                format: int32
                                type: integer
                              service:
                                default: ""
                                type: string
                            required:
                            - port
                            type: object
                          httpGet:
                            properties:
                              host:
                                type: string
                              httpHeaders:
                                items:
                                  properties:
                                    name:
                                      type: string
                                    value:
                                      type: string
                                  required:
                                  - name
                                  - value
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              path:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                              scheme:
                                type: string
                            required:
                            - port
                            type: object
                          initialDelaySeconds:
                            format: int32
                            type: integer
                          periodSeconds:
                            format: int32
                            type: integer
                          successThreshold:
                            format: int32
                            type: integer
                          tcpSocket:
                            properties:
                              host:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                            required:
                            - port
                            type: object
                          terminationGracePeriodSeconds:
                            format: int64
                            type: integer
                          timeoutSeconds:
                            format: int32
                            type: integer
                        type: object
                      name:
                        type: string
                      ports:
                        items:
                          properties:
                            containerPort:
                              format: int32
                              type: integer
                            hostIP:
                              type: string
                            hostPort:
                              format: int32
                              type: integer
                            name:
                              type: string
                            protocol:
                              default: TCP
                              type: string
                          required:
                          - containerPort
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - containerPort
                        - protocol
                        x-kubernetes-list-type: map
                      readinessProbe:
                        properties:
                          exec:
                            properties:
                              command:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                            type: object
                          failureThreshold:
                            format: int32
                            type: integer
                          grpc:
                            properties:
                              port:
                                format: int32
                                type: integer
                              service:
                                default: ""
                                type: string
                            required:
                            - port
                            type: object
                          httpGet:
                            properties:
                              host:
                                type: string
                              httpHeaders:
                                items:
                                  properties:
                                    name:
                                      type: string
                                    value:
                                      type: string
                                  required:
                                  - name
                                  - value
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              path:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                              scheme:
                                type: string
                            required:
                            - port
                            type: object
                          initialDelaySeconds:
                            format: int32
                            type: integer
                          periodSeconds:
                            format: int32
                            type: integer
                          successThreshold:
                            format: int32
                            type: integer
                          tcpSocket:
                            properties:
                              host:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                            required:
                            - port
                            type: object
                          terminationGracePeriodSeconds:
                            format: int64
                            type: integer
                          timeoutSeconds:
                            format: int32
                            type: integer
                        type: object
                      resizePolicy:
                        items:
                          properties:
                            resourceName:
                              type: string
                            restartPolicy:
                              type: string
                          required:
                          - resourceName
                          - restartPolicy
                          type: object
                        type: array
                        x-kubernetes-list-type: atomic
                      resources:
                        properties:
                          claims:
                            items:
                              properties:
                                name:
                                  type: string
                                request:
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            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
                            type: object
                        type: object
                      restartPolicy:
                        type: string
                      securityContext:
                        properties:
                          allowPrivilegeEscalation:
                            type: boolean
                          appArmorProfile:
                            properties:
                              localhostProfile:
                                type: string
                              type:
                                type: string
                            required:
                            - type
                            type: object
                          capabilities:
                            properties:
                              add:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              drop:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                            type: object
                          privileged:
                            type: boolean
                          procMount:
                            type: string
                          readOnlyRootFilesystem:
                            type: boolean
                          runAsGroup:
                            format: int64
                            type: integer
                          runAsNonRoot:
                            type: boolean
                          runAsUser:
                            format: int64
                            type: integer
                          seLinuxOptions:
                            properties:
                              level:
                                type: string
                              role:
                                type: string
                              type:
                                type: string
                              user:
                                type: string
                            type: object
                          seccompProfile:
                            properties:
                              localhostProfile:
                                type: string
                              type:
                                type: string
                            required:
                            - type
                            type: object
                          windowsOptions:
                            properties:
                              gmsaCredentialSpec:
                                type: string
                              gmsaCredentialSpecName:
                                type: string
                              hostProcess:
                                type: boolean
                              runAsUserName:
                                type: string
                            type: object
                        type: object
                      startupProbe:
                        properties:
                          exec:
                            properties:
                              command:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                            type: object
                          failureThreshold:
                            format: int32
                            type: integer
                          grpc:
                            properties:
                              port:
                                format: int32
                                type: integer
                              service:
                                default: ""
                                type: string
                            required:
                            - port
                            type: object
                          httpGet:
                            properties:
                              host:
                                type: string
                              httpHeaders:
                                items:
                                  properties:
                                    name:
                                      type: string
                                    value:
                                      type: string
                                  required:
                                  - name
                                  - value
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              path:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                              scheme:
                                type: string
                            required:
                            - port
                            type: object
                          initialDelaySeconds:
                            format: int32
                            type: integer
                          periodSeconds:
                            format: int32
                            type: integer
                          successThreshold:
                            format: int32
                            type: integer
                          tcpSocket:
                            properties:
                              host:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                            required:
                            - port
                            type: object
                          terminationGracePeriodSeconds:
                            format: int64
                            type: integer
                          timeoutSeconds:
                            format: int32
                            type: integer
                        type: object
                      stdin:
                        type: boolean
                      stdinOnce:
                        type: boolean
                      terminationMessagePath:
                        type: string
                      terminationMessagePolicy:
                        type: string
                      tty:
                        type: boolean
                      volumeDevices:
                        items:
                          properties:
                            devicePath:
                              type: string
                            name:
                              type: string
                          required:
                          - devicePath
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - devicePath
                        x-kubernetes-list-type: map
                      volumeMounts:
                        items:
                          properties:
                            mountPath:
                              type: string
                            mountPropagation:
                              type: string
                            name:
                              type: string
                            readOnly:
                              type: boolean
                            recursiveReadOnly:
                              type: string
                            subPath:
                              type: string
                            subPathExpr:
                              type: string
                          required:
                          - mountPath
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - mountPath
                        x-kubernetes-list-type: map
                      workingDir:
                        type: string
                    type: object
                  containerSet:
                    properties:
                      containers:
                        items:
                          properties:
                            args:
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                            command:
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                            dependencies:
                              items:
                                type: string
                              type: array
                            env:
                              items:
                                properties:
                                  name:
                                    type: string
                                  value:
                                    type: string
                                  valueFrom:
                                    properties:
                                      configMapKeyRef:
                                        properties:
                                          key:
                                            type: string
                                          name:
                                            default: ""
                                            type: string
                                          optional:
                                            type: boolean
                                        required:
                                        - key
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      fieldRef:
                                        properties:
                                          apiVersion:
                                            type: string
                                          fieldPath:
                                            type: string
                                        required:
                                        - fieldPath
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      resourceFieldRef:
                                        properties:
                                          containerName:
                                            type: string
                                          divisor:
                                            anyOf:
                                            - type: integer
                                            - type: string
                                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                            x-kubernetes-int-or-string: true
                                          resource:
                                            type: string
                                        required:
                                        - resource
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      secretKeyRef:
                                        properties:
                                          key:
                                            type: string
                                          name:
                                            default: ""
                                            type: string
                                          optional:
                                            type: boolean
                                        required:
                                        - key
                                        type: object
                                        x-kubernetes-map-type: atomic
                                    type: object
                                required:
                                - name
                                type: object
                              type: array
                              x-kubernetes-list-map-keys:
                              - name
                              x-kubernetes-list-type: map
                            envFrom:
                              items:
                                properties:
                                  configMapRef:
                                    properties:
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  prefix:
                                    type: string
                                  secretRef:
                                    properties:
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    type: object
                                    x-kubernetes-map-type: atomic
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            image:
                              type: string
                            imagePullPolicy:
                              type: string
                            lifecycle:
                              properties:
                                postStart:
                                  properties:
                                    exec:
                                      properties:
                                        command:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      type: object
                                    httpGet:
                                      properties:
                                        host:
                                          type: string
                                        httpHeaders:
                                          items:
                                            properties:
                                              name:
                                                type: string
                                              value:
                                                type: string
                                            required:
                                            - name
                                            - value
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        path:
                                          type: string
                                        port:
                                          anyOf:
                                          - type: integer
                                          - type: string
                                          x-kubernetes-int-or-string: true
                                        scheme:
                                          type: string
                                      required:
                                      - port
                                      type: object
                                    sleep:
                                      properties:
                                        seconds:
                                          format: int64
                                          type: integer
                                      required:
                                      - seconds
                                      type: object
                                    tcpSocket:
                                      properties:
                                        host:
                                          type: string
                                        port:
                                          anyOf:
                                          - type: integer
                                          - type: string
                                          x-kubernetes-int-or-string: true
                                      required:
                                      - port
                                      type: object
                                  type: object
                                preStop:
                                  properties:
                                    exec:
                                      properties:
                                        command:
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      type: object
                                    httpGet:
                                      properties:
                                        host:
                                          type: string
                                        httpHeaders:
                                          items:
                                            properties:
                                              name:
                                                type: string
                                              value:
                                                type: string
                                            required:
                                            - name
                                            - value
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        path:
                                          type: string
                                        port:
                                          anyOf:
                                          - type: integer
                                          - type: string
                                          x-kubernetes-int-or-string: true
                                        scheme:
                                          type: string
                                      required:
                                      - port
                                      type: object
                                    sleep:
                                      properties:
                                        seconds:
                                          format: int64
                                          type: integer
                                      required:
                                      - seconds
                                      type: object
                                    tcpSocket:
                                      properties:
                                        host:
                                          type: string
                                        port:
                                          anyOf:
                                          - type: integer
                                          - type: string
                                          x-kubernetes-int-or-string: true
                                      required:
                                      - port
                                      type: object
                                  type: object
                                stopSignal:
                                  type: string
                              type: object
                            livenessProbe:
                              properties:
                                exec:
                                  properties:
                                    command:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                failureThreshold:
                                  format: int32
                                  type: integer
                                grpc:
                                  properties:
                                    port:
                                      format: int32
                                      type: integer
                                    service:
                                      default: ""
                                      type: string
                                  required:
                                  - port
                                  type: object
                                httpGet:
                                  properties:
                                    host:
                                      type: string
                                    httpHeaders:
                                      items:
                                        properties:
                                          name:
                                            type: string
                                          value:
                                            type: string
                                        required:
                                        - name
                                        - value
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    path:
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      x-kubernetes-int-or-string: true
                                    scheme:
                                      type: string
                                  required:
                                  - port
                                  type: object
                                initialDelaySeconds:
                                  format: int32
                                  type: integer
                                periodSeconds:
                                  format: int32
                                  type: integer
                                successThreshold:
                                  format: int32
                                  type: integer
                                tcpSocket:
                                  properties:
                                    host:
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      x-kubernetes-int-or-string: true
                                  required:
                                  - port
                                  type: object
                                terminationGracePeriodSeconds:
                                  format: int64
                                  type: integer
                                timeoutSeconds:
                                  format: int32
                                  type: integer
                              type: object
                            name:
                              type: string
                            ports:
                              items:
                                properties:
                                  containerPort:
                                    format: int32
                                    type: integer
                                  hostIP:
                                    type: string
                                  hostPort:
                                    format: int32
                                    type: integer
                                  name:
                                    type: string
                                  protocol:
                                    default: TCP
                                    type: string
                                required:
                                - containerPort
                                type: object
                              type: array
                              x-kubernetes-list-map-keys:
                              - containerPort
                              - protocol
                              x-kubernetes-list-type: map
                            readinessProbe:
                              properties:
                                exec:
                                  properties:
                                    command:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                failureThreshold:
                                  format: int32
                                  type: integer
                                grpc:
                                  properties:
                                    port:
                                      format: int32
                                      type: integer
                                    service:
                                      default: ""
                                      type: string
                                  required:
                                  - port
                                  type: object
                                httpGet:
                                  properties:
                                    host:
                                      type: string
                                    httpHeaders:
                                      items:
                                        properties:
                                          name:
                                            type: string
                                          value:
                                            type: string
                                        required:
                                        - name
                                        - value
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    path:
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      x-kubernetes-int-or-string: true
                                    scheme:
                                      type: string
                                  required:
                                  - port
                                  type: object
                                initialDelaySeconds:
                                  format: int32
                                  type: integer
                                periodSeconds:
                                  format: int32
                                  type: integer
                                successThreshold:
                                  format: int32
                                  type: integer
                                tcpSocket:
                                  properties:
                                    host:
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      x-kubernetes-int-or-string: true
                                  required:
                                  - port
                                  type: object
                                terminationGracePeriodSeconds:
                                  format: int64
                                  type: integer
                                timeoutSeconds:
                                  format: int32
                                  type: integer
                              type: object
                            resizePolicy:
                              items:
                                properties:
                                  resourceName:
                                    type: string
                                  restartPolicy:
                                    type: string
                                required:
                                - resourceName
                                - restartPolicy
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            resources:
                              properties:
                                claims:
                                  items:
                                    properties:
                                      name:
                                        type: string
                                      request:
                                        type: string
                                    required:
                                    - name
                                    type: object
                                  type: array
                                  x-kubernetes-list-map-keys:
                                  - name
                                  x-kubernetes-list-type: map
                                limits:
                                  additionalProperties:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                    x-kubernetes-int-or-string: true
                                  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
                                  type: object
                              type: object
                            restartPolicy:
                              type: string
                            securityContext:
                              properties:
                                allowPrivilegeEscalation:
                                  type: boolean
                                appArmorProfile:
                                  properties:
                                    localhostProfile:
                                      type: string
                                    type:
                                      type: string
                                  required:
                                  - type
                                  type: object
                                capabilities:
                                  properties:
                                    add:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    drop:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                privileged:
                                  type: boolean
                                procMount:
                                  type: string
                                readOnlyRootFilesystem:
                                  type: boolean
                                runAsGroup:
                                  format: int64
                                  type: integer
                                runAsNonRoot:
                                  type: boolean
                                runAsUser:
                                  format: int64
                                  type: integer
                                seLinuxOptions:
                                  properties:
                                    level:
                                      type: string
                                    role:
                                      type: string
                                    type:
                                      type: string
                                    user:
                                      type: string
                                  type: object
                                seccompProfile:
                                  properties:
                                    localhostProfile:
                                      type: string
                                    type:
                                      type: string
                                  required:
                                  - type
                                  type: object
                                windowsOptions:
                                  properties:
                                    gmsaCredentialSpec:
                                      type: string
                                    gmsaCredentialSpecName:
                                      type: string
                                    hostProcess:
                                      type: boolean
                                    runAsUserName:
                                      type: string
                                  type: object
                              type: object
                            startupProbe:
                              properties:
                                exec:
                                  properties:
                                    command:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                failureThreshold:
                                  format: int32
                                  type: integer
                                grpc:
                                  properties:
                                    port:
                                      format: int32
                                      type: integer
                                    service:
                                      default: ""
                                      type: string
                                  required:
                                  - port
                                  type: object
                                httpGet:
                                  properties:
                                    host:
                                      type: string
                                    httpHeaders:
                                      items:
                                        properties:
                                          name:
                                            type: string
                                          value:
                                            type: string
                                        required:
                                        - name
                                        - value
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    path:
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      x-kubernetes-int-or-string: true
                                    scheme:
                                      type: string
                                  required:
                                  - port
                                  type: object
                                initialDelaySeconds:
                                  format: int32
                                  type: integer
                                periodSeconds:
                                  format: int32
                                  type: integer
                                successThreshold:
                                  format: int32
                                  type: integer
                                tcpSocket:
                                  properties:
                                    host:
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      x-kubernetes-int-or-string: true
                                  required:
                                  - port
                                  type: object
                                terminationGracePeriodSeconds:
                                  format: int64
                                  type: integer
                                timeoutSeconds:
                                  format: int32
                                  type: integer
                              type: object
                            stdin:
                              type: boolean
                            stdinOnce:
                              type: boolean
                            terminationMessagePath:
                              type: string
                            terminationMessagePolicy:
                              type: string
                            tty:
                              type: boolean
                            volumeDevices:
                              items:
                                properties:
                                  devicePath:
                                    type: string
                                  name:
                                    type: string
                                required:
                                - devicePath
                                - name
                                type: object
                              type: array
                              x-kubernetes-list-map-keys:
                              - devicePath
                              x-kubernetes-list-type: map
                            volumeMounts:
                              items:
                                properties:
                                  mountPath:
                                    type: string
                                  mountPropagation:
                                    type: string
                                  name:
                                    type: string
                                  readOnly:
                                    type: boolean
                                  recursiveReadOnly:
                                    type: string
                                  subPath:
                                    type: string
                                  subPathExpr:
                                    type: string
                                required:
                                - mountPath
                                - name
                                type: object
                              type: array
                              x-kubernetes-list-map-keys:
                              - mountPath
                              x-kubernetes-list-type: map
                            workingDir:
                              type: string
                          required:
                          - name
                          type: object
                        type: array
                      retryStrategy:
                        properties:
                          duration:
                            type: string
                          retries:
                            anyOf:
                            - type: integer
                            - type: string
                            x-kubernetes-int-or-string: true
                        required:
                        - retries
                        type: object
                      volumeMounts:
                        items:
                          properties:
                            mountPath:
                              type: string
                            mountPropagation:
                              type: string
                            name:
                              type: string
                            readOnly:
                              type: boolean
                            recursiveReadOnly:
                              type: string
                            subPath:
                              type: string
                            subPathExpr:
                              type: string
                          required:
                          - mountPath
                          - name
                          type: object
                        type: array
                    required:
                    - containers
                    type: object
                  daemon:
                    type: boolean
                  dag:
                    properties:
                      failFast:
                        type: boolean
                      target:
                        type: string
                      tasks:
                        items:
                          properties:
                            arguments:
                              properties:
                                artifacts:
                                  items:
                                    properties:
                                      archive:
                                        properties:
                                          none:
                                            type: object
                                          tar:
                                            properties:
                                              compressionLevel:
                                                format: int32
                                                type: integer
                                            type: object
                                          zip:
                                            type: object
                                        type: object
                                      archiveLogs:
                                        type: boolean
                                      artifactGC:
                                        properties:
                                          podMetadata:
                                            properties:
                                              annotations:
                                                additionalProperties:
                                                  type: string
                                                type: object
                                              labels:
                                                additionalProperties:
                                                  type: string
                                                type: object
                                            type: object
                                          serviceAccountName:
                                            type: string
                                          strategy:
                                            enum:
                                            - ""
                                            - OnWorkflowCompletion
                                            - OnWorkflowDeletion
                                            - Never
                                            type: string
                                        type: object
                                      artifactory:
                                        properties:
                                          passwordSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          url:
                                            type: string
                                          usernameSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        required:
                                        - url
                                        type: object
                                      azure:
                                        properties:
                                          accountKeySecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          blob:
                                            type: string
                                          container:
                                            type: string
                                          endpoint:
                                            type: string
                                          useSDKCreds:
                                            type: boolean
                                        required:
                                        - blob
                                        - container
                                        - endpoint
                                        type: object
                                      deleted:
                                        type: boolean
                                      from:
                                        type: string
                                      fromExpression:
                                        type: string
                                      gcs:
                                        properties:
                                          bucket:
                                            type: string
                                          key:
                                            type: string
                                          serviceAccountKeySecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        required:
                                        - key
                                        type: object
                                      git:
                                        properties:
                                          branch:
                                            type: string
                                          depth:
                                            format: int64
                                            type: integer
                                          disableSubmodules:
                                            type: boolean
                                          fetch:
                                            items:
                                              type: string
                                            type: array
                                          insecureIgnoreHostKey:
                                            type: boolean
                                          insecureSkipTLS:
                                            type: boolean
                                          passwordSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          repo:
                                            type: string
                                          revision:
                                            type: string
                                          singleBranch:
                                            type: boolean
                                          sshPrivateKeySecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          usernameSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        required:
                                        - repo
                                        type: object
                                      globalName:
                                        type: string
                                      hdfs:
                                        properties:
                                          addresses:
                                            items:
                                              type: string
                                            type: array
                                          dataTransferProtection:
                                            type: string
                                          force:
                                            type: boolean
                                          hdfsUser:
                                            type: string
                                          krbCCacheSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          krbConfigConfigMap:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          krbKeytabSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          krbRealm:
                                            type: string
                                          krbServicePrincipalName:
                                            type: string
                                          krbUsername:
                                            type: string
                                          path:
                                            type: string
                                        required:
                                        - path
                                        type: object
                                      http:
                                        properties:
                                          auth:
                                            properties:
                                              basicAuth:
                                                properties:
                                                  passwordSecret:
                                                    properties:
                                                      key:
                                                        type: string
                                                      name:
                                                        default: ""
                                                        type: string
                                                      optional:
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  usernameSecret:
                                                    properties:
                                                      key:
                                                        type: string
                                                      name:
                                                        default: ""
                                                        type: string
                                                      optional:
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                type: object
                                              clientCert:
                                                properties:
                                                  clientCertSecret:
                                                    properties:
                                                      key:
                                                        type: string
                                                      name:
                                                        default: ""
                                                        type: string
                                                      optional:
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  clientKeySecret:
                                                    properties:
                                                      key:
                                                        type: string
                                                      name:
                                                        default: ""
                                                        type: string
                                                      optional:
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                type: object
                                              oauth2:
                                                properties:
                                                  clientIDSecret:
                                                    properties:
                                                      key:
                                                        type: string
                                                      name:
                                                        default: ""
                                                        type: string
                                                      optional:
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  clientSecretSecret:
                                                    properties:
                                                      key:
                                                        type: string
                                                      name:
                                                        default: ""
                                                        type: string
                                                      optional:
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  endpointParams:
                                                    items:
                                                      properties:
                                                        key:
                                                          type: string
                                                        value:
                                                          type: string
                                                      required:
                                                      - key
                                                      type: object
                                                    type: array
                                                  scopes:
                                                    items:
                                                      type: string
                                                    type: array
                                                  tokenURLSecret:
                                                    properties:
                                                      key:
                                                        type: string
                                                      name:
                                                        default: ""
                                                        type: string
                                                      optional:
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                type: object
                                            type: object
                                          headers:
                                            items:
                                              properties:
                                                name:
                                                  type: string
                                                value:
                                                  type: string
                                              required:
                                              - name
                                              - value
                                              type: object
                                            type: array
                                          url:
                                            type: string
                                        required:
                                        - url
                                        type: object
                                      mode:
                                        format: int32
                                        maximum: 511
                                        minimum: 0
                                        type: integer
                                      name:
                                        pattern: ^[-a-zA-Z0-9_{}.]+$
                                        type: string
                                      optional:
                                        type: boolean
                                      oss:
                                        properties:
                                          accessKeySecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          bucket:
                                            type: string
                                          createBucketIfNotPresent:
                                            type: boolean
                                          endpoint:
                                            type: string
                                          key:
                                            type: string
                                          lifecycleRule:
                                            properties:
                                              markDeletionAfterDays:
                                                format: int32
                                                type: integer
                                              markInfrequentAccessAfterDays:
                                                format: int32
                                                type: integer
                                            type: object
                                          secretKeySecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          securityToken:
                                            type: string
                                          useSDKCreds:
                                            type: boolean
                                        required:
                                        - key
                                        type: object
                                      path:
                                        type: string
                                      plugin:
                                        properties:
                                          configuration:
                                            type: string
                                          connectionTimeoutSeconds:
                                            format: int32
                                            type: integer
                                          key:
                                            type: string
                                          name:
                                            type: string
                                        required:
                                        - key
                                        type: object
                                      raw:
                                        properties:
                                          data:
                                            type: string
                                        required:
                                        - data
                                        type: object
                                      recurseMode:
                                        type: boolean
                                      s3:
                                        properties:
                                          accessKeySecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          bucket:
                                            type: string
                                          caSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          createBucketIfNotPresent:
                                            properties:
                                              objectLocking:
                                                type: boolean
                                            type: object
                                          encryptionOptions:
                                            properties:
                                              enableEncryption:
                                                type: boolean
                                              kmsEncryptionContext:
                                                type: string
                                              kmsKeyId:
                                                type: string
                                              serverSideCustomerKeySecret:
                                                properties:
                                                  key:
                                                    type: string
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                                x-kubernetes-map-type: atomic
                                            type: object
                                          endpoint:
                                            type: string
                                          insecure:
                                            type: boolean
                                          key:
                                            type: string
                                          region:
                                            type: string
                                          roleARN:
                                            type: string
                                          secretKeySecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          sessionTokenSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          useSDKCreds:
                                            type: boolean
                                        type: object
                                      subPath:
                                        type: string
                                    required:
                                    - name
                                    type: object
                                    x-kubernetes-validations:
                                    - message: at most one artifact location can be
                                        specified
                                      rule: '(has(self.s3) ? 1 : 0) + (has(self.git)
                                        ? 1 : 0) + (has(self.http) ? 1 : 0) + (has(self.artifactory)
                                        ? 1 : 0) + (has(self.hdfs) ? 1 : 0) + (has(self.raw)
                                        ? 1 : 0) + (has(self.oss) ? 1 : 0) + (has(self.gcs)
                                        ? 1 : 0) + (has(self.azure) ? 1 : 0) + (has(self.plugin)
                                        ? 1 : 0) <= 1'
                                  type: array
                                parameters:
                                  items:
                                    properties:
                                      default:
                                        type: string
                                      description:
                                        type: string
                                      enum:
                                        items:
                                          type: string
                                        minItems: 1
                                        type: array
                                      globalName:
                                        type: string
                                      name:
                                        pattern: ^[-a-zA-Z0-9_]+$
                                        type: string
                                      value:
                                        type: string
                                      valueFrom:
                                        properties:
                                          configMapKeyRef:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          default:
                                            type: string
                                          event:
                                            type: string
                                          expression:
                                            type: string
                                          jqFilter:
                                            type: string
                                          jsonPath:
                                            type: string
                                          parameter:
                                            type: string
                                          path:
                                            type: string
                                          supplied:
                                            type: object
                                        type: object
                                    required:
                                    - name
                                    type: object
                                  type: array
                              type: object
                            continueOn:
                              properties:
                                error:
                                  type: boolean
                                failed:
                                  type: boolean
                              type: object
                            dependencies:
                              items:
                                type: string
                              type: array
                            depends:
                              type: string
                            hooks:
                              additionalProperties:
                                properties:
                                  arguments:
                                    properties:
                                      artifacts:
                                        items:
                                          properties:
                                            archive:
                                              properties:
                                                none:
                                                  type: object
                                                tar:
                                                  properties:
                                                    compressionLevel:
                                                      format: int32
                                                      type: integer
                                                  type: object
                                                zip:
                                                  type: object
                                              type: object
                                            archiveLogs:
                                              type: boolean
                                            artifactGC:
                                              properties:
                                                podMetadata:
                                                  properties:
                                                    annotations:
                                                      additionalProperties:
                                                        type: string
                                                      type: object
                                                    labels:
                                                      additionalProperties:
                                                        type: string
                                                      type: object
                                                  type: object
                                                serviceAccountName:
                                                  type: string
                                                strategy:
                                                  enum:
                                                  - ""
                                                  - OnWorkflowCompletion
                                                  - OnWorkflowDeletion
                                                  - Never
                                                  type: string
                                              type: object
                                            artifactory:
                                              properties:
                                                passwordSecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                url:
                                                  type: string
                                                usernameSecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                              required:
                                              - url
                                              type: object
                                            azure:
                                              properties:
                                                accountKeySecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                blob:
                                                  type: string
                                                container:
                                                  type: string
                                                endpoint:
                                                  type: string
                                                useSDKCreds:
                                                  type: boolean
                                              required:
                                              - blob
                                              - container
                                              - endpoint
                                              type: object
                                            deleted:
                                              type: boolean
                                            from:
                                              type: string
                                            fromExpression:
                                              type: string
                                            gcs:
                                              properties:
                                                bucket:
                                                  type: string
                                                key:
                                                  type: string
                                                serviceAccountKeySecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                              required:
                                              - key
                                              type: object
                                            git:
                                              properties:
                                                branch:
                                                  type: string
                                                depth:
                                                  format: int64
                                                  type: integer
                                                disableSubmodules:
                                                  type: boolean
                                                fetch:
                                                  items:
                                                    type: string
                                                  type: array
                                                insecureIgnoreHostKey:
                                                  type: boolean
                                                insecureSkipTLS:
                                                  type: boolean
                                                passwordSecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                repo:
                                                  type: string
                                                revision:
                                                  type: string
                                                singleBranch:
                                                  type: boolean
                                                sshPrivateKeySecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                usernameSecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                              required:
                                              - repo
                                              type: object
                                            globalName:
                                              type: string
                                            hdfs:
                                              properties:
                                                addresses:
                                                  items:
                                                    type: string
                                                  type: array
                                                dataTransferProtection:
                                                  type: string
                                                force:
                                                  type: boolean
                                                hdfsUser:
                                                  type: string
                                                krbCCacheSecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                krbConfigConfigMap:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                krbKeytabSecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                krbRealm:
                                                  type: string
                                                krbServicePrincipalName:
                                                  type: string
                                                krbUsername:
                                                  type: string
                                                path:
                                                  type: string
                                              required:
                                              - path
                                              type: object
                                            http:
                                              properties:
                                                auth:
                                                  properties:
                                                    basicAuth:
                                                      properties:
                                                        passwordSecret:
                                                          properties:
                                                            key:
                                                              type: string
                                                            name:
                                                              default: ""
                                                              type: string
                                                            optional:
                                                              type: boolean
                                                          required:
                                                          - key
                                                          type: object
                                                          x-kubernetes-map-type: atomic
                                                        usernameSecret:
                                                          properties:
                                                            key:
                                                              type: string
                                                            name:
                                                              default: ""
                                                              type: string
                                                            optional:
                                                              type: boolean
                                                          required:
                                                          - key
                                                          type: object
                                                          x-kubernetes-map-type: atomic
                                                      type: object
                                                    clientCert:
                                                      properties:
                                                        clientCertSecret:
                                                          properties:
                                                            key:
                                                              type: string
                                                            name:
                                                              default: ""
                                                              type: string
                                                            optional:
                                                              type: boolean
                                                          required:
                                                          - key
                                                          type: object
                                                          x-kubernetes-map-type: atomic
                                                        clientKeySecret:
                                                          properties:
                                                            key:
                                                              type: string
                                                            name:
                                                              default: ""
                                                              type: string
                                                            optional:
                                                              type: boolean
                                                          required:
                                                          - key
                                                          type: object
                                                          x-kubernetes-map-type: atomic
                                                      type: object
                                                    oauth2:
                                                      properties:
                                                        clientIDSecret:
                                                          properties:
                                                            key:
                                                              type: string
                                                            name:
                                                              default: ""
                                                              type: string
                                                            optional:
                                                              type: boolean
                                                          required:
                                                          - key
                                                          type: object
                                                          x-kubernetes-map-type: atomic
                                                        clientSecretSecret:
                                                          properties:
                                                            key:
                                                              type: string
                                                            name:
                                                              default: ""
                                                              type: string
                                                            optional:
                                                              type: boolean
                                                          required:
                                                          - key
                                                          type: object
                                                          x-kubernetes-map-type: atomic
                                                        endpointParams:
                                                          items:
                                                            properties:
                                                              key:
                                                                type: string
                                                              value:
                                                                type: string
                                                            required:
                                                            - key
                                                            type: object
                                                          type: array
                                                        scopes:
                                                          items:
                                                            type: string
                                                          type: array
                                                        tokenURLSecret:
                                                          properties:
                                                            key:
                                                              type: string
                                                            name:
                                                              default: ""
                                                              type: string
                                                            optional:
                                                              type: boolean
                                                          required:
                                                          - key
                                                          type: object
                                                          x-kubernetes-map-type: atomic
                                                      type: object
                                                  type: object
                                                headers:
                                                  items:
                                                    properties:
                                                      name:
                                                        type: string
                                                      value:
                                                        type: string
                                                    required:
                                                    - name
                                                    - value
                                                    type: object
                                                  type: array
                                                url:
                                                  type: string
                                              required:
                                              - url
                                              type: object
                                            mode:
                                              format: int32
                                              maximum: 511
                                              minimum: 0
                                              type: integer
                                            name:
                                              pattern: ^[-a-zA-Z0-9_{}.]+$
                                              type: string
                                            optional:
                                              type: boolean
                                            oss:
                                              properties:
                                                accessKeySecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                bucket:
                                                  type: string
                                                createBucketIfNotPresent:
                                                  type: boolean
                                                endpoint:
                                                  type: string
                                                key:
                                                  type: string
                                                lifecycleRule:
                                                  properties:
                                                    markDeletionAfterDays:
                                                      format: int32
                                                      type: integer
                                                    markInfrequentAccessAfterDays:
                                                      format: int32
                                                      type: integer
                                                  type: object
                                                secretKeySecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                securityToken:
                                                  type: string
                                                useSDKCreds:
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                            path:
                                              type: string
                                            plugin:
                                              properties:
                                                configuration:
                                                  type: string
                                                connectionTimeoutSeconds:
                                                  format: int32
                                                  type: integer
                                                key:
                                                  type: string
                                                name:
                                                  type: string
                                              required:
                                              - key
                                              type: object
                                            raw:
                                              properties:
                                                data:
                                                  type: string
                                              required:
                                              - data
                                              type: object
                                            recurseMode:
                                              type: boolean
                                            s3:
                                              properties:
                                                accessKeySecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                bucket:
                                                  type: string
                                                caSecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                createBucketIfNotPresent:
                                                  properties:
                                                    objectLocking:
                                                      type: boolean
                                                  type: object
                                                encryptionOptions:
                                                  properties:
                                                    enableEncryption:
                                                      type: boolean
                                                    kmsEncryptionContext:
                                                      type: string
                                                    kmsKeyId:
                                                      type: string
                                                    serverSideCustomerKeySecret:
                                                      properties:
                                                        key:
                                                          type: string
                                                        name:
                                                          default: ""
                                                          type: string
                                                        optional:
                                                          type: boolean
                                                      required:
                                                      - key
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                  type: object
                                                endpoint:
                                                  type: string
                                                insecure:
                                                  type: boolean
                                                key:
                                                  type: string
                                                region:
                                                  type: string
                                                roleARN:
                                                  type: string
                                                secretKeySecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                sessionTokenSecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                useSDKCreds:
                                                  type: boolean
                                              type: object
                                            subPath:
                                              type: string
                                          required:
                                          - name
                                          type: object
                                          x-kubernetes-validations:
                                          - message: at most one artifact location
                                              can be specified
                                            rule: '(has(self.s3) ? 1 : 0) + (has(self.git)
                                              ? 1 : 0) + (has(self.http) ? 1 : 0)
                                              + (has(self.artifactory) ? 1 : 0) +
                                              (has(self.hdfs) ? 1 : 0) + (has(self.raw)
                                              ? 1 : 0) + (has(self.oss) ? 1 : 0) +
                                              (has(self.gcs) ? 1 : 0) + (has(self.azure)
                                              ? 1 : 0) + (has(self.plugin) ? 1 : 0)
                                              <= 1'
                                        type: array
                                      parameters:
                                        items:
                                          properties:
                                            default:
                                              type: string
                                            description:
                                              type: string
                                            enum:
                                              items:
                                                type: string
                                              minItems: 1
                                              type: array
                                            globalName:
                                              type: string
                                            name:
                                              pattern: ^[-a-zA-Z0-9_]+$
                                              type: string
                                            value:
                                              type: string
                                            valueFrom:
                                              properties:
                                                configMapKeyRef:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                default:
                                                  type: string
                                                event:
                                                  type: string
                                                expression:
                                                  type: string
                                                jqFilter:
                                                  type: string
                                                jsonPath:
                                                  type: string
                                                parameter:
                                                  type: string
                                                path:
                                                  type: string
                                                supplied:
                                                  type: object
                                              type: object
                                          required:
                                          - name
                                          type: object
                                        type: array
                                    type: object
                                  expression:
                                    type: string
                                  template:
                                    type: string
                                  templateRef:
                                    properties:
                                      clusterScope:
                                        type: boolean
                                      name:
                                        type: string
                                      template:
                                        type: string
                                    type: object
                                type: object
                              type: object
                            inline:
                              x-kubernetes-preserve-unknown-fields: true
                            name:
                              maxLength: 128
                              pattern: ^[a-zA-Z0-9][-a-zA-Z0-9]*$
                              type: string
                            onExit:
                              type: string
                            template:
                              type: string
                            templateRef:
                              properties:
                                clusterScope:
                                  type: boolean
                                name:
                                  type: string
                                template:
                                  type: string
                              type: object
                            when:
                              type: string
                            withItems:
                              x-kubernetes-preserve-unknown-fields: true
                            withParam:
                              type: string
                            withSequence:
                              properties:
                                count:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                                end:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                                format:
                                  type: string
                                start:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                              type: object
                              x-kubernetes-validations:
                              - message: only one of count or end can be defined
                                rule: '!(has(self.count) && has(self.end))'
                          required:
                          - name
                          type: object
                          x-kubernetes-validations:
                          - message: cannot use both 'depends' and 'dependencies'
                            rule: '!has(self.depends) || !has(self.dependencies)'
                          - message: cannot use 'continueOn' when using 'depends'
                            rule: '!has(self.depends) || !has(self.continueOn)'
                          - message: task name cannot begin with a digit when using
                              'depends' or 'dependencies'
                            rule: '!(has(self.depends) || has(self.dependencies))
                              || !self.name.matches(''^[0-9]'')'
                        maxItems: 200
                        minItems: 1
                        type: array
                    required:
                    - tasks
                    type: object
                  data:
                    properties:
                      source:
                        properties:
                          artifactPaths:
                            properties:
                              archive:
                                properties:
                                  none:
                                    type: object
                                  tar:
                                    properties:
                                      compressionLevel:
                                        format: int32
                                        type: integer
                                    type: object
                                  zip:
                                    type: object
                                type: object
                              archiveLogs:
                                type: boolean
                              artifactGC:
                                properties:
                                  podMetadata:
                                    properties:
                                      annotations:
                                        additionalProperties:
                                          type: string
                                        type: object
                                      labels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                  serviceAccountName:
                                    type: string
                                  strategy:
                                    enum:
                                    - ""
                                    - OnWorkflowCompletion
                                    - OnWorkflowDeletion
                                    - Never
                                    type: string
                                type: object
                              artifactory:
                                properties:
                                  passwordSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  url:
                                    type: string
                                  usernameSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - url
                                type: object
                              azure:
                                properties:
                                  accountKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  blob:
                                    type: string
                                  container:
                                    type: string
                                  endpoint:
                                    type: string
                                  useSDKCreds:
                                    type: boolean
                                required:
                                - blob
                                - container
                                - endpoint
                                type: object
                              deleted:
                                type: boolean
                              from:
                                type: string
                              fromExpression:
                                type: string
                              gcs:
                                properties:
                                  bucket:
                                    type: string
                                  key:
                                    type: string
                                  serviceAccountKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - key
                                type: object
                              git:
                                properties:
                                  branch:
                                    type: string
                                  depth:
                                    format: int64
                                    type: integer
                                  disableSubmodules:
                                    type: boolean
                                  fetch:
                                    items:
                                      type: string
                                    type: array
                                  insecureIgnoreHostKey:
                                    type: boolean
                                  insecureSkipTLS:
                                    type: boolean
                                  passwordSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  repo:
                                    type: string
                                  revision:
                                    type: string
                                  singleBranch:
                                    type: boolean
                                  sshPrivateKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  usernameSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - repo
                                type: object
                              globalName:
                                type: string
                              hdfs:
                                properties:
                                  addresses:
                                    items:
                                      type: string
                                    type: array
                                  dataTransferProtection:
                                    type: string
                                  force:
                                    type: boolean
                                  hdfsUser:
                                    type: string
                                  krbCCacheSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbConfigConfigMap:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbKeytabSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbRealm:
                                    type: string
                                  krbServicePrincipalName:
                                    type: string
                                  krbUsername:
                                    type: string
                                  path:
                                    type: string
                                required:
                                - path
                                type: object
                              http:
                                properties:
                                  auth:
                                    properties:
                                      basicAuth:
                                        properties:
                                          passwordSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          usernameSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                      clientCert:
                                        properties:
                                          clientCertSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          clientKeySecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                      oauth2:
                                        properties:
                                          clientIDSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          clientSecretSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          endpointParams:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                value:
                                                  type: string
                                              required:
                                              - key
                                              type: object
                                            type: array
                                          scopes:
                                            items:
                                              type: string
                                            type: array
                                          tokenURLSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                    type: object
                                  headers:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  url:
                                    type: string
                                required:
                                - url
                                type: object
                              mode:
                                format: int32
                                maximum: 511
                                minimum: 0
                                type: integer
                              name:
                                pattern: ^[-a-zA-Z0-9_{}.]+$
                                type: string
                              optional:
                                type: boolean
                              oss:
                                properties:
                                  accessKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  bucket:
                                    type: string
                                  createBucketIfNotPresent:
                                    type: boolean
                                  endpoint:
                                    type: string
                                  key:
                                    type: string
                                  lifecycleRule:
                                    properties:
                                      markDeletionAfterDays:
                                        format: int32
                                        type: integer
                                      markInfrequentAccessAfterDays:
                                        format: int32
                                        type: integer
                                    type: object
                                  secretKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  securityToken:
                                    type: string
                                  useSDKCreds:
                                    type: boolean
                                required:
                                - key
                                type: object
                              path:
                                type: string
                              plugin:
                                properties:
                                  configuration:
                                    type: string
                                  connectionTimeoutSeconds:
                                    format: int32
                                    type: integer
                                  key:
                                    type: string
                                  name:
                                    type: string
                                required:
                                - key
                                type: object
                              raw:
                                properties:
                                  data:
                                    type: string
                                required:
                                - data
                                type: object
                              recurseMode:
                                type: boolean
                              s3:
                                properties:
                                  accessKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  bucket:
                                    type: string
                                  caSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  createBucketIfNotPresent:
                                    properties:
                                      objectLocking:
                                        type: boolean
                                    type: object
                                  encryptionOptions:
                                    properties:
                                      enableEncryption:
                                        type: boolean
                                      kmsEncryptionContext:
                                        type: string
                                      kmsKeyId:
                                        type: string
                                      serverSideCustomerKeySecret:
                                        properties:
                                          key:
                                            type: string
                                          name:
                                            default: ""
                                            type: string
                                          optional:
                                            type: boolean
                                        required:
                                        - key
                                        type: object
                                        x-kubernetes-map-type: atomic
                                    type: object
                                  endpoint:
                                    type: string
                                  insecure:
                                    type: boolean
                                  key:
                                    type: string
                                  region:
                                    type: string
                                  roleARN:
                                    type: string
                                  secretKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  sessionTokenSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  useSDKCreds:
                                    type: boolean
                                type: object
                              subPath:
                                type: string
                            required:
                            - name
                            type: object
                            x-kubernetes-validations:
                            - message: at most one artifact location can be specified
                              rule: '(has(self.s3) ? 1 : 0) + (has(self.git) ? 1 :
                                0) + (has(self.http) ? 1 : 0) + (has(self.artifactory)
                                ? 1 : 0) + (has(self.hdfs) ? 1 : 0) + (has(self.raw)
                                ? 1 : 0) + (has(self.oss) ? 1 : 0) + (has(self.gcs)
                                ? 1 : 0) + (has(self.azure) ? 1 : 0) + (has(self.plugin)
                                ? 1 : 0) <= 1'
                        type: object
                      transformation:
                        items:
                          properties:
                            expression:
                              type: string
                          required:
                          - expression
                          type: object
                        type: array
                    required:
                    - source
                    - transformation
                    type: object
                  executor:
                    properties:
                      serviceAccountName:
                        type: string
                    type: object
                  failFast:
                    type: boolean
                  hostAliases:
                    items:
                      properties:
                        hostnames:
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        ip:
                          type: string
                      required:
                      - ip
                      type: object
                    type: array
                  http:
                    properties:
                      body:
                        type: string
                      bodyFrom:
                        properties:
                          bytes:
                            format: byte
                            type: string
                        type: object
                      headers:
                        items:
                          properties:
                            name:
                              type: string
                            value:
                              type: string
                            valueFrom:
                              properties:
                                secretKeyRef:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                      insecureSkipVerify:
                        type: boolean
                      method:
                        type: string
                      successCondition:
                        type: string
                      timeoutSeconds:
                        format: int64
                        type: integer
                      url:
                        type: string
                    required:
                    - url
                    type: object
                  initContainers:
                    items:
                      properties:
                        args:
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        command:
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        env:
                          items:
                            properties:
                              name:
                                type: string
                              value:
                                type: string
                              valueFrom:
                                properties:
                                  configMapKeyRef:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  fieldRef:
                                    properties:
                                      apiVersion:
                                        type: string
                                      fieldPath:
                                        type: string
                                    required:
                                    - fieldPath
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  resourceFieldRef:
                                    properties:
                                      containerName:
                                        type: string
                                      divisor:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                        x-kubernetes-int-or-string: true
                                      resource:
                                        type: string
                                    required:
                                    - resource
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  secretKeyRef:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                type: object
                            required:
                            - name
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - name
                          x-kubernetes-list-type: map
                        envFrom:
                          items:
                            properties:
                              configMapRef:
                                properties:
                                  name:
                                    default: ""
                                    type: string
                                  optional:
                                    type: boolean
                                type: object
                                x-kubernetes-map-type: atomic
                              prefix:
                                type: string
                              secretRef:
                                properties:
                                  name:
                                    default: ""
                                    type: string
                                  optional:
                                    type: boolean
                                type: object
                                x-kubernetes-map-type: atomic
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        image:
                          type: string
                        imagePullPolicy:
                          type: string
                        lifecycle:
                          properties:
                            postStart:
                              properties:
                                exec:
                                  properties:
                                    command:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                httpGet:
                                  properties:
                                    host:
                                      type: string
                                    httpHeaders:
                                      items:
                                        properties:
                                          name:
                                            type: string
                                          value:
                                            type: string
                                        required:
                                        - name
                                        - value
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    path:
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      x-kubernetes-int-or-string: true
                                    scheme:
                                      type: string
                                  required:
                                  - port
                                  type: object
                                sleep:
                                  properties:
                                    seconds:
                                      format: int64
                                      type: integer
                                  required:
                                  - seconds
                                  type: object
                                tcpSocket:
                                  properties:
                                    host:
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      x-kubernetes-int-or-string: true
                                  required:
                                  - port
                                  type: object
                              type: object
                            preStop:
                              properties:
                                exec:
                                  properties:
                                    command:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                httpGet:
                                  properties:
                                    host:
                                      type: string
                                    httpHeaders:
                                      items:
                                        properties:
                                          name:
                                            type: string
                                          value:
                                            type: string
                                        required:
                                        - name
                                        - value
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    path:
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      x-kubernetes-int-or-string: true
                                    scheme:
                                      type: string
                                  required:
                                  - port
                                  type: object
                                sleep:
                                  properties:
                                    seconds:
                                      format: int64
                                      type: integer
                                  required:
                                  - seconds
                                  type: object
                                tcpSocket:
                                  properties:
                                    host:
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      x-kubernetes-int-or-string: true
                                  required:
                                  - port
                                  type: object
                              type: object
                            stopSignal:
                              type: string
                          type: object
                        livenessProbe:
                          properties:
                            exec:
                              properties:
                                command:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              format: int32
                              type: integer
                            grpc:
                              properties:
                                port:
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  type: string
                              required:
                              - port
                              type: object
                            httpGet:
                              properties:
                                host:
                                  type: string
                                httpHeaders:
                                  items:
                                    properties:
                                      name:
                                        type: string
                                      value:
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  type: string
                              required:
                              - port
                              type: object
                            initialDelaySeconds:
                              format: int32
                              type: integer
                            periodSeconds:
                              format: int32
                              type: integer
                            successThreshold:
                              format: int32
                              type: integer
                            tcpSocket:
                              properties:
                                host:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                              required:
                              - port
                              type: object
                            terminationGracePeriodSeconds:
                              format: int64
                              type: integer
                            timeoutSeconds:
                              format: int32
                              type: integer
                          type: object
                        mirrorVolumeMounts:
                          type: boolean
                        name:
                          type: string
                        ports:
                          items:
                            properties:
                              containerPort:
                                format: int32
                                type: integer
                              hostIP:
                                type: string
                              hostPort:
                                format: int32
                                type: integer
                              name:
                                type: string
                              protocol:
                                default: TCP
                                type: string
                            required:
                            - containerPort
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - containerPort
                          - protocol
                          x-kubernetes-list-type: map
                        readinessProbe:
                          properties:
                            exec:
                              properties:
                                command:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              format: int32
                              type: integer
                            grpc:
                              properties:
                                port:
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  type: string
                              required:
                              - port
                              type: object
                            httpGet:
                              properties:
                                host:
                                  type: string
                                httpHeaders:
                                  items:
                                    properties:
                                      name:
                                        type: string
                                      value:
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  type: string
                              required:
                              - port
                              type: object
                            initialDelaySeconds:
                              format: int32
                              type: integer
                            periodSeconds:
                              format: int32
                              type: integer
                            successThreshold:
                              format: int32
                              type: integer
                            tcpSocket:
                              properties:
                                host:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                              required:
                              - port
                              type: object
                            terminationGracePeriodSeconds:
                              format: int64
                              type: integer
                            timeoutSeconds:
                              format: int32
                              type: integer
                          type: object
                        resizePolicy:
                          items:
                            properties:
                              resourceName:
                                type: string
                              restartPolicy:
                                type: string
                            required:
                            - resourceName
                            - restartPolicy
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        resources:
                          properties:
                            claims:
                              items:
                                properties:
                                  name:
                                    type: string
                                  request:
                                    type: string
                                required:
                                - name
                                type: object
                              type: array
                              x-kubernetes-list-map-keys:
                              - name
                              x-kubernetes-list-type: map
                            limits:
                              additionalProperties:
                                anyOf:
                                - type: integer
                                - type: string
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                              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
                              type: object
                          type: object
                        restartPolicy:
                          type: string
                        securityContext:
                          properties:
                            allowPrivilegeEscalation:
                              type: boolean
                            appArmorProfile:
                              properties:
                                localhostProfile:
                                  type: string
                                type:
                                  type: string
                              required:
                              - type
                              type: object
                            capabilities:
                              properties:
                                add:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                drop:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            privileged:
                              type: boolean
                            procMount:
                              type: string
                            readOnlyRootFilesystem:
                              type: boolean
                            runAsGroup:
                              format: int64
                              type: integer
                            runAsNonRoot:
                              type: boolean
                            runAsUser:
                              format: int64
                              type: integer
                            seLinuxOptions:
                              properties:
                                level:
                                  type: string
                                role:
                                  type: string
                                type:
                                  type: string
                                user:
                                  type: string
                              type: object
                            seccompProfile:
                              properties:
                                localhostProfile:
                                  type: string
                                type:
                                  type: string
                              required:
                              - type
                              type: object
                            windowsOptions:
                              properties:
                                gmsaCredentialSpec:
                                  type: string
                                gmsaCredentialSpecName:
                                  type: string
                                hostProcess:
                                  type: boolean
                                runAsUserName:
                                  type: string
                              type: object
                          type: object
                        startupProbe:
                          properties:
                            exec:
                              properties:
                                command:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              format: int32
                              type: integer
                            grpc:
                              properties:
                                port:
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  type: string
                              required:
                              - port
                              type: object
                            httpGet:
                              properties:
                                host:
                                  type: string
                                httpHeaders:
                                  items:
                                    properties:
                                      name:
                                        type: string
                                      value:
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  type: string
                              required:
                              - port
                              type: object
                            initialDelaySeconds:
                              format: int32
                              type: integer
                            periodSeconds:
                              format: int32
                              type: integer
                            successThreshold:
                              format: int32
                              type: integer
                            tcpSocket:
                              properties:
                                host:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                              required:
                              - port
                              type: object
                            terminationGracePeriodSeconds:
                              format: int64
                              type: integer
                            timeoutSeconds:
                              format: int32
                              type: integer
                          type: object
                        stdin:
                          type: boolean
                        stdinOnce:
                          type: boolean
                        terminationMessagePath:
                          type: string
                        terminationMessagePolicy:
                          type: string
                        tty:
                          type: boolean
                        volumeDevices:
                          items:
                            properties:
                              devicePath:
                                type: string
                              name:
                                type: string
                            required:
                            - devicePath
                            - name
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - devicePath
                          x-kubernetes-list-type: map
                        volumeMounts:
                          items:
                            properties:
                              mountPath:
                                type: string
                              mountPropagation:
                                type: string
                              name:
                                type: string
                              readOnly:
                                type: boolean
                              recursiveReadOnly:
                                type: string
                              subPath:
                                type: string
                              subPathExpr:
                                type: string
                            required:
                            - mountPath
                            - name
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - mountPath
                          x-kubernetes-list-type: map
                        workingDir:
                          type: string
                      required:
                      - name
                      type: object
                    type: array
                  inputs:
                    properties:
                      artifacts:
                        items:
                          properties:
                            archive:
                              properties:
                                none:
                                  type: object
                                tar:
                                  properties:
                                    compressionLevel:
                                      format: int32
                                      type: integer
                                  type: object
                                zip:
                                  type: object
                              type: object
                            archiveLogs:
                              type: boolean
                            artifactGC:
                              properties:
                                podMetadata:
                                  properties:
                                    annotations:
                                      additionalProperties:
                                        type: string
                                      type: object
                                    labels:
                                      additionalProperties:
                                        type: string
                                      type: object
                                  type: object
                                serviceAccountName:
                                  type: string
                                strategy:
                                  enum:
                                  - ""
                                  - OnWorkflowCompletion
                                  - OnWorkflowDeletion
                                  - Never
                                  type: string
                              type: object
                            artifactory:
                              properties:
                                passwordSecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                url:
                                  type: string
                                usernameSecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                              required:
                              - url
                              type: object
                            azure:
                              properties:
                                accountKeySecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                blob:
                                  type: string
                                container:
                                  type: string
                                endpoint:
                                  type: string
                                useSDKCreds:
                                  type: boolean
                              required:
                              - blob
                              - container
                              - endpoint
                              type: object
                            deleted:
                              type: boolean
                            from:
                              type: string
                            fromExpression:
                              type: string
                            gcs:
                              properties:
                                bucket:
                                  type: string
                                key:
                                  type: string
                                serviceAccountKeySecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                              required:
                              - key
                              type: object
                            git:
                              properties:
                                branch:
                                  type: string
                                depth:
                                  format: int64
                                  type: integer
                                disableSubmodules:
                                  type: boolean
                                fetch:
                                  items:
                                    type: string
                                  type: array
                                insecureIgnoreHostKey:
                                  type: boolean
                                insecureSkipTLS:
                                  type: boolean
                                passwordSecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                repo:
                                  type: string
                                revision:
                                  type: string
                                singleBranch:
                                  type: boolean
                                sshPrivateKeySecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                usernameSecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                              required:
                              - repo
                              type: object
                            globalName:
                              type: string
                            hdfs:
                              properties:
                                addresses:
                                  items:
                                    type: string
                                  type: array
                                dataTransferProtection:
                                  type: string
                                force:
                                  type: boolean
                                hdfsUser:
                                  type: string
                                krbCCacheSecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                krbConfigConfigMap:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                krbKeytabSecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                krbRealm:
                                  type: string
                                krbServicePrincipalName:
                                  type: string
                                krbUsername:
                                  type: string
                                path:
                                  type: string
                              required:
                              - path
                              type: object
                            http:
                              properties:
                                auth:
                                  properties:
                                    basicAuth:
                                      properties:
                                        passwordSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        usernameSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                      type: object
                                    clientCert:
                                      properties:
                                        clientCertSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        clientKeySecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                      type: object
                                    oauth2:
                                      properties:
                                        clientIDSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        clientSecretSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        endpointParams:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              value:
                                                type: string
                                            required:
                                            - key
                                            type: object
                                          type: array
                                        scopes:
                                          items:
                                            type: string
                                          type: array
                                        tokenURLSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                      type: object
                                  type: object
                                headers:
                                  items:
                                    properties:
                                      name:
                                        type: string
                                      value:
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                url:
                                  type: string
                              required:
                              - url
                              type: object
                            mode:
                              format: int32
                              maximum: 511
                              minimum: 0
                              type: integer
                            name:
                              pattern: ^[-a-zA-Z0-9_{}.]+$
                              type: string
                            optional:
                              type: boolean
                            oss:
                              properties:
                                accessKeySecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                bucket:
                                  type: string
                                createBucketIfNotPresent:
                                  type: boolean
                                endpoint:
                                  type: string
                                key:
                                  type: string
                                lifecycleRule:
                                  properties:
                                    markDeletionAfterDays:
                                      format: int32
                                      type: integer
                                    markInfrequentAccessAfterDays:
                                      format: int32
                                      type: integer
                                  type: object
                                secretKeySecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                securityToken:
                                  type: string
                                useSDKCreds:
                                  type: boolean
                              required:
                              - key
                              type: object
                            path:
                              type: string
                            plugin:
                              properties:
                                configuration:
                                  type: string
                                connectionTimeoutSeconds:
                                  format: int32
                                  type: integer
                                key:
                                  type: string
                                name:
                                  type: string
                              required:
                              - key
                              type: object
                            raw:
                              properties:
                                data:
                                  type: string
                              required:
                              - data
                              type: object
                            recurseMode:
                              type: boolean
                            s3:
                              properties:
                                accessKeySecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                bucket:
                                  type: string
                                caSecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                createBucketIfNotPresent:
                                  properties:
                                    objectLocking:
                                      type: boolean
                                  type: object
                                encryptionOptions:
                                  properties:
                                    enableEncryption:
                                      type: boolean
                                    kmsEncryptionContext:
                                      type: string
                                    kmsKeyId:
                                      type: string
                                    serverSideCustomerKeySecret:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          default: ""
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  type: object
                                endpoint:
                                  type: string
                                insecure:
                                  type: boolean
                                key:
                                  type: string
                                region:
                                  type: string
                                roleARN:
                                  type: string
                                secretKeySecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                sessionTokenSecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                useSDKCreds:
                                  type: boolean
                              type: object
                            subPath:
                              type: string
                          required:
                          - name
                          type: object
                          x-kubernetes-validations:
                          - message: at most one artifact location can be specified
                            rule: '(has(self.s3) ? 1 : 0) + (has(self.git) ? 1 : 0)
                              + (has(self.http) ? 1 : 0) + (has(self.artifactory)
                              ? 1 : 0) + (has(self.hdfs) ? 1 : 0) + (has(self.raw)
                              ? 1 : 0) + (has(self.oss) ? 1 : 0) + (has(self.gcs)
                              ? 1 : 0) + (has(self.azure) ? 1 : 0) + (has(self.plugin)
                              ? 1 : 0) <= 1'
                        type: array
                      parameters:
                        items:
                          properties:
                            default:
                              type: string
                            description:
                              type: string
                            enum:
                              items:
                                type: string
                              minItems: 1
                              type: array
                            globalName:
                              type: string
                            name:
                              pattern: ^[-a-zA-Z0-9_]+$
                              type: string
                            value:
                              type: string
                            valueFrom:
                              properties:
                                configMapKeyRef:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                default:
                                  type: string
                                event:
                                  type: string
                                expression:
                                  type: string
                                jqFilter:
                                  type: string
                                jsonPath:
                                  type: string
                                parameter:
                                  type: string
                                path:
                                  type: string
                                supplied:
                                  type: object
                              type: object
                          required:
                          - name
                          type: object
                        maxItems: 500
                        type: array
                    type: object
                  memoize:
                    properties:
                      cache:
                        properties:
                          configMap:
                            properties:
                              name:
                                default: ""
                                type: string
                            type: object
                            x-kubernetes-map-type: atomic
                        required:
                        - configMap
                        type: object
                      key:
                        type: string
                      maxAge:
                        type: string
                    required:
                    - cache
                    - key
                    - maxAge
                    type: object
                  metadata:
                    properties:
                      annotations:
                        additionalProperties:
                          type: string
                        type: object
                      labels:
                        additionalProperties:
                          type: string
                        type: object
                    type: object
                  metrics:
                    properties:
                      prometheus:
                        items:
                          properties:
                            counter:
                              properties:
                                value:
                                  minLength: 1
                                  type: string
                              required:
                              - value
                              type: object
                            gauge:
                              properties:
                                operation:
                                  enum:
                                  - Set
                                  - Add
                                  - Sub
                                  type: string
                                realtime:
                                  type: boolean
                                value:
                                  maxLength: 256
                                  minLength: 1
                                  type: string
                              required:
                              - realtime
                              - value
                              type: object
                              x-kubernetes-validations:
                              - message: '''resourcesDuration.*'' metrics cannot be
                                  used in real-time gauges'
                                rule: '!has(self.realtime) || !self.realtime || !self.value.contains(''resourcesDuration.'')'
                            help:
                              minLength: 1
                              type: string
                            histogram:
                              properties:
                                buckets:
                                  items:
                                    type: number
                                  type: array
                                value:
                                  minLength: 1
                                  type: string
                              required:
                              - buckets
                              - value
                              type: object
                            labels:
                              items:
                                properties:
                                  key:
                                    pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
                                    type: string
                                  value:
                                    type: string
                                required:
                                - key
                                - value
                                type: object
                              type: array
                            name:
                              pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
                              type: string
                            when:
                              type: string
                          required:
                          - help
                          - name
                          type: object
                        maxItems: 100
                        type: array
                    required:
                    - prometheus
                    type: object
                  name:
                    maxLength: 128
                    pattern: ^[a-zA-Z0-9][-a-zA-Z0-9]*$
                    type: string
                  nodeSelector:
                    additionalProperties:
                      type: string
                    type: object
                  outputs:
                    properties:
                      artifacts:
                        items:
                          properties:
                            archive:
                              properties:
                                none:
                                  type: object
                                tar:
                                  properties:
                                    compressionLevel:
                                      format: int32
                                      type: integer
                                  type: object
                                zip:
                                  type: object
                              type: object
                            archiveLogs:
                              type: boolean
                            artifactGC:
                              properties:
                                podMetadata:
                                  properties:
                                    annotations:
                                      additionalProperties:
                                        type: string
                                      type: object
                                    labels:
                                      additionalProperties:
                                        type: string
                                      type: object
                                  type: object
                                serviceAccountName:
                                  type: string
                                strategy:
                                  enum:
                                  - ""
                                  - OnWorkflowCompletion
                                  - OnWorkflowDeletion
                                  - Never
                                  type: string
                              type: object
                            artifactory:
                              properties:
                                passwordSecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                url:
                                  type: string
                                usernameSecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                              required:
                              - url
                              type: object
                            azure:
                              properties:
                                accountKeySecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                blob:
                                  type: string
                                container:
                                  type: string
                                endpoint:
                                  type: string
                                useSDKCreds:
                                  type: boolean
                              required:
                              - blob
                              - container
                              - endpoint
                              type: object
                            deleted:
                              type: boolean
                            from:
                              type: string
                            fromExpression:
                              type: string
                            gcs:
                              properties:
                                bucket:
                                  type: string
                                key:
                                  type: string
                                serviceAccountKeySecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                              required:
                              - key
                              type: object
                            git:
                              properties:
                                branch:
                                  type: string
                                depth:
                                  format: int64
                                  type: integer
                                disableSubmodules:
                                  type: boolean
                                fetch:
                                  items:
                                    type: string
                                  type: array
                                insecureIgnoreHostKey:
                                  type: boolean
                                insecureSkipTLS:
                                  type: boolean
                                passwordSecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                repo:
                                  type: string
                                revision:
                                  type: string
                                singleBranch:
                                  type: boolean
                                sshPrivateKeySecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                usernameSecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                              required:
                              - repo
                              type: object
                            globalName:
                              type: string
                            hdfs:
                              properties:
                                addresses:
                                  items:
                                    type: string
                                  type: array
                                dataTransferProtection:
                                  type: string
                                force:
                                  type: boolean
                                hdfsUser:
                                  type: string
                                krbCCacheSecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                krbConfigConfigMap:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                krbKeytabSecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                krbRealm:
                                  type: string
                                krbServicePrincipalName:
                                  type: string
                                krbUsername:
                                  type: string
                                path:
                                  type: string
                              required:
                              - path
                              type: object
                            http:
                              properties:
                                auth:
                                  properties:
                                    basicAuth:
                                      properties:
                                        passwordSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        usernameSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                      type: object
                                    clientCert:
                                      properties:
                                        clientCertSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        clientKeySecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                      type: object
                                    oauth2:
                                      properties:
                                        clientIDSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        clientSecretSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        endpointParams:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              value:
                                                type: string
                                            required:
                                            - key
                                            type: object
                                          type: array
                                        scopes:
                                          items:
                                            type: string
                                          type: array
                                        tokenURLSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                      type: object
                                  type: object
                                headers:
                                  items:
                                    properties:
                                      name:
                                        type: string
                                      value:
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                url:
                                  type: string
                              required:
                              - url
                              type: object
                            mode:
                              format: int32
                              maximum: 511
                              minimum: 0
                              type: integer
                            name:
                              pattern: ^[-a-zA-Z0-9_{}.]+$
                              type: string
                            optional:
                              type: boolean
                            oss:
                              properties:
                                accessKeySecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                bucket:
                                  type: string
                                createBucketIfNotPresent:
                                  type: boolean
                                endpoint:
                                  type: string
                                key:
                                  type: string
                                lifecycleRule:
                                  properties:
                                    markDeletionAfterDays:
                                      format: int32
                                      type: integer
                                    markInfrequentAccessAfterDays:
                                      format: int32
                                      type: integer
                                  type: object
                                secretKeySecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                securityToken:
                                  type: string
                                useSDKCreds:
                                  type: boolean
                              required:
                              - key
                              type: object
                            path:
                              type: string
                            plugin:
                              properties:
                                configuration:
                                  type: string
                                connectionTimeoutSeconds:
                                  format: int32
                                  type: integer
                                key:
                                  type: string
                                name:
                                  type: string
                              required:
                              - key
                              type: object
                            raw:
                              properties:
                                data:
                                  type: string
                              required:
                              - data
                              type: object
                            recurseMode:
                              type: boolean
                            s3:
                              properties:
                                accessKeySecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                bucket:
                                  type: string
                                caSecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                createBucketIfNotPresent:
                                  properties:
                                    objectLocking:
                                      type: boolean
                                  type: object
                                encryptionOptions:
                                  properties:
                                    enableEncryption:
                                      type: boolean
                                    kmsEncryptionContext:
                                      type: string
                                    kmsKeyId:
                                      type: string
                                    serverSideCustomerKeySecret:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          default: ""
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  type: object
                                endpoint:
                                  type: string
                                insecure:
                                  type: boolean
                                key:
                                  type: string
                                region:
                                  type: string
                                roleARN:
                                  type: string
                                secretKeySecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                sessionTokenSecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                useSDKCreds:
                                  type: boolean
                              type: object
                            subPath:
                              type: string
                          required:
                          - name
                          type: object
                          x-kubernetes-validations:
                          - message: at most one artifact location can be specified
                            rule: '(has(self.s3) ? 1 : 0) + (has(self.git) ? 1 : 0)
                              + (has(self.http) ? 1 : 0) + (has(self.artifactory)
                              ? 1 : 0) + (has(self.hdfs) ? 1 : 0) + (has(self.raw)
                              ? 1 : 0) + (has(self.oss) ? 1 : 0) + (has(self.gcs)
                              ? 1 : 0) + (has(self.azure) ? 1 : 0) + (has(self.plugin)
                              ? 1 : 0) <= 1'
                        type: array
                      exitCode:
                        type: string
                      parameters:
                        items:
                          properties:
                            default:
                              type: string
                            description:
                              type: string
                            enum:
                              items:
                                type: string
                              minItems: 1
                              type: array
                            globalName:
                              type: string
                            name:
                              pattern: ^[-a-zA-Z0-9_]+$
                              type: string
                            value:
                              type: string
                            valueFrom:
                              properties:
                                configMapKeyRef:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                default:
                                  type: string
                                event:
                                  type: string
                                expression:
                                  type: string
                                jqFilter:
                                  type: string
                                jsonPath:
                                  type: string
                                parameter:
                                  type: string
                                path:
                                  type: string
                                supplied:
                                  type: object
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                      result:
                        type: string
                    type: object
                  parallelism:
                    format: int64
                    minimum: 1
                    type: integer
                  plugin:
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  podSpecPatch:
                    type: string
                  priorityClassName:
                    type: string
                  resource:
                    properties:
                      action:
                        enum:
                        - get
                        - create
                        - apply
                        - delete
                        - replace
                        - patch
                        type: string
                      failureCondition:
                        type: string
                      flags:
                        items:
                          type: string
                        type: array
                      manifest:
                        type: string
                      manifestFrom:
                        properties:
                          artifact:
                            properties:
                              archive:
                                properties:
                                  none:
                                    type: object
                                  tar:
                                    properties:
                                      compressionLevel:
                                        format: int32
                                        type: integer
                                    type: object
                                  zip:
                                    type: object
                                type: object
                              archiveLogs:
                                type: boolean
                              artifactGC:
                                properties:
                                  podMetadata:
                                    properties:
                                      annotations:
                                        additionalProperties:
                                          type: string
                                        type: object
                                      labels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                  serviceAccountName:
                                    type: string
                                  strategy:
                                    enum:
                                    - ""
                                    - OnWorkflowCompletion
                                    - OnWorkflowDeletion
                                    - Never
                                    type: string
                                type: object
                              artifactory:
                                properties:
                                  passwordSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  url:
                                    type: string
                                  usernameSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - url
                                type: object
                              azure:
                                properties:
                                  accountKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  blob:
                                    type: string
                                  container:
                                    type: string
                                  endpoint:
                                    type: string
                                  useSDKCreds:
                                    type: boolean
                                required:
                                - blob
                                - container
                                - endpoint
                                type: object
                              deleted:
                                type: boolean
                              from:
                                type: string
                              fromExpression:
                                type: string
                              gcs:
                                properties:
                                  bucket:
                                    type: string
                                  key:
                                    type: string
                                  serviceAccountKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - key
                                type: object
                              git:
                                properties:
                                  branch:
                                    type: string
                                  depth:
                                    format: int64
                                    type: integer
                                  disableSubmodules:
                                    type: boolean
                                  fetch:
                                    items:
                                      type: string
                                    type: array
                                  insecureIgnoreHostKey:
                                    type: boolean
                                  insecureSkipTLS:
                                    type: boolean
                                  passwordSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  repo:
                                    type: string
                                  revision:
                                    type: string
                                  singleBranch:
                                    type: boolean
                                  sshPrivateKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  usernameSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - repo
                                type: object
                              globalName:
                                type: string
                              hdfs:
                                properties:
                                  addresses:
                                    items:
                                      type: string
                                    type: array
                                  dataTransferProtection:
                                    type: string
                                  force:
                                    type: boolean
                                  hdfsUser:
                                    type: string
                                  krbCCacheSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbConfigConfigMap:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbKeytabSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbRealm:
                                    type: string
                                  krbServicePrincipalName:
                                    type: string
                                  krbUsername:
                                    type: string
                                  path:
                                    type: string
                                required:
                                - path
                                type: object
                              http:
                                properties:
                                  auth:
                                    properties:
                                      basicAuth:
                                        properties:
                                          passwordSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          usernameSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                      clientCert:
                                        properties:
                                          clientCertSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          clientKeySecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                      oauth2:
                                        properties:
                                          clientIDSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          clientSecretSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          endpointParams:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                value:
                                                  type: string
                                              required:
                                              - key
                                              type: object
                                            type: array
                                          scopes:
                                            items:
                                              type: string
                                            type: array
                                          tokenURLSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                    type: object
                                  headers:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  url:
                                    type: string
                                required:
                                - url
                                type: object
                              mode:
                                format: int32
                                maximum: 511
                                minimum: 0
                                type: integer
                              name:
                                pattern: ^[-a-zA-Z0-9_{}.]+$
                                type: string
                              optional:
                                type: boolean
                              oss:
                                properties:
                                  accessKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  bucket:
                                    type: string
                                  createBucketIfNotPresent:
                                    type: boolean
                                  endpoint:
                                    type: string
                                  key:
                                    type: string
                                  lifecycleRule:
                                    properties:
                                      markDeletionAfterDays:
                                        format: int32
                                        type: integer
                                      markInfrequentAccessAfterDays:
                                        format: int32
                                        type: integer
                                    type: object
                                  secretKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  securityToken:
                                    type: string
                                  useSDKCreds:
                                    type: boolean
                                required:
                                - key
                                type: object
                              path:
                                type: string
                              plugin:
                                properties:
                                  configuration:
                                    type: string
                                  connectionTimeoutSeconds:
                                    format: int32
                                    type: integer
                                  key:
                                    type: string
                                  name:
                                    type: string
                                required:
                                - key
                                type: object
                              raw:
                                properties:
                                  data:
                                    type: string
                                required:
                                - data
                                type: object
                              recurseMode:
                                type: boolean
                              s3:
                                properties:
                                  accessKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  bucket:
                                    type: string
                                  caSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  createBucketIfNotPresent:
                                    properties:
                                      objectLocking:
                                        type: boolean
                                    type: object
                                  encryptionOptions:
                                    properties:
                                      enableEncryption:
                                        type: boolean
                                      kmsEncryptionContext:
                                        type: string
                                      kmsKeyId:
                                        type: string
                                      serverSideCustomerKeySecret:
                                        properties:
                                          key:
                                            type: string
                                          name:
                                            default: ""
                                            type: string
                                          optional:
                                            type: boolean
                                        required:
                                        - key
                                        type: object
                                        x-kubernetes-map-type: atomic
                                    type: object
                                  endpoint:
                                    type: string
                                  insecure:
                                    type: boolean
                                  key:
                                    type: string
                                  region:
                                    type: string
                                  roleARN:
                                    type: string
                                  secretKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  sessionTokenSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  useSDKCreds:
                                    type: boolean
                                type: object
                              subPath:
                                type: string
                            required:
                            - name
                            type: object
                            x-kubernetes-validations:
                            - message: at most one artifact location can be specified
                              rule: '(has(self.s3) ? 1 : 0) + (has(self.git) ? 1 :
                                0) + (has(self.http) ? 1 : 0) + (has(self.artifactory)
                                ? 1 : 0) + (has(self.hdfs) ? 1 : 0) + (has(self.raw)
                                ? 1 : 0) + (has(self.oss) ? 1 : 0) + (has(self.gcs)
                                ? 1 : 0) + (has(self.azure) ? 1 : 0) + (has(self.plugin)
                                ? 1 : 0) <= 1'
                        required:
                        - artifact
                        type: object
                      mergeStrategy:
                        enum:
                        - strategic
                        - merge
                        - json
                        type: string
                      setOwnerReference:
                        type: boolean
                      successCondition:
                        type: string
                    required:
                    - action
                    type: object
                    x-kubernetes-validations:
                    - message: only one of manifest or manifestFrom can be specified
                      rule: (has(self.manifest) && !has(self.manifestFrom)) || (!has(self.manifest)
                        && has(self.manifestFrom)) || (!has(self.manifest) && !has(self.manifestFrom))
                  retryStrategy:
                    properties:
                      affinity:
                        properties:
                          nodeAntiAffinity:
                            type: object
                        type: object
                      backoff:
                        properties:
                          cap:
                            type: string
                          duration:
                            type: string
                          factor:
                            anyOf:
                            - type: integer
                            - type: string
                            x-kubernetes-int-or-string: true
                          maxDuration:
                            type: string
                        type: object
                      expression:
                        type: string
                      limit:
                        anyOf:
                        - type: integer
                        - type: string
                        x-kubernetes-int-or-string: true
                      retryPolicy:
                        enum:
                        - Always
                        - OnFailure
                        - OnError
                        - OnTransientError
                        type: string
                    type: object
                  schedulerName:
                    type: string
                  script:
                    properties:
                      args:
                        items:
                          type: string
                        type: array
                        x-kubernetes-list-type: atomic
                      command:
                        items:
                          type: string
                        type: array
                        x-kubernetes-list-type: atomic
                      env:
                        items:
                          properties:
                            name:
                              type: string
                            value:
                              type: string
                            valueFrom:
                              properties:
                                configMapKeyRef:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                                fieldRef:
                                  properties:
                                    apiVersion:
                                      type: string
                                    fieldPath:
                                      type: string
                                  required:
                                  - fieldPath
                                  type: object
                                  x-kubernetes-map-type: atomic
                                resourceFieldRef:
                                  properties:
                                    containerName:
                                      type: string
                                    divisor:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                    resource:
                                      type: string
                                  required:
                                  - resource
                                  type: object
                                  x-kubernetes-map-type: atomic
                                secretKeyRef:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - name
                        x-kubernetes-list-type: map
                      envFrom:
                        items:
                          properties:
                            configMapRef:
                              properties:
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              type: object
                              x-kubernetes-map-type: atomic
                            prefix:
                              type: string
                            secretRef:
                              properties:
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              type: object
                              x-kubernetes-map-type: atomic
                          type: object
                        type: array
                        x-kubernetes-list-type: atomic
                      image:
                        type: string
                      imagePullPolicy:
                        type: string
                      lifecycle:
                        properties:
                          postStart:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              sleep:
                                properties:
                                  seconds:
                                    format: int64
                                    type: integer
                                required:
                                - seconds
                                type: object
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                            type: object
                          preStop:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              sleep:
                                properties:
                                  seconds:
                                    format: int64
                                    type: integer
                                required:
                                - seconds
                                type: object
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                            type: object
                          stopSignal:
                            type: string
                        type: object
                      livenessProbe:
                        properties:
                          exec:
                            properties:
                              command:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                            type: object
                          failureThreshold:
                            format: int32
                            type: integer
                          grpc:
                            properties:
                              port:
                                format: int32
                                type: integer
                              service:
                                default: ""
                                type: string
                            required:
                            - port
                            type: object
                          httpGet:
                            properties:
                              host:
                                type: string
                              httpHeaders:
                                items:
                                  properties:
                                    name:
                                      type: string
                                    value:
                                      type: string
                                  required:
                                  - name
                                  - value
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              path:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                              scheme:
                                type: string
                            required:
                            - port
                            type: object
                          initialDelaySeconds:
                            format: int32
                            type: integer
                          periodSeconds:
                            format: int32
                            type: integer
                          successThreshold:
                            format: int32
                            type: integer
                          tcpSocket:
                            properties:
                              host:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                            required:
                            - port
                            type: object
                          terminationGracePeriodSeconds:
                            format: int64
                            type: integer
                          timeoutSeconds:
                            format: int32
                            type: integer
                        type: object
                      name:
                        type: string
                      ports:
                        items:
                          properties:
                            containerPort:
                              format: int32
                              type: integer
                            hostIP:
                              type: string
                            hostPort:
                              format: int32
                              type: integer
                            name:
                              type: string
                            protocol:
                              default: TCP
                              type: string
                          required:
                          - containerPort
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - containerPort
                        - protocol
                        x-kubernetes-list-type: map
                      readinessProbe:
                        properties:
                          exec:
                            properties:
                              command:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                            type: object
                          failureThreshold:
                            format: int32
                            type: integer
                          grpc:
                            properties:
                              port:
                                format: int32
                                type: integer
                              service:
                                default: ""
                                type: string
                            required:
                            - port
                            type: object
                          httpGet:
                            properties:
                              host:
                                type: string
                              httpHeaders:
                                items:
                                  properties:
                                    name:
                                      type: string
                                    value:
                                      type: string
                                  required:
                                  - name
                                  - value
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              path:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                              scheme:
                                type: string
                            required:
                            - port
                            type: object
                          initialDelaySeconds:
                            format: int32
                            type: integer
                          periodSeconds:
                            format: int32
                            type: integer
                          successThreshold:
                            format: int32
                            type: integer
                          tcpSocket:
                            properties:
                              host:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                            required:
                            - port
                            type: object
                          terminationGracePeriodSeconds:
                            format: int64
                            type: integer
                          timeoutSeconds:
                            format: int32
                            type: integer
                        type: object
                      resizePolicy:
                        items:
                          properties:
                            resourceName:
                              type: string
                            restartPolicy:
                              type: string
                          required:
                          - resourceName
                          - restartPolicy
                          type: object
                        type: array
                        x-kubernetes-list-type: atomic
                      resources:
                        properties:
                          claims:
                            items:
                              properties:
                                name:
                                  type: string
                                request:
                                  type: string
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                            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
                            type: object
                        type: object
                      restartPolicy:
                        type: string
                      securityContext:
                        properties:
                          allowPrivilegeEscalation:
                            type: boolean
                          appArmorProfile:
                            properties:
                              localhostProfile:
                                type: string
                              type:
                                type: string
                            required:
                            - type
                            type: object
                          capabilities:
                            properties:
                              add:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              drop:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                            type: object
                          privileged:
                            type: boolean
                          procMount:
                            type: string
                          readOnlyRootFilesystem:
                            type: boolean
                          runAsGroup:
                            format: int64
                            type: integer
                          runAsNonRoot:
                            type: boolean
                          runAsUser:
                            format: int64
                            type: integer
                          seLinuxOptions:
                            properties:
                              level:
                                type: string
                              role:
                                type: string
                              type:
                                type: string
                              user:
                                type: string
                            type: object
                          seccompProfile:
                            properties:
                              localhostProfile:
                                type: string
                              type:
                                type: string
                            required:
                            - type
                            type: object
                          windowsOptions:
                            properties:
                              gmsaCredentialSpec:
                                type: string
                              gmsaCredentialSpecName:
                                type: string
                              hostProcess:
                                type: boolean
                              runAsUserName:
                                type: string
                            type: object
                        type: object
                      source:
                        type: string
                      startupProbe:
                        properties:
                          exec:
                            properties:
                              command:
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                            type: object
                          failureThreshold:
                            format: int32
                            type: integer
                          grpc:
                            properties:
                              port:
                                format: int32
                                type: integer
                              service:
                                default: ""
                                type: string
                            required:
                            - port
                            type: object
                          httpGet:
                            properties:
                              host:
                                type: string
                              httpHeaders:
                                items:
                                  properties:
                                    name:
                                      type: string
                                    value:
                                      type: string
                                  required:
                                  - name
                                  - value
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              path:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                              scheme:
                                type: string
                            required:
                            - port
                            type: object
                          initialDelaySeconds:
                            format: int32
                            type: integer
                          periodSeconds:
                            format: int32
                            type: integer
                          successThreshold:
                            format: int32
                            type: integer
                          tcpSocket:
                            properties:
                              host:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                            required:
                            - port
                            type: object
                          terminationGracePeriodSeconds:
                            format: int64
                            type: integer
                          timeoutSeconds:
                            format: int32
                            type: integer
                        type: object
                      stdin:
                        type: boolean
                      stdinOnce:
                        type: boolean
                      terminationMessagePath:
                        type: string
                      terminationMessagePolicy:
                        type: string
                      tty:
                        type: boolean
                      volumeDevices:
                        items:
                          properties:
                            devicePath:
                              type: string
                            name:
                              type: string
                          required:
                          - devicePath
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - devicePath
                        x-kubernetes-list-type: map
                      volumeMounts:
                        items:
                          properties:
                            mountPath:
                              type: string
                            mountPropagation:
                              type: string
                            name:
                              type: string
                            readOnly:
                              type: boolean
                            recursiveReadOnly:
                              type: string
                            subPath:
                              type: string
                            subPathExpr:
                              type: string
                          required:
                          - mountPath
                          - name
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - mountPath
                        x-kubernetes-list-type: map
                      workingDir:
                        type: string
                    type: object
                  securityContext:
                    properties:
                      appArmorProfile:
                        properties:
                          localhostProfile:
                            type: string
                          type:
                            type: string
                        required:
                        - type
                        type: object
                      fsGroup:
                        format: int64
                        type: integer
                      fsGroupChangePolicy:
                        type: string
                      runAsGroup:
                        format: int64
                        type: integer
                      runAsNonRoot:
                        type: boolean
                      runAsUser:
                        format: int64
                        type: integer
                      seLinuxChangePolicy:
                        type: string
                      seLinuxOptions:
                        properties:
                          level:
                            type: string
                          role:
                            type: string
                          type:
                            type: string
                          user:
                            type: string
                        type: object
                      seccompProfile:
                        properties:
                          localhostProfile:
                            type: string
                          type:
                            type: string
                        required:
                        - type
                        type: object
                      supplementalGroups:
                        items:
                          format: int64
                          type: integer
                        type: array
                        x-kubernetes-list-type: atomic
                      supplementalGroupsPolicy:
                        type: string
                      sysctls:
                        items:
                          properties:
                            name:
                              type: string
                            value:
                              type: string
                          required:
                          - name
                          - value
                          type: object
                        type: array
                        x-kubernetes-list-type: atomic
                      windowsOptions:
                        properties:
                          gmsaCredentialSpec:
                            type: string
                          gmsaCredentialSpecName:
                            type: string
                          hostProcess:
                            type: boolean
                          runAsUserName:
                            type: string
                        type: object
                    type: object
                  serviceAccountName:
                    type: string
                  sidecars:
                    items:
                      properties:
                        args:
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        command:
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        env:
                          items:
                            properties:
                              name:
                                type: string
                              value:
                                type: string
                              valueFrom:
                                properties:
                                  configMapKeyRef:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  fieldRef:
                                    properties:
                                      apiVersion:
                                        type: string
                                      fieldPath:
                                        type: string
                                    required:
                                    - fieldPath
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  resourceFieldRef:
                                    properties:
                                      containerName:
                                        type: string
                                      divisor:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                        x-kubernetes-int-or-string: true
                                      resource:
                                        type: string
                                    required:
                                    - resource
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  secretKeyRef:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                type: object
                            required:
                            - name
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - name
                          x-kubernetes-list-type: map
                        envFrom:
                          items:
                            properties:
                              configMapRef:
                                properties:
                                  name:
                                    default: ""
                                    type: string
                                  optional:
                                    type: boolean
                                type: object
                                x-kubernetes-map-type: atomic
                              prefix:
                                type: string
                              secretRef:
                                properties:
                                  name:
                                    default: ""
                                    type: string
                                  optional:
                                    type: boolean
                                type: object
                                x-kubernetes-map-type: atomic
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        image:
                          type: string
                        imagePullPolicy:
                          type: string
                        lifecycle:
                          properties:
                            postStart:
                              properties:
                                exec:
                                  properties:
                                    command:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                httpGet:
                                  properties:
                                    host:
                                      type: string
                                    httpHeaders:
                                      items:
                                        properties:
                                          name:
                                            type: string
                                          value:
                                            type: string
                                        required:
                                        - name
                                        - value
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    path:
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      x-kubernetes-int-or-string: true
                                    scheme:
                                      type: string
                                  required:
                                  - port
                                  type: object
                                sleep:
                                  properties:
                                    seconds:
                                      format: int64
                                      type: integer
                                  required:
                                  - seconds
                                  type: object
                                tcpSocket:
                                  properties:
                                    host:
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      x-kubernetes-int-or-string: true
                                  required:
                                  - port
                                  type: object
                              type: object
                            preStop:
                              properties:
                                exec:
                                  properties:
                                    command:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                httpGet:
                                  properties:
                                    host:
                                      type: string
                                    httpHeaders:
                                      items:
                                        properties:
                                          name:
                                            type: string
                                          value:
                                            type: string
                                        required:
                                        - name
                                        - value
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    path:
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      x-kubernetes-int-or-string: true
                                    scheme:
                                      type: string
                                  required:
                                  - port
                                  type: object
                                sleep:
                                  properties:
                                    seconds:
                                      format: int64
                                      type: integer
                                  required:
                                  - seconds
                                  type: object
                                tcpSocket:
                                  properties:
                                    host:
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      x-kubernetes-int-or-string: true
                                  required:
                                  - port
                                  type: object
                              type: object
                            stopSignal:
                              type: string
                          type: object
                        livenessProbe:
                          properties:
                            exec:
                              properties:
                                command:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              format: int32
                              type: integer
                            grpc:
                              properties:
                                port:
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  type: string
                              required:
                              - port
                              type: object
                            httpGet:
                              properties:
                                host:
                                  type: string
                                httpHeaders:
                                  items:
                                    properties:
                                      name:
                                        type: string
                                      value:
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  type: string
                              required:
                              - port
                              type: object
                            initialDelaySeconds:
                              format: int32
                              type: integer
                            periodSeconds:
                              format: int32
                              type: integer
                            successThreshold:
                              format: int32
                              type: integer
                            tcpSocket:
                              properties:
                                host:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                              required:
                              - port
                              type: object
                            terminationGracePeriodSeconds:
                              format: int64
                              type: integer
                            timeoutSeconds:
                              format: int32
                              type: integer
                          type: object
                        mirrorVolumeMounts:
                          type: boolean
                        name:
                          type: string
                        ports:
                          items:
                            properties:
                              containerPort:
                                format: int32
                                type: integer
                              hostIP:
                                type: string
                              hostPort:
                                format: int32
                                type: integer
                              name:
                                type: string
                              protocol:
                                default: TCP
                                type: string
                            required:
                            - containerPort
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - containerPort
                          - protocol
                          x-kubernetes-list-type: map
                        readinessProbe:
                          properties:
                            exec:
                              properties:
                                command:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              format: int32
                              type: integer
                            grpc:
                              properties:
                                port:
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  type: string
                              required:
                              - port
                              type: object
                            httpGet:
                              properties:
                                host:
                                  type: string
                                httpHeaders:
                                  items:
                                    properties:
                                      name:
                                        type: string
                                      value:
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  type: string
                              required:
                              - port
                              type: object
                            initialDelaySeconds:
                              format: int32
                              type: integer
                            periodSeconds:
                              format: int32
                              type: integer
                            successThreshold:
                              format: int32
                              type: integer
                            tcpSocket:
                              properties:
                                host:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                              required:
                              - port
                              type: object
                            terminationGracePeriodSeconds:
                              format: int64
                              type: integer
                            timeoutSeconds:
                              format: int32
                              type: integer
                          type: object
                        resizePolicy:
                          items:
                            properties:
                              resourceName:
                                type: string
                              restartPolicy:
                                type: string
                            required:
                            - resourceName
                            - restartPolicy
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        resources:
                          properties:
                            claims:
                              items:
                                properties:
                                  name:
                                    type: string
                                  request:
                                    type: string
                                required:
                                - name
                                type: object
                              type: array
                              x-kubernetes-list-map-keys:
                              - name
                              x-kubernetes-list-type: map
                            limits:
                              additionalProperties:
                                anyOf:
                                - type: integer
                                - type: string
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                              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
                              type: object
                          type: object
                        restartPolicy:
                          type: string
                        securityContext:
                          properties:
                            allowPrivilegeEscalation:
                              type: boolean
                            appArmorProfile:
                              properties:
                                localhostProfile:
                                  type: string
                                type:
                                  type: string
                              required:
                              - type
                              type: object
                            capabilities:
                              properties:
                                add:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                drop:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            privileged:
                              type: boolean
                            procMount:
                              type: string
                            readOnlyRootFilesystem:
                              type: boolean
                            runAsGroup:
                              format: int64
                              type: integer
                            runAsNonRoot:
                              type: boolean
                            runAsUser:
                              format: int64
                              type: integer
                            seLinuxOptions:
                              properties:
                                level:
                                  type: string
                                role:
                                  type: string
                                type:
                                  type: string
                                user:
                                  type: string
                              type: object
                            seccompProfile:
                              properties:
                                localhostProfile:
                                  type: string
                                type:
                                  type: string
                              required:
                              - type
                              type: object
                            windowsOptions:
                              properties:
                                gmsaCredentialSpec:
                                  type: string
                                gmsaCredentialSpecName:
                                  type: string
                                hostProcess:
                                  type: boolean
                                runAsUserName:
                                  type: string
                              type: object
                          type: object
                        startupProbe:
                          properties:
                            exec:
                              properties:
                                command:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              format: int32
                              type: integer
                            grpc:
                              properties:
                                port:
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  type: string
                              required:
                              - port
                              type: object
                            httpGet:
                              properties:
                                host:
                                  type: string
                                httpHeaders:
                                  items:
                                    properties:
                                      name:
                                        type: string
                                      value:
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  type: string
                              required:
                              - port
                              type: object
                            initialDelaySeconds:
                              format: int32
                              type: integer
                            periodSeconds:
                              format: int32
                              type: integer
                            successThreshold:
                              format: int32
                              type: integer
                            tcpSocket:
                              properties:
                                host:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                              required:
                              - port
                              type: object
                            terminationGracePeriodSeconds:
                              format: int64
                              type: integer
                            timeoutSeconds:
                              format: int32
                              type: integer
                          type: object
                        stdin:
                          type: boolean
                        stdinOnce:
                          type: boolean
                        terminationMessagePath:
                          type: string
                        terminationMessagePolicy:
                          type: string
                        tty:
                          type: boolean
                        volumeDevices:
                          items:
                            properties:
                              devicePath:
                                type: string
                              name:
                                type: string
                            required:
                            - devicePath
                            - name
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - devicePath
                          x-kubernetes-list-type: map
                        volumeMounts:
                          items:
                            properties:
                              mountPath:
                                type: string
                              mountPropagation:
                                type: string
                              name:
                                type: string
                              readOnly:
                                type: boolean
                              recursiveReadOnly:
                                type: string
                              subPath:
                                type: string
                              subPathExpr:
                                type: string
                            required:
                            - mountPath
                            - name
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - mountPath
                          x-kubernetes-list-type: map
                        workingDir:
                          type: string
                      required:
                      - name
                      type: object
                    type: array
                  steps:
                    items:
                      items:
                        properties:
                          arguments:
                            properties:
                              artifacts:
                                items:
                                  properties:
                                    archive:
                                      properties:
                                        none:
                                          type: object
                                        tar:
                                          properties:
                                            compressionLevel:
                                              format: int32
                                              type: integer
                                          type: object
                                        zip:
                                          type: object
                                      type: object
                                    archiveLogs:
                                      type: boolean
                                    artifactGC:
                                      properties:
                                        podMetadata:
                                          properties:
                                            annotations:
                                              additionalProperties:
                                                type: string
                                              type: object
                                            labels:
                                              additionalProperties:
                                                type: string
                                              type: object
                                          type: object
                                        serviceAccountName:
                                          type: string
                                        strategy:
                                          enum:
                                          - ""
                                          - OnWorkflowCompletion
                                          - OnWorkflowDeletion
                                          - Never
                                          type: string
                                      type: object
                                    artifactory:
                                      properties:
                                        passwordSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        url:
                                          type: string
                                        usernameSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                      required:
                                      - url
                                      type: object
                                    azure:
                                      properties:
                                        accountKeySecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        blob:
                                          type: string
                                        container:
                                          type: string
                                        endpoint:
                                          type: string
                                        useSDKCreds:
                                          type: boolean
                                      required:
                                      - blob
                                      - container
                                      - endpoint
                                      type: object
                                    deleted:
                                      type: boolean
                                    from:
                                      type: string
                                    fromExpression:
                                      type: string
                                    gcs:
                                      properties:
                                        bucket:
                                          type: string
                                        key:
                                          type: string
                                        serviceAccountKeySecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                      required:
                                      - key
                                      type: object
                                    git:
                                      properties:
                                        branch:
                                          type: string
                                        depth:
                                          format: int64
                                          type: integer
                                        disableSubmodules:
                                          type: boolean
                                        fetch:
                                          items:
                                            type: string
                                          type: array
                                        insecureIgnoreHostKey:
                                          type: boolean
                                        insecureSkipTLS:
                                          type: boolean
                                        passwordSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        repo:
                                          type: string
                                        revision:
                                          type: string
                                        singleBranch:
                                          type: boolean
                                        sshPrivateKeySecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        usernameSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                      required:
                                      - repo
                                      type: object
                                    globalName:
                                      type: string
                                    hdfs:
                                      properties:
                                        addresses:
                                          items:
                                            type: string
                                          type: array
                                        dataTransferProtection:
                                          type: string
                                        force:
                                          type: boolean
                                        hdfsUser:
                                          type: string
                                        krbCCacheSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        krbConfigConfigMap:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        krbKeytabSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        krbRealm:
                                          type: string
                                        krbServicePrincipalName:
                                          type: string
                                        krbUsername:
                                          type: string
                                        path:
                                          type: string
                                      required:
                                      - path
                                      type: object
                                    http:
                                      properties:
                                        auth:
                                          properties:
                                            basicAuth:
                                              properties:
                                                passwordSecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                usernameSecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                              type: object
                                            clientCert:
                                              properties:
                                                clientCertSecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                clientKeySecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                              type: object
                                            oauth2:
                                              properties:
                                                clientIDSecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                clientSecretSecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                endpointParams:
                                                  items:
                                                    properties:
                                                      key:
                                                        type: string
                                                      value:
                                                        type: string
                                                    required:
                                                    - key
                                                    type: object
                                                  type: array
                                                scopes:
                                                  items:
                                                    type: string
                                                  type: array
                                                tokenURLSecret:
                                                  properties:
                                                    key:
                                                      type: string
                                                    name:
                                                      default: ""
                                                      type: string
                                                    optional:
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                              type: object
                                          type: object
                                        headers:
                                          items:
                                            properties:
                                              name:
                                                type: string
                                              value:
                                                type: string
                                            required:
                                            - name
                                            - value
                                            type: object
                                          type: array
                                        url:
                                          type: string
                                      required:
                                      - url
                                      type: object
                                    mode:
                                      format: int32
                                      maximum: 511
                                      minimum: 0
                                      type: integer
                                    name:
                                      pattern: ^[-a-zA-Z0-9_{}.]+$
                                      type: string
                                    optional:
                                      type: boolean
                                    oss:
                                      properties:
                                        accessKeySecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        bucket:
                                          type: string
                                        createBucketIfNotPresent:
                                          type: boolean
                                        endpoint:
                                          type: string
                                        key:
                                          type: string
                                        lifecycleRule:
                                          properties:
                                            markDeletionAfterDays:
                                              format: int32
                                              type: integer
                                            markInfrequentAccessAfterDays:
                                              format: int32
                                              type: integer
                                          type: object
                                        secretKeySecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        securityToken:
                                          type: string
                                        useSDKCreds:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                    path:
                                      type: string
                                    plugin:
                                      properties:
                                        configuration:
                                          type: string
                                        connectionTimeoutSeconds:
                                          format: int32
                                          type: integer
                                        key:
                                          type: string
                                        name:
                                          type: string
                                      required:
                                      - key
                                      type: object
                                    raw:
                                      properties:
                                        data:
                                          type: string
                                      required:
                                      - data
                                      type: object
                                    recurseMode:
                                      type: boolean
                                    s3:
                                      properties:
                                        accessKeySecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        bucket:
                                          type: string
                                        caSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        createBucketIfNotPresent:
                                          properties:
                                            objectLocking:
                                              type: boolean
                                          type: object
                                        encryptionOptions:
                                          properties:
                                            enableEncryption:
                                              type: boolean
                                            kmsEncryptionContext:
                                              type: string
                                            kmsKeyId:
                                              type: string
                                            serverSideCustomerKeySecret:
                                              properties:
                                                key:
                                                  type: string
                                                name:
                                                  default: ""
                                                  type: string
                                                optional:
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                          type: object
                                        endpoint:
                                          type: string
                                        insecure:
                                          type: boolean
                                        key:
                                          type: string
                                        region:
                                          type: string
                                        roleARN:
                                          type: string
                                        secretKeySecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        sessionTokenSecret:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        useSDKCreds:
                                          type: boolean
                                      type: object
                                    subPath:
                                      type: string
                                  required:
                                  - name
                                  type: object
                                  x-kubernetes-validations:
                                  - message: at most one artifact location can be
                                      specified
                                    rule: '(has(self.s3) ? 1 : 0) + (has(self.git)
                                      ? 1 : 0) + (has(self.http) ? 1 : 0) + (has(self.artifactory)
                                      ? 1 : 0) + (has(self.hdfs) ? 1 : 0) + (has(self.raw)
                                      ? 1 : 0) + (has(self.oss) ? 1 : 0) + (has(self.gcs)
                                      ? 1 : 0) + (has(self.azure) ? 1 : 0) + (has(self.plugin)
                                      ? 1 : 0) <= 1'
                                type: array
                              parameters:
                                items:
                                  properties:
                                    default:
                                      type: string
                                    description:
                                      type: string
                                    enum:
                                      items:
                                        type: string
                                      minItems: 1
                                      type: array
                                    globalName:
                                      type: string
                                    name:
                                      pattern: ^[-a-zA-Z0-9_]+$
                                      type: string
                                    value:
                                      type: string
                                    valueFrom:
                                      properties:
                                        configMapKeyRef:
                                          properties:
                                            key:
                                              type: string
                                            name:
                                              default: ""
                                              type: string
                                            optional:
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        default:
                                          type: string
                                        event:
                                          type: string
                                        expression:
                                          type: string
                                        jqFilter:
                                          type: string
                                        jsonPath:
                                          type: string
                                        parameter:
                                          type: string
                                        path:
                                          type: string
                                        supplied:
                                          type: object
                                      type: object
                                  required:
                                  - name
                                  type: object
                                type: array
                            type: object
                          continueOn:
                            properties:
                              error:
                                type: boolean
                              failed:
                                type: boolean
                            type: object
                          hooks:
                            additionalProperties:
                              properties:
                                arguments:
                                  properties:
                                    artifacts:
                                      items:
                                        properties:
                                          archive:
                                            properties:
                                              none:
                                                type: object
                                              tar:
                                                properties:
                                                  compressionLevel:
                                                    format: int32
                                                    type: integer
                                                type: object
                                              zip:
                                                type: object
                                            type: object
                                          archiveLogs:
                                            type: boolean
                                          artifactGC:
                                            properties:
                                              podMetadata:
                                                properties:
                                                  annotations:
                                                    additionalProperties:
                                                      type: string
                                                    type: object
                                                  labels:
                                                    additionalProperties:
                                                      type: string
                                                    type: object
                                                type: object
                                              serviceAccountName:
                                                type: string
                                              strategy:
                                                enum:
                                                - ""
                                                - OnWorkflowCompletion
                                                - OnWorkflowDeletion
                                                - Never
                                                type: string
                                            type: object
                                          artifactory:
                                            properties:
                                              passwordSecret:
                                                properties:
                                                  key:
                                                    type: string
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              url:
                                                type: string
                                              usernameSecret:
                                                properties:
                                                  key:
                                                    type: string
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                                x-kubernetes-map-type: atomic
                                            required:
                                            - url
                                            type: object
                                          azure:
                                            properties:
                                              accountKeySecret:
                                                properties:
                                                  key:
                                                    type: string
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              blob:
                                                type: string
                                              container:
                                                type: string
                                              endpoint:
                                                type: string
                                              useSDKCreds:
                                                type: boolean
                                            required:
                                            - blob
                                            - container
                                            - endpoint
                                            type: object
                                          deleted:
                                            type: boolean
                                          from:
                                            type: string
                                          fromExpression:
                                            type: string
                                          gcs:
                                            properties:
                                              bucket:
                                                type: string
                                              key:
                                                type: string
                                              serviceAccountKeySecret:
                                                properties:
                                                  key:
                                                    type: string
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                                x-kubernetes-map-type: atomic
                                            required:
                                            - key
                                            type: object
                                          git:
                                            properties:
                                              branch:
                                                type: string
                                              depth:
                                                format: int64
                                                type: integer
                                              disableSubmodules:
                                                type: boolean
                                              fetch:
                                                items:
                                                  type: string
                                                type: array
                                              insecureIgnoreHostKey:
                                                type: boolean
                                              insecureSkipTLS:
                                                type: boolean
                                              passwordSecret:
                                                properties:
                                                  key:
                                                    type: string
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              repo:
                                                type: string
                                              revision:
                                                type: string
                                              singleBranch:
                                                type: boolean
                                              sshPrivateKeySecret:
                                                properties:
                                                  key:
                                                    type: string
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              usernameSecret:
                                                properties:
                                                  key:
                                                    type: string
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                                x-kubernetes-map-type: atomic
                                            required:
                                            - repo
                                            type: object
                                          globalName:
                                            type: string
                                          hdfs:
                                            properties:
                                              addresses:
                                                items:
                                                  type: string
                                                type: array
                                              dataTransferProtection:
                                                type: string
                                              force:
                                                type: boolean
                                              hdfsUser:
                                                type: string
                                              krbCCacheSecret:
                                                properties:
                                                  key:
                                                    type: string
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              krbConfigConfigMap:
                                                properties:
                                                  key:
                                                    type: string
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              krbKeytabSecret:
                                                properties:
                                                  key:
                                                    type: string
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              krbRealm:
                                                type: string
                                              krbServicePrincipalName:
                                                type: string
                                              krbUsername:
                                                type: string
                                              path:
                                                type: string
                                            required:
                                            - path
                                            type: object
                                          http:
                                            properties:
                                              auth:
                                                properties:
                                                  basicAuth:
                                                    properties:
                                                      passwordSecret:
                                                        properties:
                                                          key:
                                                            type: string
                                                          name:
                                                            default: ""
                                                            type: string
                                                          optional:
                                                            type: boolean
                                                        required:
                                                        - key
                                                        type: object
                                                        x-kubernetes-map-type: atomic
                                                      usernameSecret:
                                                        properties:
                                                          key:
                                                            type: string
                                                          name:
                                                            default: ""
                                                            type: string
                                                          optional:
                                                            type: boolean
                                                        required:
                                                        - key
                                                        type: object
                                                        x-kubernetes-map-type: atomic
                                                    type: object
                                                  clientCert:
                                                    properties:
                                                      clientCertSecret:
                                                        properties:
                                                          key:
                                                            type: string
                                                          name:
                                                            default: ""
                                                            type: string
                                                          optional:
                                                            type: boolean
                                                        required:
                                                        - key
                                                        type: object
                                                        x-kubernetes-map-type: atomic
                                                      clientKeySecret:
                                                        properties:
                                                          key:
                                                            type: string
                                                          name:
                                                            default: ""
                                                            type: string
                                                          optional:
                                                            type: boolean
                                                        required:
                                                        - key
                                                        type: object
                                                        x-kubernetes-map-type: atomic
                                                    type: object
                                                  oauth2:
                                                    properties:
                                                      clientIDSecret:
                                                        properties:
                                                          key:
                                                            type: string
                                                          name:
                                                            default: ""
                                                            type: string
                                                          optional:
                                                            type: boolean
                                                        required:
                                                        - key
                                                        type: object
                                                        x-kubernetes-map-type: atomic
                                                      clientSecretSecret:
                                                        properties:
                                                          key:
                                                            type: string
                                                          name:
                                                            default: ""
                                                            type: string
                                                          optional:
                                                            type: boolean
                                                        required:
                                                        - key
                                                        type: object
                                                        x-kubernetes-map-type: atomic
                                                      endpointParams:
                                                        items:
                                                          properties:
                                                            key:
                                                              type: string
                                                            value:
                                                              type: string
                                                          required:
                                                          - key
                                                          type: object
                                                        type: array
                                                      scopes:
                                                        items:
                                                          type: string
                                                        type: array
                                                      tokenURLSecret:
                                                        properties:
                                                          key:
                                                            type: string
                                                          name:
                                                            default: ""
                                                            type: string
                                                          optional:
                                                            type: boolean
                                                        required:
                                                        - key
                                                        type: object
                                                        x-kubernetes-map-type: atomic
                                                    type: object
                                                type: object
                                              headers:
                                                items:
                                                  properties:
                                                    name:
                                                      type: string
                                                    value:
                                                      type: string
                                                  required:
                                                  - name
                                                  - value
                                                  type: object
                                                type: array
                                              url:
                                                type: string
                                            required:
                                            - url
                                            type: object
                                          mode:
                                            format: int32
                                            maximum: 511
                                            minimum: 0
                                            type: integer
                                          name:
                                            pattern: ^[-a-zA-Z0-9_{}.]+$
                                            type: string
                                          optional:
                                            type: boolean
                                          oss:
                                            properties:
                                              accessKeySecret:
                                                properties:
                                                  key:
                                                    type: string
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              bucket:
                                                type: string
                                              createBucketIfNotPresent:
                                                type: boolean
                                              endpoint:
                                                type: string
                                              key:
                                                type: string
                                              lifecycleRule:
                                                properties:
                                                  markDeletionAfterDays:
                                                    format: int32
                                                    type: integer
                                                  markInfrequentAccessAfterDays:
                                                    format: int32
                                                    type: integer
                                                type: object
                                              secretKeySecret:
                                                properties:
                                                  key:
                                                    type: string
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              securityToken:
                                                type: string
                                              useSDKCreds:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                          path:
                                            type: string
                                          plugin:
                                            properties:
                                              configuration:
                                                type: string
                                              connectionTimeoutSeconds:
                                                format: int32
                                                type: integer
                                              key:
                                                type: string
                                              name:
                                                type: string
                                            required:
                                            - key
                                            type: object
                                          raw:
                                            properties:
                                              data:
                                                type: string
                                            required:
                                            - data
                                            type: object
                                          recurseMode:
                                            type: boolean
                                          s3:
                                            properties:
                                              accessKeySecret:
                                                properties:
                                                  key:
                                                    type: string
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              bucket:
                                                type: string
                                              caSecret:
                                                properties:
                                                  key:
                                                    type: string
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              createBucketIfNotPresent:
                                                properties:
                                                  objectLocking:
                                                    type: boolean
                                                type: object
                                              encryptionOptions:
                                                properties:
                                                  enableEncryption:
                                                    type: boolean
                                                  kmsEncryptionContext:
                                                    type: string
                                                  kmsKeyId:
                                                    type: string
                                                  serverSideCustomerKeySecret:
                                                    properties:
                                                      key:
                                                        type: string
                                                      name:
                                                        default: ""
                                                        type: string
                                                      optional:
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                type: object
                                              endpoint:
                                                type: string
                                              insecure:
                                                type: boolean
                                              key:
                                                type: string
                                              region:
                                                type: string
                                              roleARN:
                                                type: string
                                              secretKeySecret:
                                                properties:
                                                  key:
                                                    type: string
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              sessionTokenSecret:
                                                properties:
                                                  key:
                                                    type: string
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              useSDKCreds:
                                                type: boolean
                                            type: object
                                          subPath:
                                            type: string
                                        required:
                                        - name
                                        type: object
                                        x-kubernetes-validations:
                                        - message: at most one artifact location can
                                            be specified
                                          rule: '(has(self.s3) ? 1 : 0) + (has(self.git)
                                            ? 1 : 0) + (has(self.http) ? 1 : 0) +
                                            (has(self.artifactory) ? 1 : 0) + (has(self.hdfs)
                                            ? 1 : 0) + (has(self.raw) ? 1 : 0) + (has(self.oss)
                                            ? 1 : 0) + (has(self.gcs) ? 1 : 0) + (has(self.azure)
                                            ? 1 : 0) + (has(self.plugin) ? 1 : 0)
                                            <= 1'
                                      type: array
                                    parameters:
                                      items:
                                        properties:
                                          default:
                                            type: string
                                          description:
                                            type: string
                                          enum:
                                            items:
                                              type: string
                                            minItems: 1
                                            type: array
                                          globalName:
                                            type: string
                                          name:
                                            pattern: ^[-a-zA-Z0-9_]+$
                                            type: string
                                          value:
                                            type: string
                                          valueFrom:
                                            properties:
                                              configMapKeyRef:
                                                properties:
                                                  key:
                                                    type: string
                                                  name:
                                                    default: ""
                                                    type: string
                                                  optional:
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              default:
                                                type: string
                                              event:
                                                type: string
                                              expression:
                                                type: string
                                              jqFilter:
                                                type: string
                                              jsonPath:
                                                type: string
                                              parameter:
                                                type: string
                                              path:
                                                type: string
                                              supplied:
                                                type: object
                                            type: object
                                        required:
                                        - name
                                        type: object
                                      type: array
                                  type: object
                                expression:
                                  type: string
                                template:
                                  type: string
                                templateRef:
                                  properties:
                                    clusterScope:
                                      type: boolean
                                    name:
                                      type: string
                                    template:
                                      type: string
                                  type: object
                              type: object
                            type: object
                          inline:
                            x-kubernetes-preserve-unknown-fields: true
                          name:
                            maxLength: 128
                            pattern: ^[a-zA-Z0-9][-a-zA-Z0-9]*$
                            type: string
                          onExit:
                            type: string
                          template:
                            type: string
                          templateRef:
                            properties:
                              clusterScope:
                                type: boolean
                              name:
                                type: string
                              template:
                                type: string
                            type: object
                          when:
                            type: string
                          withItems:
                            x-kubernetes-preserve-unknown-fields: true
                          withParam:
                            type: string
                          withSequence:
                            properties:
                              count:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                              end:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                              format:
                                type: string
                              start:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                            type: object
                            x-kubernetes-validations:
                            - message: only one of count or end can be defined
                              rule: '!(has(self.count) && has(self.end))'
                        type: object
                      type: array
                    minItems: 1
                    type: array
                  suspend:
                    properties:
                      duration:
                        type: string
                    type: object
                  synchronization:
                    properties:
                      mutexes:
                        items:
                          properties:
                            database:
                              type: boolean
                            name:
                              type: string
                            namespace:
                              type: string
                          type: object
                        type: array
                      semaphores:
                        items:
                          properties:
                            configMapKeyRef:
                              properties:
                                key:
                                  type: string
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            database:
                              properties:
                                key:
                                  type: string
                              required:
                              - key
                              type: object
                            namespace:
                              type: string
                          type: object
                        type: array
                    type: object
                  timeout:
                    type: string
                  tolerations:
                    items:
                      properties:
                        effect:
                          type: string
                        key:
                          type: string
                        operator:
                          type: string
                        tolerationSeconds:
                          format: int64
                          type: integer
                        value:
                          type: string
                      type: object
                    type: array
                  volumes:
                    items:
                      properties:
                        awsElasticBlockStore:
                          properties:
                            fsType:
                              type: string
                            partition:
                              format: int32
                              type: integer
                            readOnly:
                              type: boolean
                            volumeID:
                              type: string
                          required:
                          - volumeID
                          type: object
                        azureDisk:
                          properties:
                            cachingMode:
                              type: string
                            diskName:
                              type: string
                            diskURI:
                              type: string
                            fsType:
                              default: ext4
                              type: string
                            kind:
                              type: string
                            readOnly:
                              default: false
                              type: boolean
                          required:
                          - diskName
                          - diskURI
                          type: object
                        azureFile:
                          properties:
                            readOnly:
                              type: boolean
                            secretName:
                              type: string
                            shareName:
                              type: string
                          required:
                          - secretName
                          - shareName
                          type: object
                        cephfs:
                          properties:
                            monitors:
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                            path:
                              type: string
                            readOnly:
                              type: boolean
                            secretFile:
                              type: string
                            secretRef:
                              properties:
                                name:
                                  default: ""
                                  type: string
                              type: object
                              x-kubernetes-map-type: atomic
                            user:
                              type: string
                          required:
                          - monitors
                          type: object
                        cinder:
                          properties:
                            fsType:
                              type: string
                            readOnly:
                              type: boolean
                            secretRef:
                              properties:
                                name:
                                  default: ""
                                  type: string
                              type: object
                              x-kubernetes-map-type: atomic
                            volumeID:
                              type: string
                          required:
                          - volumeID
                          type: object
                        configMap:
                          properties:
                            defaultMode:
                              format: int32
                              type: integer
                            items:
                              items:
                                properties:
                                  key:
                                    type: string
                                  mode:
                                    format: int32
                                    type: integer
                                  path:
                                    type: string
                                required:
                                - key
                                - path
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            name:
                              default: ""
                              type: string
                            optional:
                              type: boolean
                          type: object
                          x-kubernetes-map-type: atomic
                        csi:
                          properties:
                            driver:
                              type: string
                            fsType:
                              type: string
                            nodePublishSecretRef:
                              properties:
                                name:
                                  default: ""
                                  type: string
                              type: object
                              x-kubernetes-map-type: atomic
                            readOnly:
                              type: boolean
                            volumeAttributes:
                              additionalProperties:
                                type: string
                              type: object
                          required:
                          - driver
                          type: object
                        downwardAPI:
                          properties:
                            defaultMode:
                              format: int32
                              type: integer
                            items:
                              items:
                                properties:
                                  fieldRef:
                                    properties:
                                      apiVersion:
                                        type: string
                                      fieldPath:
                                        type: string
                                    required:
                                    - fieldPath
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  mode:
                                    format: int32
                                    type: integer
                                  path:
                                    type: string
                                  resourceFieldRef:
                                    properties:
                                      containerName:
                                        type: string
                                      divisor:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                        x-kubernetes-int-or-string: true
                                      resource:
                                        type: string
                                    required:
                                    - resource
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - path
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                          type: object
                        emptyDir:
                          properties:
                            medium:
                              type: string
                            sizeLimit:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                              x-kubernetes-int-or-string: true
                          type: object
                        ephemeral:
                          properties:
                            volumeClaimTemplate:
                              properties:
                                metadata:
                                  properties:
                                    annotations:
                                      additionalProperties:
                                        type: string
                                      type: object
                                    finalizers:
                                      items:
                                        type: string
                                      type: array
                                    generateName:
                                      type: string
                                    labels:
                                      additionalProperties:
                                        type: string
                                      type: object
                                    name:
                                      type: string
                                    namespace:
                                      type: string
                                  type: object
                                spec:
                                  properties:
                                    accessModes:
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    dataSource:
                                      properties:
                                        apiGroup:
                                          type: string
                                        kind:
                                          type: string
                                        name:
                                          type: string
                                      required:
                                      - kind
                                      - name
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    dataSourceRef:
                                      properties:
                                        apiGroup:
                                          type: string
                                        kind:
                                          type: string
                                        name:
                                          type: string
                                        namespace:
                                          type: string
                                      required:
                                      - kind
                                      - name
                                      type: object
                                    resources:
                                      properties:
                                        limits:
                                          additionalProperties:
                                            anyOf:
                                            - type: integer
                                            - type: string
                                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                            x-kubernetes-int-or-string: true
                                          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
                                          type: object
                                      type: object
                                    selector:
                                      properties:
                                        matchExpressions:
                                          items:
                                            properties:
                                              key:
                                                type: string
                                              operator:
                                                type: string
                                              values:
                                                items:
                                                  type: string
                                                type: array
                                                x-kubernetes-list-type: atomic
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          type: object
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    storageClassName:
                                      type: string
                                    volumeAttributesClassName:
                                      type: string
                                    volumeMode:
                                      type: string
                                    volumeName:
                                      type: string
                                  type: object
                              required:
                              - spec
                              type: object
                          type: object
                        fc:
                          properties:
                            fsType:
                              type: string
                            lun:
                              format: int32
                              type: integer
                            readOnly:
                              type: boolean
                            targetWWNs:
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                            wwids:
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                          type: object
                        flexVolume:
                          properties:
                            driver:
                              type: string
                            fsType:
                              type: string
                            options:
                              additionalProperties:
                                type: string
                              type: object
                            readOnly:
                              type: boolean
                            secretRef:
                              properties:
                                name:
                                  default: ""
                                  type: string
                              type: object
                              x-kubernetes-map-type: atomic
                          required:
                          - driver
                          type: object
                        flocker:
                          properties:
                            datasetName:
                              type: string
                            datasetUUID:
                              type: string
                          type: object
                        gcePersistentDisk:
                          properties:
                            fsType:
                              type: string
                            partition:
                              format: int32
                              type: integer
                            pdName:
                              type: string
                            readOnly:
                              type: boolean
                          required:
                          - pdName
                          type: object
                        gitRepo:
                          properties:
                            directory:
                              type: string
                            repository:
                              type: string
                            revision:
                              type: string
                          required:
                          - repository
                          type: object
                        glusterfs:
                          properties:
                            endpoints:
                              type: string
                            path:
                              type: string
                            readOnly:
                              type: boolean
                          required:
                          - endpoints
                          - path
                          type: object
                        hostPath:
                          properties:
                            path:
                              type: string
                            type:
                              type: string
                          required:
                          - path
                          type: object
                        image:
                          properties:
                            pullPolicy:
                              type: string
                            reference:
                              type: string
                          type: object
                        iscsi:
                          properties:
                            chapAuthDiscovery:
                              type: boolean
                            chapAuthSession:
                              type: boolean
                            fsType:
                              type: string
                            initiatorName:
                              type: string
                            iqn:
                              type: string
                            iscsiInterface:
                              default: default
                              type: string
                            lun:
                              format: int32
                              type: integer
                            portals:
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                            readOnly:
                              type: boolean
                            secretRef:
                              properties:
                                name:
                                  default: ""
                                  type: string
                              type: object
                              x-kubernetes-map-type: atomic
                            targetPortal:
                              type: string
                          required:
                          - iqn
                          - lun
                          - targetPortal
                          type: object
                        name:
                          type: string
                        nfs:
                          properties:
                            path:
                              type: string
                            readOnly:
                              type: boolean
                            server:
                              type: string
                          required:
                          - path
                          - server
                          type: object
                        persistentVolumeClaim:
                          properties:
                            claimName:
                              type: string
                            readOnly:
                              type: boolean
                          required:
                          - claimName
                          type: object
                        photonPersistentDisk:
                          properties:
                            fsType:
                              type: string
                            pdID:
                              type: string
                          required:
                          - pdID
                          type: object
                        portworxVolume:
                          properties:
                            fsType:
                              type: string
                            readOnly:
                              type: boolean
                            volumeID:
                              type: string
                          required:
                          - volumeID
                          type: object
                        projected:
                          properties:
                            defaultMode:
                              format: int32
                              type: integer
                            sources:
                              items:
                                properties:
                                  clusterTrustBundle:
                                    properties:
                                      labelSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                              - key
                                              - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      name:
                                        type: string
                                      optional:
                                        type: boolean
                                      path:
                                        type: string
                                      signerName:
                                        type: string
                                    required:
                                    - path
                                    type: object
                                  configMap:
                                    properties:
                                      items:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            mode:
                                              format: int32
                                              type: integer
                                            path:
                                              type: string
                                          required:
                                          - key
                                          - path
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  downwardAPI:
                                    properties:
                                      items:
                                        items:
                                          properties:
                                            fieldRef:
                                              properties:
                                                apiVersion:
                                                  type: string
                                                fieldPath:
                                                  type: string
                                              required:
                                              - fieldPath
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            mode:
                                              format: int32
                                              type: integer
                                            path:
                                              type: string
                                            resourceFieldRef:
                                              properties:
                                                containerName:
                                                  type: string
                                                divisor:
                                                  anyOf:
                                                  - type: integer
                                                  - type: string
                                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                  x-kubernetes-int-or-string: true
                                                resource:
                                                  type: string
                                              required:
                                              - resource
                                              type: object
                                              x-kubernetes-map-type: atomic
                                          required:
                                          - path
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                  secret:
                                    properties:
                                      items:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            mode:
                                              format: int32
                                              type: integer
                                            path:
                                              type: string
                                          required:
                                          - key
                                          - path
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  serviceAccountToken:
                                    properties:
                                      audience:
                                        type: string
                                      expirationSeconds:
                                        format: int64
                                        type: integer
                                      path:
                                        type: string
                                    required:
                                    - path
                                    type: object
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                          type: object
                        quobyte:
                          properties:
                            group:
                              type: string
                            readOnly:
                              type: boolean
                            registry:
                              type: string
                            tenant:
                              type: string
                            user:
                              type: string
                            volume:
                              type: string
                          required:
                          - registry
                          - volume
                          type: object
                        rbd:
                          properties:
                            fsType:
                              type: string
                            image:
                              type: string
                            keyring:
                              default: /etc/ceph/keyring
                              type: string
                            monitors:
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                            pool:
                              default: rbd
                              type: string
                            readOnly:
                              type: boolean
                            secretRef:
                              properties:
                                name:
                                  default: ""
                                  type: string
                              type: object
                              x-kubernetes-map-type: atomic
                            user:
                              default: admin
                              type: string
                          required:
                          - image
                          - monitors
                          type: object
                        scaleIO:
                          properties:
                            fsType:
                              default: xfs
                              type: string
                            gateway:
                              type: string
                            protectionDomain:
                              type: string
                            readOnly:
                              type: boolean
                            secretRef:
                              properties:
                                name:
                                  default: ""
                                  type: string
                              type: object
                              x-kubernetes-map-type: atomic
                            sslEnabled:
                              type: boolean
                            storageMode:
                              default: ThinProvisioned
                              type: string
                            storagePool:
                              type: string
                            system:
                              type: string
                            volumeName:
                              type: string
                          required:
                          - gateway
                          - secretRef
                          - system
                          type: object
                        secret:
                          properties:
                            defaultMode:
                              format: int32
                              type: integer
                            items:
                              items:
                                properties:
                                  key:
                                    type: string
                                  mode:
                                    format: int32
                                    type: integer
                                  path:
                                    type: string
                                required:
                                - key
                                - path
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            optional:
                              type: boolean
                            secretName:
                              type: string
                          type: object
                        storageos:
                          properties:
                            fsType:
                              type: string
                            readOnly:
                              type: boolean
                            secretRef:
                              properties:
                                name:
                                  default: ""
                                  type: string
                              type: object
                              x-kubernetes-map-type: atomic
                            volumeName:
                              type: string
                            volumeNamespace:
                              type: string
                          type: object
                        vsphereVolume:
                          properties:
                            fsType:
                              type: string
                            storagePolicyID:
                              type: string
                            storagePolicyName:
                              type: string
                            volumePath:
                              type: string
                          required:
                          - volumePath
                          type: object
                      required:
                      - name
                      type: object
                    type: array
                type: object
              templates:
                description: |-
                  Templates is a list of workflow templates used in a workflow
                  MaxItems is an artificial limit to limit CEL validation costs - see note at top of file
                items:
                  description: Template is a reusable and composable unit of execution
                    in a workflow
                  properties:
                    activeDeadlineSeconds:
                      anyOf:
                      - type: integer
                      - type: string
                      description: |-
                        Optional duration in seconds relative to the StartTime that the pod may be active on a node
                        before the system actively tries to terminate the pod; value must be positive integer
                        This field is only applicable to container and script templates.
                      x-kubernetes-int-or-string: true
                    affinity:
                      description: |-
                        Affinity sets the pod's scheduling constraints
                        Overrides the affinity set at the workflow level (if any)
                      properties:
                        nodeAffinity:
                          description: Describes node affinity scheduling rules for
                            the pod.
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              description: |-
                                The scheduler will prefer to schedule pods to nodes that satisfy
                                the affinity expressions specified by this field, but it may choose
                                a node that violates one or more of the expressions. The node that is
                                most preferred is the one with the greatest sum of weights, i.e.
                                for each node that meets all of the scheduling requirements (resource
                                request, requiredDuringScheduling affinity expressions, etc.),
                                compute a sum by iterating through the elements of this field and adding
                                "weight" to the sum if the node matches the corresponding matchExpressions; the
                                node(s) with the highest sum are the most preferred.
                              items:
                                description: |-
                                  An empty preferred scheduling term matches all objects with implicit weight 0
                                  (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
                                properties:
                                  preference:
                                    description: A node selector term, associated
                                      with the corresponding weight.
                                    properties:
                                      matchExpressions:
                                        description: A list of node selector requirements
                                          by node's labels.
                                        items:
                                          description: |-
                                            A node selector requirement is a selector that contains values, a key, and an operator
                                            that relates the key and values.
                                          properties:
                                            key:
                                              description: The label key that the
                                                selector applies to.
                                              type: string
                                            operator:
                                              description: |-
                                                Represents a key's relationship to a set of values.
                                                Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                              type: string
                                            values:
                                              description: |-
                                                An array of string values. If the operator is In or NotIn,
                                                the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                the values array must be empty. If the operator is Gt or Lt, the values
                                                array must have a single element, which will be interpreted as an integer.
                                                This array is replaced during a strategic merge patch.
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchFields:
                                        description: A list of node selector requirements
                                          by node's fields.
                                        items:
                                          description: |-
                                            A node selector requirement is a selector that contains values, a key, and an operator
                                            that relates the key and values.
                                          properties:
                                            key:
                                              description: The label key that the
                                                selector applies to.
                                              type: string
                                            operator:
                                              description: |-
                                                Represents a key's relationship to a set of values.
                                                Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                              type: string
                                            values:
                                              description: |-
                                                An array of string values. If the operator is In or NotIn,
                                                the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                the values array must be empty. If the operator is Gt or Lt, the values
                                                array must have a single element, which will be interpreted as an integer.
                                                This array is replaced during a strategic merge patch.
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  weight:
                                    description: Weight associated with matching the
                                      corresponding nodeSelectorTerm, in the range
                                      1-100.
                                    format: int32
                                    type: integer
                                required:
                                - preference
                                - weight
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            requiredDuringSchedulingIgnoredDuringExecution:
                              description: |-
                                If the affinity requirements specified by this field are not met at
                                scheduling time, the pod will not be scheduled onto the node.
                                If the affinity requirements specified by this field cease to be met
                                at some point during pod execution (e.g. due to an update), the system
                                may or may not try to eventually evict the pod from its node.
                              properties:
                                nodeSelectorTerms:
                                  description: Required. A list of node selector terms.
                                    The terms are ORed.
                                  items:
                                    description: |-
                                      A null or empty node selector term matches no objects. The requirements of
                                      them are ANDed.
                                      The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
                                    properties:
                                      matchExpressions:
                                        description: A list of node selector requirements
                                          by node's labels.
                                        items:
                                          description: |-
                                            A node selector requirement is a selector that contains values, a key, and an operator
                                            that relates the key and values.
                                          properties:
                                            key:
                                              description: The label key that the
                                                selector applies to.
                                              type: string
                                            operator:
                                              description: |-
                                                Represents a key's relationship to a set of values.
                                                Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                              type: string
                                            values:
                                              description: |-
                                                An array of string values. If the operator is In or NotIn,
                                                the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                the values array must be empty. If the operator is Gt or Lt, the values
                                                array must have a single element, which will be interpreted as an integer.
                                                This array is replaced during a strategic merge patch.
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchFields:
                                        description: A list of node selector requirements
                                          by node's fields.
                                        items:
                                          description: |-
                                            A node selector requirement is a selector that contains values, a key, and an operator
                                            that relates the key and values.
                                          properties:
                                            key:
                                              description: The label key that the
                                                selector applies to.
                                              type: string
                                            operator:
                                              description: |-
                                                Represents a key's relationship to a set of values.
                                                Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
                                              type: string
                                            values:
                                              description: |-
                                                An array of string values. If the operator is In or NotIn,
                                                the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                the values array must be empty. If the operator is Gt or Lt, the values
                                                array must have a single element, which will be interpreted as an integer.
                                                This array is replaced during a strategic merge patch.
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  type: array
                                  x-kubernetes-list-type: atomic
                              required:
                              - nodeSelectorTerms
                              type: object
                              x-kubernetes-map-type: atomic
                          type: object
                        podAffinity:
                          description: Describes pod affinity scheduling rules (e.g.
                            co-locate this pod in the same node, zone, etc. as some
                            other pod(s)).
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              description: |-
                                The scheduler will prefer to schedule pods to nodes that satisfy
                                the affinity expressions specified by this field, but it may choose
                                a node that violates one or more of the expressions. The node that is
                                most preferred is the one with the greatest sum of weights, i.e.
                                for each node that meets all of the scheduling requirements (resource
                                request, requiredDuringScheduling affinity expressions, etc.),
                                compute a sum by iterating through the elements of this field and adding
                                "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
                                node(s) with the highest sum are the most preferred.
                              items:
                                description: The weights of all of the matched WeightedPodAffinityTerm
                                  fields are added per-node to find the most preferred
                                  node(s)
                                properties:
                                  podAffinityTerm:
                                    description: Required. A pod affinity term, associated
                                      with the corresponding weight.
                                    properties:
                                      labelSelector:
                                        description: |-
                                          A label query over a set of resources, in this case pods.
                                          If it's null, this PodAffinityTerm matches with no Pods.
                                        properties:
                                          matchExpressions:
                                            description: matchExpressions is a list
                                              of label selector requirements. The
                                              requirements are ANDed.
                                            items:
                                              description: |-
                                                A label selector requirement is a selector that contains values, a key, and an operator that
                                                relates the key and values.
                                              properties:
                                                key:
                                                  description: key is the label key
                                                    that the selector applies to.
                                                  type: string
                                                operator:
                                                  description: |-
                                                    operator represents a key's relationship to a set of values.
                                                    Valid operators are In, NotIn, Exists and DoesNotExist.
                                                  type: string
                                                values:
                                                  description: |-
                                                    values is an array of string values. If the operator is In or NotIn,
                                                    the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                    the values array must be empty. This array is replaced during a strategic
                                                    merge patch.
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                              - key
                                              - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            description: |-
                                              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                              map is equivalent to an element of matchExpressions, whose key field is "key", the
                                              operator is "In", and the values array contains only "value". The requirements are ANDed.
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      matchLabelKeys:
                                        description: |-
                                          MatchLabelKeys is a set of pod label keys to select which pods will
                                          be taken into consideration. The keys are used to lookup values from the
                                          incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                          to select the group of existing pods which pods will be taken into consideration
                                          for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                          pod labels will be ignored. The default value is empty.
                                          The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                          Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      mismatchLabelKeys:
                                        description: |-
                                          MismatchLabelKeys is a set of pod label keys to select which pods will
                                          be taken into consideration. The keys are used to lookup values from the
                                          incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                          to select the group of existing pods which pods will be taken into consideration
                                          for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                          pod labels will be ignored. The default value is empty.
                                          The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                          Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      namespaceSelector:
                                        description: |-
                                          A label query over the set of namespaces that the term applies to.
                                          The term is applied to the union of the namespaces selected by this field
                                          and the ones listed in the namespaces field.
                                          null selector and null or empty namespaces list means "this pod's namespace".
                                          An empty selector ({}) matches all namespaces.
                                        properties:
                                          matchExpressions:
                                            description: matchExpressions is a list
                                              of label selector requirements. The
                                              requirements are ANDed.
                                            items:
                                              description: |-
                                                A label selector requirement is a selector that contains values, a key, and an operator that
                                                relates the key and values.
                                              properties:
                                                key:
                                                  description: key is the label key
                                                    that the selector applies to.
                                                  type: string
                                                operator:
                                                  description: |-
                                                    operator represents a key's relationship to a set of values.
                                                    Valid operators are In, NotIn, Exists and DoesNotExist.
                                                  type: string
                                                values:
                                                  description: |-
                                                    values is an array of string values. If the operator is In or NotIn,
                                                    the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                    the values array must be empty. This array is replaced during a strategic
                                                    merge patch.
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                              - key
                                              - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            description: |-
                                              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                              map is equivalent to an element of matchExpressions, whose key field is "key", the
                                              operator is "In", and the values array contains only "value". The requirements are ANDed.
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      namespaces:
                                        description: |-
                                          namespaces specifies a static list of namespace names that the term applies to.
                                          The term is applied to the union of the namespaces listed in this field
                                          and the ones selected by namespaceSelector.
                                          null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      topologyKey:
                                        description: |-
                                          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                          the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                          whose value of the label with key topologyKey matches that of any node on which any of the
                                          selected pods is running.
                                          Empty topologyKey is not allowed.
                                        type: string
                                    required:
                                    - topologyKey
                                    type: object
                                  weight:
                                    description: |-
                                      weight associated with matching the corresponding podAffinityTerm,
                                      in the range 1-100.
                                    format: int32
                                    type: integer
                                required:
                                - podAffinityTerm
                                - weight
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            requiredDuringSchedulingIgnoredDuringExecution:
                              description: |-
                                If the affinity requirements specified by this field are not met at
                                scheduling time, the pod will not be scheduled onto the node.
                                If the affinity requirements specified by this field cease to be met
                                at some point during pod execution (e.g. due to a pod label update), the
                                system may or may not try to eventually evict the pod from its node.
                                When there are multiple elements, the lists of nodes corresponding to each
                                podAffinityTerm are intersected, i.e. all terms must be satisfied.
                              items:
                                description: |-
                                  Defines a set of pods (namely those matching the labelSelector
                                  relative to the given namespace(s)) that this pod should be
                                  co-located (affinity) or not co-located (anti-affinity) with,
                                  where co-located is defined as running on a node whose value of
                                  the label with key <topologyKey> matches that of any node on which
                                  a pod of the set of pods is running
                                properties:
                                  labelSelector:
                                    description: |-
                                      A label query over a set of resources, in this case pods.
                                      If it's null, this PodAffinityTerm matches with no Pods.
                                    properties:
                                      matchExpressions:
                                        description: matchExpressions is a list of
                                          label selector requirements. The requirements
                                          are ANDed.
                                        items:
                                          description: |-
                                            A label selector requirement is a selector that contains values, a key, and an operator that
                                            relates the key and values.
                                          properties:
                                            key:
                                              description: key is the label key that
                                                the selector applies to.
                                              type: string
                                            operator:
                                              description: |-
                                                operator represents a key's relationship to a set of values.
                                                Valid operators are In, NotIn, Exists and DoesNotExist.
                                              type: string
                                            values:
                                              description: |-
                                                values is an array of string values. If the operator is In or NotIn,
                                                the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                the values array must be empty. This array is replaced during a strategic
                                                merge patch.
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        description: |-
                                          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                          map is equivalent to an element of matchExpressions, whose key field is "key", the
                                          operator is "In", and the values array contains only "value". The requirements are ANDed.
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    description: |-
                                      MatchLabelKeys is a set of pod label keys to select which pods will
                                      be taken into consideration. The keys are used to lookup values from the
                                      incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                      to select the group of existing pods which pods will be taken into consideration
                                      for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                      pod labels will be ignored. The default value is empty.
                                      The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                      Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    description: |-
                                      MismatchLabelKeys is a set of pod label keys to select which pods will
                                      be taken into consideration. The keys are used to lookup values from the
                                      incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                      to select the group of existing pods which pods will be taken into consideration
                                      for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                      pod labels will be ignored. The default value is empty.
                                      The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                      Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    description: |-
                                      A label query over the set of namespaces that the term applies to.
                                      The term is applied to the union of the namespaces selected by this field
                                      and the ones listed in the namespaces field.
                                      null selector and null or empty namespaces list means "this pod's namespace".
                                      An empty selector ({}) matches all namespaces.
                                    properties:
                                      matchExpressions:
                                        description: matchExpressions is a list of
                                          label selector requirements. The requirements
                                          are ANDed.
                                        items:
                                          description: |-
                                            A label selector requirement is a selector that contains values, a key, and an operator that
                                            relates the key and values.
                                          properties:
                                            key:
                                              description: key is the label key that
                                                the selector applies to.
                                              type: string
                                            operator:
                                              description: |-
                                                operator represents a key's relationship to a set of values.
                                                Valid operators are In, NotIn, Exists and DoesNotExist.
                                              type: string
                                            values:
                                              description: |-
                                                values is an array of string values. If the operator is In or NotIn,
                                                the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                the values array must be empty. This array is replaced during a strategic
                                                merge patch.
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        description: |-
                                          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                          map is equivalent to an element of matchExpressions, whose key field is "key", the
                                          operator is "In", and the values array contains only "value". The requirements are ANDed.
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    description: |-
                                      namespaces specifies a static list of namespace names that the term applies to.
                                      The term is applied to the union of the namespaces listed in this field
                                      and the ones selected by namespaceSelector.
                                      null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    description: |-
                                      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                      the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                      whose value of the label with key topologyKey matches that of any node on which any of the
                                      selected pods is running.
                                      Empty topologyKey is not allowed.
                                    type: string
                                required:
                                - topologyKey
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                          type: object
                        podAntiAffinity:
                          description: Describes pod anti-affinity scheduling rules
                            (e.g. avoid putting this pod in the same node, zone, etc.
                            as some other pod(s)).
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              description: |-
                                The scheduler will prefer to schedule pods to nodes that satisfy
                                the anti-affinity expressions specified by this field, but it may choose
                                a node that violates one or more of the expressions. The node that is
                                most preferred is the one with the greatest sum of weights, i.e.
                                for each node that meets all of the scheduling requirements (resource
                                request, requiredDuringScheduling anti-affinity expressions, etc.),
                                compute a sum by iterating through the elements of this field and adding
                                "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the
                                node(s) with the highest sum are the most preferred.
                              items:
                                description: The weights of all of the matched WeightedPodAffinityTerm
                                  fields are added per-node to find the most preferred
                                  node(s)
                                properties:
                                  podAffinityTerm:
                                    description: Required. A pod affinity term, associated
                                      with the corresponding weight.
                                    properties:
                                      labelSelector:
                                        description: |-
                                          A label query over a set of resources, in this case pods.
                                          If it's null, this PodAffinityTerm matches with no Pods.
                                        properties:
                                          matchExpressions:
                                            description: matchExpressions is a list
                                              of label selector requirements. The
                                              requirements are ANDed.
                                            items:
                                              description: |-
                                                A label selector requirement is a selector that contains values, a key, and an operator that
                                                relates the key and values.
                                              properties:
                                                key:
                                                  description: key is the label key
                                                    that the selector applies to.
                                                  type: string
                                                operator:
                                                  description: |-
                                                    operator represents a key's relationship to a set of values.
                                                    Valid operators are In, NotIn, Exists and DoesNotExist.
                                                  type: string
                                                values:
                                                  description: |-
                                                    values is an array of string values. If the operator is In or NotIn,
                                                    the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                    the values array must be empty. This array is replaced during a strategic
                                                    merge patch.
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                              - key
                                              - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            description: |-
                                              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                              map is equivalent to an element of matchExpressions, whose key field is "key", the
                                              operator is "In", and the values array contains only "value". The requirements are ANDed.
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      matchLabelKeys:
                                        description: |-
                                          MatchLabelKeys is a set of pod label keys to select which pods will
                                          be taken into consideration. The keys are used to lookup values from the
                                          incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                          to select the group of existing pods which pods will be taken into consideration
                                          for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                          pod labels will be ignored. The default value is empty.
                                          The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                          Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      mismatchLabelKeys:
                                        description: |-
                                          MismatchLabelKeys is a set of pod label keys to select which pods will
                                          be taken into consideration. The keys are used to lookup values from the
                                          incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                          to select the group of existing pods which pods will be taken into consideration
                                          for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                          pod labels will be ignored. The default value is empty.
                                          The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                          Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      namespaceSelector:
                                        description: |-
                                          A label query over the set of namespaces that the term applies to.
                                          The term is applied to the union of the namespaces selected by this field
                                          and the ones listed in the namespaces field.
                                          null selector and null or empty namespaces list means "this pod's namespace".
                                          An empty selector ({}) matches all namespaces.
                                        properties:
                                          matchExpressions:
                                            description: matchExpressions is a list
                                              of label selector requirements. The
                                              requirements are ANDed.
                                            items:
                                              description: |-
                                                A label selector requirement is a selector that contains values, a key, and an operator that
                                                relates the key and values.
                                              properties:
                                                key:
                                                  description: key is the label key
                                                    that the selector applies to.
                                                  type: string
                                                operator:
                                                  description: |-
                                                    operator represents a key's relationship to a set of values.
                                                    Valid operators are In, NotIn, Exists and DoesNotExist.
                                                  type: string
                                                values:
                                                  description: |-
                                                    values is an array of string values. If the operator is In or NotIn,
                                                    the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                    the values array must be empty. This array is replaced during a strategic
                                                    merge patch.
                                                  items:
                                                    type: string
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                              required:
                                              - key
                                              - operator
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            description: |-
                                              matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                              map is equivalent to an element of matchExpressions, whose key field is "key", the
                                              operator is "In", and the values array contains only "value". The requirements are ANDed.
                                            type: object
                                        type: object
                                        x-kubernetes-map-type: atomic
                                      namespaces:
                                        description: |-
                                          namespaces specifies a static list of namespace names that the term applies to.
                                          The term is applied to the union of the namespaces listed in this field
                                          and the ones selected by namespaceSelector.
                                          null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      topologyKey:
                                        description: |-
                                          This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                          the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                          whose value of the label with key topologyKey matches that of any node on which any of the
                                          selected pods is running.
                                          Empty topologyKey is not allowed.
                                        type: string
                                    required:
                                    - topologyKey
                                    type: object
                                  weight:
                                    description: |-
                                      weight associated with matching the corresponding podAffinityTerm,
                                      in the range 1-100.
                                    format: int32
                                    type: integer
                                required:
                                - podAffinityTerm
                                - weight
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            requiredDuringSchedulingIgnoredDuringExecution:
                              description: |-
                                If the anti-affinity requirements specified by this field are not met at
                                scheduling time, the pod will not be scheduled onto the node.
                                If the anti-affinity requirements specified by this field cease to be met
                                at some point during pod execution (e.g. due to a pod label update), the
                                system may or may not try to eventually evict the pod from its node.
                                When there are multiple elements, the lists of nodes corresponding to each
                                podAffinityTerm are intersected, i.e. all terms must be satisfied.
                              items:
                                description: |-
                                  Defines a set of pods (namely those matching the labelSelector
                                  relative to the given namespace(s)) that this pod should be
                                  co-located (affinity) or not co-located (anti-affinity) with,
                                  where co-located is defined as running on a node whose value of
                                  the label with key <topologyKey> matches that of any node on which
                                  a pod of the set of pods is running
                                properties:
                                  labelSelector:
                                    description: |-
                                      A label query over a set of resources, in this case pods.
                                      If it's null, this PodAffinityTerm matches with no Pods.
                                    properties:
                                      matchExpressions:
                                        description: matchExpressions is a list of
                                          label selector requirements. The requirements
                                          are ANDed.
                                        items:
                                          description: |-
                                            A label selector requirement is a selector that contains values, a key, and an operator that
                                            relates the key and values.
                                          properties:
                                            key:
                                              description: key is the label key that
                                                the selector applies to.
                                              type: string
                                            operator:
                                              description: |-
                                                operator represents a key's relationship to a set of values.
                                                Valid operators are In, NotIn, Exists and DoesNotExist.
                                              type: string
                                            values:
                                              description: |-
                                                values is an array of string values. If the operator is In or NotIn,
                                                the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                the values array must be empty. This array is replaced during a strategic
                                                merge patch.
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        description: |-
                                          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                          map is equivalent to an element of matchExpressions, whose key field is "key", the
                                          operator is "In", and the values array contains only "value". The requirements are ANDed.
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    description: |-
                                      MatchLabelKeys is a set of pod label keys to select which pods will
                                      be taken into consideration. The keys are used to lookup values from the
                                      incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`
                                      to select the group of existing pods which pods will be taken into consideration
                                      for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                      pod labels will be ignored. The default value is empty.
                                      The same key is forbidden to exist in both matchLabelKeys and labelSelector.
                                      Also, matchLabelKeys cannot be set when labelSelector isn't set.
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    description: |-
                                      MismatchLabelKeys is a set of pod label keys to select which pods will
                                      be taken into consideration. The keys are used to lookup values from the
                                      incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`
                                      to select the group of existing pods which pods will be taken into consideration
                                      for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming
                                      pod labels will be ignored. The default value is empty.
                                      The same key is forbidden to exist in both mismatchLabelKeys and labelSelector.
                                      Also, mismatchLabelKeys cannot be set when labelSelector isn't set.
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    description: |-
                                      A label query over the set of namespaces that the term applies to.
                                      The term is applied to the union of the namespaces selected by this field
                                      and the ones listed in the namespaces field.
                                      null selector and null or empty namespaces list means "this pod's namespace".
                                      An empty selector ({}) matches all namespaces.
                                    properties:
                                      matchExpressions:
                                        description: matchExpressions is a list of
                                          label selector requirements. The requirements
                                          are ANDed.
                                        items:
                                          description: |-
                                            A label selector requirement is a selector that contains values, a key, and an operator that
                                            relates the key and values.
                                          properties:
                                            key:
                                              description: key is the label key that
                                                the selector applies to.
                                              type: string
                                            operator:
                                              description: |-
                                                operator represents a key's relationship to a set of values.
                                                Valid operators are In, NotIn, Exists and DoesNotExist.
                                              type: string
                                            values:
                                              description: |-
                                                values is an array of string values. If the operator is In or NotIn,
                                                the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                the values array must be empty. This array is replaced during a strategic
                                                merge patch.
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        description: |-
                                          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                          map is equivalent to an element of matchExpressions, whose key field is "key", the
                                          operator is "In", and the values array contains only "value". The requirements are ANDed.
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    description: |-
                                      namespaces specifies a static list of namespace names that the term applies to.
                                      The term is applied to the union of the namespaces listed in this field
                                      and the ones selected by namespaceSelector.
                                      null or empty namespaces list and null namespaceSelector means "this pod's namespace".
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    description: |-
                                      This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
                                      the labelSelector in the specified namespaces, where co-located is defined as running on a node
                                      whose value of the label with key topologyKey matches that of any node on which any of the
                                      selected pods is running.
                                      Empty topologyKey is not allowed.
                                    type: string
                                required:
                                - topologyKey
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                          type: object
                      type: object
                    annotations:
                      additionalProperties:
                        type: string
                      description: Annotations is a list of annotations to add to
                        the template at runtime
                      type: object
                    archiveLocation:
                      description: |-
                        Location in which all files related to the step will be stored (logs, artifacts, etc...).
                        Can be overridden by individual items in Outputs. If omitted, will use the default
                        artifact repository location configured in the controller, appended with the
                        <workflowname>/<nodename> in the key.
                      properties:
                        archiveLogs:
                          description: ArchiveLogs indicates if the container logs
                            should be archived
                          type: boolean
                        artifactory:
                          description: Artifactory contains artifactory artifact location
                            details
                          properties:
                            passwordSecret:
                              description: PasswordSecret is the secret selector to
                                the repository password
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            url:
                              description: URL of the artifact
                              type: string
                            usernameSecret:
                              description: UsernameSecret is the secret selector to
                                the repository username
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                          required:
                          - url
                          type: object
                        azure:
                          description: Azure contains Azure Storage artifact location
                            details
                          properties:
                            accountKeySecret:
                              description: AccountKeySecret is the secret selector
                                to the Azure Blob Storage account access key
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            blob:
                              description: Blob is the blob name (i.e., path) in the
                                container where the artifact resides
                              type: string
                            container:
                              description: Container is the container where resources
                                will be stored
                              type: string
                            endpoint:
                              description: Endpoint is the service url associated
                                with an account. It is most likely "https://<ACCOUNT_NAME>.blob.core.windows.net"
                              type: string
                            useSDKCreds:
                              description: UseSDKCreds tells the driver to figure
                                out credentials based on sdk defaults.
                              type: boolean
                          required:
                          - blob
                          - container
                          - endpoint
                          type: object
                        gcs:
                          description: GCS contains GCS artifact location details
                          properties:
                            bucket:
                              description: Bucket is the name of the bucket
                              type: string
                            key:
                              description: Key is the path in the bucket where the
                                artifact resides
                              type: string
                            serviceAccountKeySecret:
                              description: ServiceAccountKeySecret is the secret selector
                                to the bucket's service account key
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                          required:
                          - key
                          type: object
                        git:
                          description: Git contains git artifact location details
                          properties:
                            branch:
                              description: Branch is the branch to fetch when `SingleBranch`
                                is enabled
                              type: string
                            depth:
                              description: |-
                                Depth specifies clones/fetches should be shallow and include the given
                                number of commits from the branch tip
                              format: int64
                              type: integer
                            disableSubmodules:
                              description: DisableSubmodules disables submodules during
                                git clone
                              type: boolean
                            fetch:
                              description: Fetch specifies a number of refs that should
                                be fetched before checkout
                              items:
                                type: string
                              type: array
                            insecureIgnoreHostKey:
                              description: InsecureIgnoreHostKey disables SSH strict
                                host key checking during git clone
                              type: boolean
                            insecureSkipTLS:
                              description: InsecureSkipTLS disables server certificate
                                verification resulting in insecure HTTPS connections
                              type: boolean
                            passwordSecret:
                              description: PasswordSecret is the secret selector to
                                the repository password
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            repo:
                              description: Repo is the git repository
                              type: string
                            revision:
                              description: Revision is the git commit, tag, branch
                                to checkout
                              type: string
                            singleBranch:
                              description: SingleBranch enables single branch clone,
                                using the `branch` parameter
                              type: boolean
                            sshPrivateKeySecret:
                              description: SSHPrivateKeySecret is the secret selector
                                to the repository ssh private key
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            usernameSecret:
                              description: UsernameSecret is the secret selector to
                                the repository username
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                          required:
                          - repo
                          type: object
                        hdfs:
                          description: HDFS contains HDFS artifact location details
                          properties:
                            addresses:
                              description: Addresses is accessible addresses of HDFS
                                name nodes
                              items:
                                type: string
                              type: array
                            dataTransferProtection:
                              description: |-
                                DataTransferProtection is the protection level for HDFS data transfer.
                                It corresponds to the dfs.data.transfer.protection configuration in HDFS.
                              type: string
                            force:
                              description: Force copies a file forcibly even if it
                                exists
                              type: boolean
                            hdfsUser:
                              description: |-
                                HDFSUser is the user to access HDFS file system.
                                It is ignored if either ccache or keytab is used.
                              type: string
                            krbCCacheSecret:
                              description: |-
                                KrbCCacheSecret is the secret selector for Kerberos ccache
                                Either ccache or keytab can be set to use Kerberos.
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            krbConfigConfigMap:
                              description: |-
                                KrbConfig is the configmap selector for Kerberos config as string
                                It must be set if either ccache or keytab is used.
                              properties:
                                key:
                                  description: The key to select.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the ConfigMap or its
                                    key must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            krbKeytabSecret:
                              description: |-
                                KrbKeytabSecret is the secret selector for Kerberos keytab
                                Either ccache or keytab can be set to use Kerberos.
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            krbRealm:
                              description: |-
                                KrbRealm is the Kerberos realm used with Kerberos keytab
                                It must be set if keytab is used.
                              type: string
                            krbServicePrincipalName:
                              description: |-
                                KrbServicePrincipalName is the principal name of Kerberos service
                                It must be set if either ccache or keytab is used.
                              type: string
                            krbUsername:
                              description: |-
                                KrbUsername is the Kerberos username used with Kerberos keytab
                                It must be set if keytab is used.
                              type: string
                            path:
                              description: Path is a file path in HDFS
                              type: string
                          required:
                          - path
                          type: object
                        http:
                          description: HTTP contains HTTP artifact location details
                          properties:
                            auth:
                              description: Auth contains information for client authentication
                              properties:
                                basicAuth:
                                  description: BasicAuth describes the secret selectors
                                    required for basic authentication
                                  properties:
                                    passwordSecret:
                                      description: PasswordSecret is the secret selector
                                        to the repository password
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    usernameSecret:
                                      description: UsernameSecret is the secret selector
                                        to the repository username
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  type: object
                                clientCert:
                                  description: ClientCertAuth holds necessary information
                                    for client authentication via certificates
                                  properties:
                                    clientCertSecret:
                                      description: SecretKeySelector selects a key
                                        of a Secret.
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    clientKeySecret:
                                      description: SecretKeySelector selects a key
                                        of a Secret.
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  type: object
                                oauth2:
                                  description: OAuth2Auth holds all information for
                                    client authentication via OAuth2 tokens
                                  properties:
                                    clientIDSecret:
                                      description: SecretKeySelector selects a key
                                        of a Secret.
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    clientSecretSecret:
                                      description: SecretKeySelector selects a key
                                        of a Secret.
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    endpointParams:
                                      items:
                                        description: EndpointParam is for requesting
                                          optional fields that should be sent in the
                                          oauth request
                                        properties:
                                          key:
                                            description: Name is the header name
                                            type: string
                                          value:
                                            description: Value is the literal value
                                              to use for the header
                                            type: string
                                        required:
                                        - key
                                        type: object
                                      type: array
                                    scopes:
                                      items:
                                        type: string
                                      type: array
                                    tokenURLSecret:
                                      description: SecretKeySelector selects a key
                                        of a Secret.
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  type: object
                              type: object
                            headers:
                              description: Headers are an optional list of headers
                                to send with HTTP requests for artifacts
                              items:
                                description: Header indicate a key-value request header
                                  to be used when fetching artifacts over HTTP
                                properties:
                                  name:
                                    description: Name is the header name
                                    type: string
                                  value:
                                    description: Value is the literal value to use
                                      for the header
                                    type: string
                                required:
                                - name
                                - value
                                type: object
                              type: array
                            url:
                              description: URL of the artifact
                              type: string
                          required:
                          - url
                          type: object
                        oss:
                          description: OSS contains OSS artifact location details
                          properties:
                            accessKeySecret:
                              description: AccessKeySecret is the secret selector
                                to the bucket's access key
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            bucket:
                              description: Bucket is the name of the bucket
                              type: string
                            createBucketIfNotPresent:
                              description: CreateBucketIfNotPresent tells the driver
                                to attempt to create the OSS bucket for output artifacts,
                                if it doesn't exist
                              type: boolean
                            endpoint:
                              description: Endpoint is the hostname of the bucket
                                endpoint
                              type: string
                            key:
                              description: Key is the path in the bucket where the
                                artifact resides
                              type: string
                            lifecycleRule:
                              description: LifecycleRule specifies how to manage bucket's
                                lifecycle
                              properties:
                                markDeletionAfterDays:
                                  description: MarkDeletionAfterDays is the number
                                    of days before we delete objects in the bucket
                                  format: int32
                                  type: integer
                                markInfrequentAccessAfterDays:
                                  description: MarkInfrequentAccessAfterDays is the
                                    number of days before we convert the objects in
                                    the bucket to Infrequent Access (IA) storage type
                                  format: int32
                                  type: integer
                              type: object
                            secretKeySecret:
                              description: SecretKeySecret is the secret selector
                                to the bucket's secret key
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            securityToken:
                              description: 'SecurityToken is the user''s temporary
                                security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm'
                              type: string
                            useSDKCreds:
                              description: UseSDKCreds tells the driver to figure
                                out credentials based on sdk defaults.
                              type: boolean
                          required:
                          - key
                          type: object
                        plugin:
                          description: Plugin contains plugin artifact location details
                          properties:
                            configuration:
                              description: Configuration is the plugin defined configuration
                                for the artifact driver plugin
                              type: string
                            connectionTimeoutSeconds:
                              description: ConnectionTimeoutSeconds is the timeout
                                for the artifact driver connection, overriding the
                                driver's timeout
                              format: int32
                              type: integer
                            key:
                              description: Key is the path in the artifact repository
                                where the artifact resides
                              type: string
                            name:
                              description: Name is the name of the artifact driver
                                plugin
                              type: string
                          required:
                          - key
                          type: object
                        raw:
                          description: Raw contains raw artifact location details
                          properties:
                            data:
                              description: Data is the string contents of the artifact
                              type: string
                          required:
                          - data
                          type: object
                        s3:
                          description: S3 contains S3 artifact location details
                          properties:
                            accessKeySecret:
                              description: AccessKeySecret is the secret selector
                                to the bucket's access key
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            bucket:
                              description: Bucket is the name of the bucket
                              type: string
                            caSecret:
                              description: CASecret specifies the secret that contains
                                the CA, used to verify the TLS connection
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            createBucketIfNotPresent:
                              description: CreateBucketIfNotPresent tells the driver
                                to attempt to create the S3 bucket for output artifacts,
                                if it doesn't exist. Setting Enabled Encryption will
                                apply either SSE-S3 to the bucket if KmsKeyId is not
                                set or SSE-KMS if it is.
                              properties:
                                objectLocking:
                                  description: ObjectLocking Enable object locking
                                  type: boolean
                              type: object
                            encryptionOptions:
                              description: S3EncryptionOptions used to determine encryption
                                options during s3 operations
                              properties:
                                enableEncryption:
                                  description: EnableEncryption tells the driver to
                                    encrypt objects if set to true. If kmsKeyId and
                                    serverSideCustomerKeySecret are not set, SSE-S3
                                    will be used
                                  type: boolean
                                kmsEncryptionContext:
                                  description: KmsEncryptionContext is a json blob
                                    that contains an encryption context. See https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
                                    for more information
                                  type: string
                                kmsKeyId:
                                  description: KMSKeyId tells the driver to encrypt
                                    the object using the specified KMS Key.
                                  type: string
                                serverSideCustomerKeySecret:
                                  description: ServerSideCustomerKeySecret tells the
                                    driver to encrypt the output artifacts using SSE-C
                                    with the specified secret.
                                  properties:
                                    key:
                                      description: The key of the secret to select
                                        from.  Must be a valid secret key.
                                      type: string
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                    optional:
                                      description: Specify whether the Secret or its
                                        key must be defined
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                              type: object
                            endpoint:
                              description: Endpoint is the hostname of the bucket
                                endpoint
                              type: string
                            insecure:
                              description: Insecure will connect to the service with
                                TLS
                              type: boolean
                            key:
                              description: Key is the key in the bucket where the
                                artifact resides
                              type: string
                            region:
                              description: Region contains the optional bucket region
                              type: string
                            roleARN:
                              description: RoleARN is the Amazon Resource Name (ARN)
                                of the role to assume.
                              type: string
                            secretKeySecret:
                              description: SecretKeySecret is the secret selector
                                to the bucket's secret key
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            sessionTokenSecret:
                              description: SessionTokenSecret is used for ephemeral
                                credentials like an IAM assume role or S3 access grant
                              properties:
                                key:
                                  description: The key of the secret to select from.  Must
                                    be a valid secret key.
                                  type: string
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                                optional:
                                  description: Specify whether the Secret or its key
                                    must be defined
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            useSDKCreds:
                              description: UseSDKCreds tells the driver to figure
                                out credentials based on sdk defaults.
                              type: boolean
                          type: object
                      type: object
                      x-kubernetes-validations:
                      - message: at most one artifact location can be specified
                        rule: '(has(self.s3) ? 1 : 0) + (has(self.git) ? 1 : 0) +
                          (has(self.http) ? 1 : 0) + (has(self.artifactory) ? 1 :
                          0) + (has(self.hdfs) ? 1 : 0) + (has(self.raw) ? 1 : 0)
                          + (has(self.oss) ? 1 : 0) + (has(self.gcs) ? 1 : 0) + (has(self.azure)
                          ? 1 : 0) + (has(self.plugin) ? 1 : 0) <= 1'
                    automountServiceAccountToken:
                      description: |-
                        AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in pods.
                        ServiceAccountName of ExecutorConfig must be specified if this value is false.
                      type: boolean
                    container:
                      description: Container is the main container image to run in
                        the pod
                      properties:
                        args:
                          description: |-
                            Arguments to the entrypoint.
                            The container image's CMD is used if this is not provided.
                            Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
                            cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
                            to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
                            produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
                            of whether the variable exists or not. Cannot be updated.
                            More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        command:
                          description: |-
                            Entrypoint array. Not executed within a shell.
                            The container image's ENTRYPOINT is used if this is not provided.
                            Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
                            cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
                            to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
                            produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
                            of whether the variable exists or not. Cannot be updated.
                            More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        env:
                          description: |-
                            List of environment variables to set in the container.
                            Cannot be updated.
                          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 previously 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. Double $$ are reduced
                                  to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
                                  "$$(VAR_NAME)" will produce the string literal "$(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:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the ConfigMap
                                          or its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  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
                                    x-kubernetes-map-type: atomic
                                  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
                                    x-kubernetes-map-type: atomic
                                  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:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                type: object
                            required:
                            - name
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - name
                          x-kubernetes-list-type: map
                        envFrom:
                          description: |-
                            List of sources to populate environment variables in the container.
                            The keys defined within a source must be a C_IDENTIFIER. All invalid keys
                            will be reported as an event when the container is starting. When a key exists in multiple
                            sources, the value associated with the last source will take precedence.
                            Values defined by an Env with a duplicate key will take precedence.
                            Cannot be updated.
                          items:
                            description: EnvFromSource represents the source of a
                              set of ConfigMaps or Secrets
                            properties:
                              configMapRef:
                                description: The ConfigMap to select from
                                properties:
                                  name:
                                    default: ""
                                    description: |-
                                      Name of the referent.
                                      This field is effectively required, but due to backwards compatibility is
                                      allowed to be empty. Instances of this type with an empty value here are
                                      almost certainly wrong.
                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    type: string
                                  optional:
                                    description: Specify whether the ConfigMap must
                                      be defined
                                    type: boolean
                                type: object
                                x-kubernetes-map-type: atomic
                              prefix:
                                description: Optional text to prepend to the name
                                  of each environment variable. Must be a C_IDENTIFIER.
                                type: string
                              secretRef:
                                description: The Secret to select from
                                properties:
                                  name:
                                    default: ""
                                    description: |-
                                      Name of the referent.
                                      This field is effectively required, but due to backwards compatibility is
                                      allowed to be empty. Instances of this type with an empty value here are
                                      almost certainly wrong.
                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    type: string
                                  optional:
                                    description: Specify whether the Secret must be
                                      defined
                                    type: boolean
                                type: object
                                x-kubernetes-map-type: atomic
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        image:
                          description: |-
                            Container image name.
                            More info: https://kubernetes.io/docs/concepts/containers/images
                            This field is optional to allow higher level config management to default or override
                            container images in workload controllers like Deployments and StatefulSets.
                          type: string
                        imagePullPolicy:
                          description: |-
                            Image pull policy.
                            One of Always, Never, IfNotPresent.
                            Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
                            Cannot be updated.
                            More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
                          type: string
                        lifecycle:
                          description: |-
                            Actions that the management system should take in response to container lifecycle events.
                            Cannot be updated.
                          properties:
                            postStart:
                              description: |-
                                PostStart is called immediately after a container is created. If the handler fails,
                                the container is terminated and restarted according to its restart policy.
                                Other management of the container blocks until the hook completes.
                                More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
                              properties:
                                exec:
                                  description: Exec specifies a command to execute
                                    in the container.
                                  properties:
                                    command:
                                      description: |-
                                        Command is the command line to execute inside the container, the working directory for the
                                        command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                        not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                        a shell, you need to explicitly call out to that shell.
                                        Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                httpGet:
                                  description: HTTPGet specifies an HTTP GET request
                                    to perform.
                                  properties:
                                    host:
                                      description: |-
                                        Host name to connect to, defaults to the pod IP. You probably want to set
                                        "Host" in httpHeaders instead.
                                      type: string
                                    httpHeaders:
                                      description: Custom headers to set in the request.
                                        HTTP allows repeated headers.
                                      items:
                                        description: HTTPHeader describes a custom
                                          header to be used in HTTP probes
                                        properties:
                                          name:
                                            description: |-
                                              The header field name.
                                              This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                            type: string
                                          value:
                                            description: The header field value
                                            type: string
                                        required:
                                        - name
                                        - value
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    path:
                                      description: Path to access on the HTTP server.
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      description: |-
                                        Name or number of the port to access on the container.
                                        Number must be in the range 1 to 65535.
                                        Name must be an IANA_SVC_NAME.
                                      x-kubernetes-int-or-string: true
                                    scheme:
                                      description: |-
                                        Scheme to use for connecting to the host.
                                        Defaults to HTTP.
                                      type: string
                                  required:
                                  - port
                                  type: object
                                sleep:
                                  description: Sleep represents a duration that the
                                    container should sleep.
                                  properties:
                                    seconds:
                                      description: Seconds is the number of seconds
                                        to sleep.
                                      format: int64
                                      type: integer
                                  required:
                                  - seconds
                                  type: object
                                tcpSocket:
                                  description: |-
                                    Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
                                    for backward compatibility. There is no validation of this field and
                                    lifecycle hooks will fail at runtime when it is specified.
                                  properties:
                                    host:
                                      description: 'Optional: Host name to connect
                                        to, defaults to the pod IP.'
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      description: |-
                                        Number or name of the port to access on the container.
                                        Number must be in the range 1 to 65535.
                                        Name must be an IANA_SVC_NAME.
                                      x-kubernetes-int-or-string: true
                                  required:
                                  - port
                                  type: object
                              type: object
                            preStop:
                              description: |-
                                PreStop is called immediately before a container is terminated due to an
                                API request or management event such as liveness/startup probe failure,
                                preemption, resource contention, etc. The handler is not called if the
                                container crashes or exits. The Pod's termination grace period countdown begins before the
                                PreStop hook is executed. Regardless of the outcome of the handler, the
                                container will eventually terminate within the Pod's termination grace
                                period (unless delayed by finalizers). Other management of the container blocks until the hook completes
                                or until the termination grace period is reached.
                                More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
                              properties:
                                exec:
                                  description: Exec specifies a command to execute
                                    in the container.
                                  properties:
                                    command:
                                      description: |-
                                        Command is the command line to execute inside the container, the working directory for the
                                        command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                        not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                        a shell, you need to explicitly call out to that shell.
                                        Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                httpGet:
                                  description: HTTPGet specifies an HTTP GET request
                                    to perform.
                                  properties:
                                    host:
                                      description: |-
                                        Host name to connect to, defaults to the pod IP. You probably want to set
                                        "Host" in httpHeaders instead.
                                      type: string
                                    httpHeaders:
                                      description: Custom headers to set in the request.
                                        HTTP allows repeated headers.
                                      items:
                                        description: HTTPHeader describes a custom
                                          header to be used in HTTP probes
                                        properties:
                                          name:
                                            description: |-
                                              The header field name.
                                              This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                            type: string
                                          value:
                                            description: The header field value
                                            type: string
                                        required:
                                        - name
                                        - value
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    path:
                                      description: Path to access on the HTTP server.
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      description: |-
                                        Name or number of the port to access on the container.
                                        Number must be in the range 1 to 65535.
                                        Name must be an IANA_SVC_NAME.
                                      x-kubernetes-int-or-string: true
                                    scheme:
                                      description: |-
                                        Scheme to use for connecting to the host.
                                        Defaults to HTTP.
                                      type: string
                                  required:
                                  - port
                                  type: object
                                sleep:
                                  description: Sleep represents a duration that the
                                    container should sleep.
                                  properties:
                                    seconds:
                                      description: Seconds is the number of seconds
                                        to sleep.
                                      format: int64
                                      type: integer
                                  required:
                                  - seconds
                                  type: object
                                tcpSocket:
                                  description: |-
                                    Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
                                    for backward compatibility. There is no validation of this field and
                                    lifecycle hooks will fail at runtime when it is specified.
                                  properties:
                                    host:
                                      description: 'Optional: Host name to connect
                                        to, defaults to the pod IP.'
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      description: |-
                                        Number or name of the port to access on the container.
                                        Number must be in the range 1 to 65535.
                                        Name must be an IANA_SVC_NAME.
                                      x-kubernetes-int-or-string: true
                                  required:
                                  - port
                                  type: object
                              type: object
                            stopSignal:
                              description: |-
                                StopSignal defines which signal will be sent to a container when it is being stopped.
                                If not specified, the default is defined by the container runtime in use.
                                StopSignal can only be set for Pods with a non-empty .spec.os.name
                              type: string
                          type: object
                        livenessProbe:
                          description: |-
                            Periodic probe of container liveness.
                            Container will be restarted if the probe fails.
                            Cannot be updated.
                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                          properties:
                            exec:
                              description: Exec specifies a command to execute in
                                the container.
                              properties:
                                command:
                                  description: |-
                                    Command is the command line to execute inside the container, the working directory for the
                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                    a shell, you need to explicitly call out to that shell.
                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              description: |-
                                Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                Defaults to 3. Minimum value is 1.
                              format: int32
                              type: integer
                            grpc:
                              description: GRPC specifies a GRPC HealthCheckRequest.
                              properties:
                                port:
                                  description: Port number of the gRPC service. Number
                                    must be in the range 1 to 65535.
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  description: |-
                                    Service is the name of the service to place in the gRPC HealthCheckRequest
                                    (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                    If this is not specified, the default behavior is defined by gRPC.
                                  type: string
                              required:
                              - port
                              type: object
                            httpGet:
                              description: HTTPGet specifies an HTTP GET request to
                                perform.
                              properties:
                                host:
                                  description: |-
                                    Host name to connect to, defaults to the pod IP. You probably want to set
                                    "Host" in httpHeaders instead.
                                  type: string
                                httpHeaders:
                                  description: Custom headers to set in the request.
                                    HTTP allows repeated headers.
                                  items:
                                    description: HTTPHeader describes a custom header
                                      to be used in HTTP probes
                                    properties:
                                      name:
                                        description: |-
                                          The header field name.
                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                        type: string
                                      value:
                                        description: The header field value
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  description: Path to access on the HTTP server.
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    Name or number of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  description: |-
                                    Scheme to use for connecting to the host.
                                    Defaults to HTTP.
                                  type: string
                              required:
                              - port
                              type: object
                            initialDelaySeconds:
                              description: |-
                                Number of seconds after the container has started before liveness probes are initiated.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                            periodSeconds:
                              description: |-
                                How often (in seconds) to perform the probe.
                                Default to 10 seconds. Minimum value is 1.
                              format: int32
                              type: integer
                            successThreshold:
                              description: |-
                                Minimum consecutive successes for the probe to be considered successful after having failed.
                                Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                              format: int32
                              type: integer
                            tcpSocket:
                              description: TCPSocket specifies a connection to a TCP
                                port.
                              properties:
                                host:
                                  description: 'Optional: Host name to connect to,
                                    defaults to the pod IP.'
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    Number or name of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                              required:
                              - port
                              type: object
                            terminationGracePeriodSeconds:
                              description: |-
                                Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
                                The grace period is the duration in seconds after the processes running in the pod are sent
                                a termination signal and the time when the processes are forcibly halted with a kill signal.
                                Set this value longer than the expected cleanup time for your process.
                                If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
                                value overrides the value provided by the pod spec.
                                Value must be non-negative integer. The value zero indicates stop immediately via
                                the kill signal (no opportunity to shut down).
                                This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
                                Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
                              format: int64
                              type: integer
                            timeoutSeconds:
                              description: |-
                                Number of seconds after which the probe times out.
                                Defaults to 1 second. Minimum value is 1.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                          type: object
                        name:
                          description: |-
                            Name of the container specified as a DNS_LABEL.
                            Each container in a pod must have a unique name (DNS_LABEL).
                            Cannot be updated.
                          type: string
                        ports:
                          description: |-
                            List of ports to expose from the container. Not specifying a port here
                            DOES NOT prevent that port from being exposed. Any port which is
                            listening on the default "0.0.0.0" address inside a container will be
                            accessible from the network.
                            Modifying this array with strategic merge patch may corrupt the data.
                            For more information See https://github.com/kubernetes/kubernetes/issues/108255.
                            Cannot be updated.
                          items:
                            description: ContainerPort represents a network port in
                              a single container.
                            properties:
                              containerPort:
                                description: |-
                                  Number of port to expose on the pod's IP address.
                                  This must be a valid port number, 0 < x < 65536.
                                format: int32
                                type: integer
                              hostIP:
                                description: What host IP to bind the external port
                                  to.
                                type: string
                              hostPort:
                                description: |-
                                  Number of port to expose on the host.
                                  If specified, this must be a valid port number, 0 < x < 65536.
                                  If HostNetwork is specified, this must match ContainerPort.
                                  Most containers do not need this.
                                format: int32
                                type: integer
                              name:
                                description: |-
                                  If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
                                  named port in a pod must have a unique name. Name for the port that can be
                                  referred to by services.
                                type: string
                              protocol:
                                default: TCP
                                description: |-
                                  Protocol for port. Must be UDP, TCP, or SCTP.
                                  Defaults to "TCP".
                                type: string
                            required:
                            - containerPort
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - containerPort
                          - protocol
                          x-kubernetes-list-type: map
                        readinessProbe:
                          description: |-
                            Periodic probe of container service readiness.
                            Container will be removed from service endpoints if the probe fails.
                            Cannot be updated.
                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                          properties:
                            exec:
                              description: Exec specifies a command to execute in
                                the container.
                              properties:
                                command:
                                  description: |-
                                    Command is the command line to execute inside the container, the working directory for the
                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                    a shell, you need to explicitly call out to that shell.
                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              description: |-
                                Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                Defaults to 3. Minimum value is 1.
                              format: int32
                              type: integer
                            grpc:
                              description: GRPC specifies a GRPC HealthCheckRequest.
                              properties:
                                port:
                                  description: Port number of the gRPC service. Number
                                    must be in the range 1 to 65535.
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  description: |-
                                    Service is the name of the service to place in the gRPC HealthCheckRequest
                                    (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                    If this is not specified, the default behavior is defined by gRPC.
                                  type: string
                              required:
                              - port
                              type: object
                            httpGet:
                              description: HTTPGet specifies an HTTP GET request to
                                perform.
                              properties:
                                host:
                                  description: |-
                                    Host name to connect to, defaults to the pod IP. You probably want to set
                                    "Host" in httpHeaders instead.
                                  type: string
                                httpHeaders:
                                  description: Custom headers to set in the request.
                                    HTTP allows repeated headers.
                                  items:
                                    description: HTTPHeader describes a custom header
                                      to be used in HTTP probes
                                    properties:
                                      name:
                                        description: |-
                                          The header field name.
                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                        type: string
                                      value:
                                        description: The header field value
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  description: Path to access on the HTTP server.
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    Name or number of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  description: |-
                                    Scheme to use for connecting to the host.
                                    Defaults to HTTP.
                                  type: string
                              required:
                              - port
                              type: object
                            initialDelaySeconds:
                              description: |-
                                Number of seconds after the container has started before liveness probes are initiated.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                            periodSeconds:
                              description: |-
                                How often (in seconds) to perform the probe.
                                Default to 10 seconds. Minimum value is 1.
                              format: int32
                              type: integer
                            successThreshold:
                              description: |-
                                Minimum consecutive successes for the probe to be considered successful after having failed.
                                Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                              format: int32
                              type: integer
                            tcpSocket:
                              description: TCPSocket specifies a connection to a TCP
                                port.
                              properties:
                                host:
                                  description: 'Optional: Host name to connect to,
                                    defaults to the pod IP.'
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    Number or name of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                              required:
                              - port
                              type: object
                            terminationGracePeriodSeconds:
                              description: |-
                                Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
                                The grace period is the duration in seconds after the processes running in the pod are sent
                                a termination signal and the time when the processes are forcibly halted with a kill signal.
                                Set this value longer than the expected cleanup time for your process.
                                If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
                                value overrides the value provided by the pod spec.
                                Value must be non-negative integer. The value zero indicates stop immediately via
                                the kill signal (no opportunity to shut down).
                                This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
                                Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
                              format: int64
                              type: integer
                            timeoutSeconds:
                              description: |-
                                Number of seconds after which the probe times out.
                                Defaults to 1 second. Minimum value is 1.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                          type: object
                        resizePolicy:
                          description: Resources resize policy for the container.
                          items:
                            description: ContainerResizePolicy represents resource
                              resize policy for the container.
                            properties:
                              resourceName:
                                description: |-
                                  Name of the resource to which this resource resize policy applies.
                                  Supported values: cpu, memory.
                                type: string
                              restartPolicy:
                                description: |-
                                  Restart policy to apply when specified resource is resized.
                                  If not specified, it defaults to NotRequired.
                                type: string
                            required:
                            - resourceName
                            - restartPolicy
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        resources:
                          description: |-
                            Compute Resources required by this container.
                            Cannot be updated.
                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                          properties:
                            claims:
                              description: |-
                                Claims lists the names of resources, defined in spec.resourceClaims,
                                that are used by this container.

                                This is an alpha field and requires enabling the
                                DynamicResourceAllocation feature gate.

                                This field is immutable. It can only be set for containers.
                              items:
                                description: ResourceClaim references one entry in
                                  PodSpec.ResourceClaims.
                                properties:
                                  name:
                                    description: |-
                                      Name must match the name of one entry in pod.spec.resourceClaims of
                                      the Pod where this field is used. It makes that resource available
                                      inside a container.
                                    type: string
                                  request:
                                    description: |-
                                      Request is the name chosen for a request in the referenced claim.
                                      If empty, everything from the claim is made available, otherwise
                                      only the result of this request.
                                    type: string
                                required:
                                - name
                                type: object
                              type: array
                              x-kubernetes-list-map-keys:
                              - name
                              x-kubernetes-list-type: map
                            limits:
                              additionalProperties:
                                anyOf:
                                - type: integer
                                - type: string
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                              description: |-
                                Limits describes the maximum amount of compute resources allowed.
                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                              type: object
                            requests:
                              additionalProperties:
                                anyOf:
                                - type: integer
                                - type: string
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                              description: |-
                                Requests describes the minimum amount of compute resources required.
                                If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                              type: object
                          type: object
                        restartPolicy:
                          description: |-
                            RestartPolicy defines the restart behavior of individual containers in a pod.
                            This field may only be set for init containers, and the only allowed value is "Always".
                            For non-init containers or when this field is not specified,
                            the restart behavior is defined by the Pod's restart policy and the container type.
                            Setting the RestartPolicy as "Always" for the init container will have the following effect:
                            this init container will be continually restarted on
                            exit until all regular containers have terminated. Once all regular
                            containers have completed, all init containers with restartPolicy "Always"
                            will be shut down. This lifecycle differs from normal init containers and
                            is often referred to as a "sidecar" container. Although this init
                            container still starts in the init container sequence, it does not wait
                            for the container to complete before proceeding to the next init
                            container. Instead, the next init container starts immediately after this
                            init container is started, or after any startupProbe has successfully
                            completed.
                          type: string
                        securityContext:
                          description: |-
                            SecurityContext defines the security options the container should be run with.
                            If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
                            More info: https://kubernetes.io/docs/tasks/configure-pod-container/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
                                Note that this field cannot be set when spec.os.name is windows.
                              type: boolean
                            appArmorProfile:
                              description: |-
                                appArmorProfile is the AppArmor options to use by this container. If set, this profile
                                overrides the pod's appArmorProfile.
                                Note that this field cannot be set when spec.os.name is windows.
                              properties:
                                localhostProfile:
                                  description: |-
                                    localhostProfile indicates a profile loaded on the node that should be used.
                                    The profile must be preconfigured on the node to work.
                                    Must match the loaded name of the profile.
                                    Must be set if and only if type is "Localhost".
                                  type: string
                                type:
                                  description: |-
                                    type indicates which kind of AppArmor profile will be applied.
                                    Valid options are:
                                      Localhost - a profile pre-loaded on the node.
                                      RuntimeDefault - the container runtime's default profile.
                                      Unconfined - no AppArmor enforcement.
                                  type: string
                              required:
                              - type
                              type: object
                            capabilities:
                              description: |-
                                The capabilities to add/drop when running containers.
                                Defaults to the default set of capabilities granted by the container runtime.
                                Note that this field cannot be set when spec.os.name is windows.
                              properties:
                                add:
                                  description: Added capabilities
                                  items:
                                    description: Capability represent POSIX capabilities
                                      type
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                drop:
                                  description: Removed capabilities
                                  items:
                                    description: Capability represent POSIX capabilities
                                      type
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            privileged:
                              description: |-
                                Run container in privileged mode.
                                Processes in privileged containers are essentially equivalent to root on the host.
                                Defaults to false.
                                Note that this field cannot be set when spec.os.name is windows.
                              type: boolean
                            procMount:
                              description: |-
                                procMount denotes the type of proc mount to use for the containers.
                                The default value is Default which uses the container runtime defaults for
                                readonly paths and masked paths.
                                This requires the ProcMountType feature flag to be enabled.
                                Note that this field cannot be set when spec.os.name is windows.
                              type: string
                            readOnlyRootFilesystem:
                              description: |-
                                Whether this container has a read-only root filesystem.
                                Default is false.
                                Note that this field cannot be set when spec.os.name is windows.
                              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.
                                Note that this field cannot be set when spec.os.name is windows.
                              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.
                                Note that this field cannot be set when spec.os.name is windows.
                              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.
                                Note that this field cannot be set when spec.os.name is windows.
                              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.
                                Note that this field cannot be set when spec.os.name is windows.
                              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 be set if type is "Localhost". Must NOT be set for any other type.
                                  type: string
                                type:
                                  description: |-
                                    type indicates which kind of seccomp profile will be applied.
                                    Valid options are:

                                    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.
                                Note that this field cannot be set when spec.os.name is linux.
                              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
                                hostProcess:
                                  description: |-
                                    HostProcess determines if a container should be run as a 'Host Process' container.
                                    All of a Pod's containers must have the same effective HostProcess value
                                    (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).
                                    In addition, if HostProcess is true then HostNetwork must also be set to true.
                                  type: boolean
                                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
                        startupProbe:
                          description: |-
                            StartupProbe indicates that the Pod has successfully initialized.
                            If specified, no other probes are executed until this completes successfully.
                            If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
                            This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
                            when it might take a long time to load data or warm a cache, than during steady-state operation.
                            This cannot be updated.
                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                          properties:
                            exec:
                              description: Exec specifies a command to execute in
                                the container.
                              properties:
                                command:
                                  description: |-
                                    Command is the command line to execute inside the container, the working directory for the
                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                    a shell, you need to explicitly call out to that shell.
                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              description: |-
                                Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                Defaults to 3. Minimum value is 1.
                              format: int32
                              type: integer
                            grpc:
                              description: GRPC specifies a GRPC HealthCheckRequest.
                              properties:
                                port:
                                  description: Port number of the gRPC service. Number
                                    must be in the range 1 to 65535.
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  description: |-
                                    Service is the name of the service to place in the gRPC HealthCheckRequest
                                    (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                    If this is not specified, the default behavior is defined by gRPC.
                                  type: string
                              required:
                              - port
                              type: object
                            httpGet:
                              description: HTTPGet specifies an HTTP GET request to
                                perform.
                              properties:
                                host:
                                  description: |-
                                    Host name to connect to, defaults to the pod IP. You probably want to set
                                    "Host" in httpHeaders instead.
                                  type: string
                                httpHeaders:
                                  description: Custom headers to set in the request.
                                    HTTP allows repeated headers.
                                  items:
                                    description: HTTPHeader describes a custom header
                                      to be used in HTTP probes
                                    properties:
                                      name:
                                        description: |-
                                          The header field name.
                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                        type: string
                                      value:
                                        description: The header field value
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  description: Path to access on the HTTP server.
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    Name or number of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  description: |-
                                    Scheme to use for connecting to the host.
                                    Defaults to HTTP.
                                  type: string
                              required:
                              - port
                              type: object
                            initialDelaySeconds:
                              description: |-
                                Number of seconds after the container has started before liveness probes are initiated.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                            periodSeconds:
                              description: |-
                                How often (in seconds) to perform the probe.
                                Default to 10 seconds. Minimum value is 1.
                              format: int32
                              type: integer
                            successThreshold:
                              description: |-
                                Minimum consecutive successes for the probe to be considered successful after having failed.
                                Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                              format: int32
                              type: integer
                            tcpSocket:
                              description: TCPSocket specifies a connection to a TCP
                                port.
                              properties:
                                host:
                                  description: 'Optional: Host name to connect to,
                                    defaults to the pod IP.'
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    Number or name of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                              required:
                              - port
                              type: object
                            terminationGracePeriodSeconds:
                              description: |-
                                Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
                                The grace period is the duration in seconds after the processes running in the pod are sent
                                a termination signal and the time when the processes are forcibly halted with a kill signal.
                                Set this value longer than the expected cleanup time for your process.
                                If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
                                value overrides the value provided by the pod spec.
                                Value must be non-negative integer. The value zero indicates stop immediately via
                                the kill signal (no opportunity to shut down).
                                This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
                                Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
                              format: int64
                              type: integer
                            timeoutSeconds:
                              description: |-
                                Number of seconds after which the probe times out.
                                Defaults to 1 second. Minimum value is 1.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                          type: object
                        stdin:
                          description: |-
                            Whether this container should allocate a buffer for stdin in the container runtime. If this
                            is not set, reads from stdin in the container will always result in EOF.
                            Default is false.
                          type: boolean
                        stdinOnce:
                          description: |-
                            Whether the container runtime should close the stdin channel after it has been opened by
                            a single attach. When stdin is true the stdin stream will remain open across multiple attach
                            sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
                            first client attaches to stdin, and then remains open and accepts data until the client disconnects,
                            at which time stdin is closed and remains closed until the container is restarted. If this
                            flag is false, a container processes that reads from stdin will never receive an EOF.
                            Default is false
                          type: boolean
                        terminationMessagePath:
                          description: |-
                            Optional: Path at which the file to which the container's termination message
                            will be written is mounted into the container's filesystem.
                            Message written is intended to be brief final status, such as an assertion failure message.
                            Will be truncated by the node if greater than 4096 bytes. The total message length across
                            all containers will be limited to 12kb.
                            Defaults to /dev/termination-log.
                            Cannot be updated.
                          type: string
                        terminationMessagePolicy:
                          description: |-
                            Indicate how the termination message should be populated. File will use the contents of
                            terminationMessagePath to populate the container status message on both success and failure.
                            FallbackToLogsOnError will use the last chunk of container log output if the termination
                            message file is empty and the container exited with an error.
                            The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
                            Defaults to File.
                            Cannot be updated.
                          type: string
                        tty:
                          description: |-
                            Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
                            Default is false.
                          type: boolean
                        volumeDevices:
                          description: volumeDevices is the list of block devices
                            to be used by the container.
                          items:
                            description: volumeDevice describes a mapping of a raw
                              block device within a container.
                            properties:
                              devicePath:
                                description: devicePath is the path inside of the
                                  container that the device will be mapped to.
                                type: string
                              name:
                                description: name must match the name of a persistentVolumeClaim
                                  in the pod
                                type: string
                            required:
                            - devicePath
                            - name
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - devicePath
                          x-kubernetes-list-type: map
                        volumeMounts:
                          description: |-
                            Pod volumes to mount into the container's filesystem.
                            Cannot be updated.
                          items:
                            description: VolumeMount describes a mounting of a Volume
                              within a container.
                            properties:
                              mountPath:
                                description: |-
                                  Path within the container at which the volume should be mounted.  Must
                                  not contain ':'.
                                type: string
                              mountPropagation:
                                description: |-
                                  mountPropagation determines how mounts are propagated from the host
                                  to container and the other way around.
                                  When not set, MountPropagationNone is used.
                                  This field is beta in 1.10.
                                  When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
                                  (which defaults to None).
                                type: string
                              name:
                                description: This must match the Name of a Volume.
                                type: string
                              readOnly:
                                description: |-
                                  Mounted read-only if true, read-write otherwise (false or unspecified).
                                  Defaults to false.
                                type: boolean
                              recursiveReadOnly:
                                description: |-
                                  RecursiveReadOnly specifies whether read-only mounts should be handled
                                  recursively.

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

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

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

                                  If this field is not specified, it is treated as an equivalent of Disabled.
                                type: string
                              subPath:
                                description: |-
                                  Path within the volume from which the container's volume should be mounted.
                                  Defaults to "" (volume's root).
                                type: string
                              subPathExpr:
                                description: |-
                                  Expanded path within the volume from which the container's volume should be mounted.
                                  Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
                                  Defaults to "" (volume's root).
                                  SubPathExpr and SubPath are mutually exclusive.
                                type: string
                            required:
                            - mountPath
                            - name
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - mountPath
                          x-kubernetes-list-type: map
                        workingDir:
                          description: |-
                            Container's working directory.
                            If not specified, the container runtime's default will be used, which
                            might be configured in the container image.
                            Cannot be updated.
                          type: string
                      type: object
                    containerSet:
                      description: ContainerSet groups multiple containers within
                        a single pod.
                      properties:
                        containers:
                          items:
                            properties:
                              args:
                                description: |-
                                  Arguments to the entrypoint.
                                  The container image's CMD is used if this is not provided.
                                  Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
                                  cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
                                  to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
                                  produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
                                  of whether the variable exists or not. Cannot be updated.
                                  More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              command:
                                description: |-
                                  Entrypoint array. Not executed within a shell.
                                  The container image's ENTRYPOINT is used if this is not provided.
                                  Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
                                  cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
                                  to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
                                  produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
                                  of whether the variable exists or not. Cannot be updated.
                                  More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              dependencies:
                                items:
                                  type: string
                                type: array
                              env:
                                description: |-
                                  List of environment variables to set in the container.
                                  Cannot be updated.
                                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 previously 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. Double $$ are reduced
                                        to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
                                        "$$(VAR_NAME)" will produce the string literal "$(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:
                                              default: ""
                                              description: |-
                                                Name of the referent.
                                                This field is effectively required, but due to backwards compatibility is
                                                allowed to be empty. Instances of this type with an empty value here are
                                                almost certainly wrong.
                                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                              type: string
                                            optional:
                                              description: Specify whether the ConfigMap
                                                or its key must be defined
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        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
                                          x-kubernetes-map-type: atomic
                                        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
                                          x-kubernetes-map-type: atomic
                                        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:
                                              default: ""
                                              description: |-
                                                Name of the referent.
                                                This field is effectively required, but due to backwards compatibility is
                                                allowed to be empty. Instances of this type with an empty value here are
                                                almost certainly wrong.
                                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                              type: string
                                            optional:
                                              description: Specify whether the Secret
                                                or its key must be defined
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                      type: object
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              envFrom:
                                description: |-
                                  List of sources to populate environment variables in the container.
                                  The keys defined within a source must be a C_IDENTIFIER. All invalid keys
                                  will be reported as an event when the container is starting. When a key exists in multiple
                                  sources, the value associated with the last source will take precedence.
                                  Values defined by an Env with a duplicate key will take precedence.
                                  Cannot be updated.
                                items:
                                  description: EnvFromSource represents the source
                                    of a set of ConfigMaps or Secrets
                                  properties:
                                    configMapRef:
                                      description: The ConfigMap to select from
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the ConfigMap
                                            must be defined
                                          type: boolean
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    prefix:
                                      description: Optional text to prepend to the
                                        name of each environment variable. Must be
                                        a C_IDENTIFIER.
                                      type: string
                                    secretRef:
                                      description: The Secret to select from
                                      properties:
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            must be defined
                                          type: boolean
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              image:
                                description: |-
                                  Container image name.
                                  More info: https://kubernetes.io/docs/concepts/containers/images
                                  This field is optional to allow higher level config management to default or override
                                  container images in workload controllers like Deployments and StatefulSets.
                                type: string
                              imagePullPolicy:
                                description: |-
                                  Image pull policy.
                                  One of Always, Never, IfNotPresent.
                                  Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
                                  Cannot be updated.
                                  More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
                                type: string
                              lifecycle:
                                description: |-
                                  Actions that the management system should take in response to container lifecycle events.
                                  Cannot be updated.
                                properties:
                                  postStart:
                                    description: |-
                                      PostStart is called immediately after a container is created. If the handler fails,
                                      the container is terminated and restarted according to its restart policy.
                                      Other management of the container blocks until the hook completes.
                                      More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
                                    properties:
                                      exec:
                                        description: Exec specifies a command to execute
                                          in the container.
                                        properties:
                                          command:
                                            description: |-
                                              Command is the command line to execute inside the container, the working directory for the
                                              command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                              not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                              a shell, you need to explicitly call out to that shell.
                                              Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        type: object
                                      httpGet:
                                        description: HTTPGet specifies an HTTP GET
                                          request to perform.
                                        properties:
                                          host:
                                            description: |-
                                              Host name to connect to, defaults to the pod IP. You probably want to set
                                              "Host" in httpHeaders instead.
                                            type: string
                                          httpHeaders:
                                            description: Custom headers to set in
                                              the request. HTTP allows repeated headers.
                                            items:
                                              description: HTTPHeader describes a
                                                custom header to be used in HTTP probes
                                              properties:
                                                name:
                                                  description: |-
                                                    The header field name.
                                                    This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                                  type: string
                                                value:
                                                  description: The header field value
                                                  type: string
                                              required:
                                              - name
                                              - value
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          path:
                                            description: Path to access on the HTTP
                                              server.
                                            type: string
                                          port:
                                            anyOf:
                                            - type: integer
                                            - type: string
                                            description: |-
                                              Name or number of the port to access on the container.
                                              Number must be in the range 1 to 65535.
                                              Name must be an IANA_SVC_NAME.
                                            x-kubernetes-int-or-string: true
                                          scheme:
                                            description: |-
                                              Scheme to use for connecting to the host.
                                              Defaults to HTTP.
                                            type: string
                                        required:
                                        - port
                                        type: object
                                      sleep:
                                        description: Sleep represents a duration that
                                          the container should sleep.
                                        properties:
                                          seconds:
                                            description: Seconds is the number of
                                              seconds to sleep.
                                            format: int64
                                            type: integer
                                        required:
                                        - seconds
                                        type: object
                                      tcpSocket:
                                        description: |-
                                          Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
                                          for backward compatibility. There is no validation of this field and
                                          lifecycle hooks will fail at runtime when it is specified.
                                        properties:
                                          host:
                                            description: 'Optional: Host name to connect
                                              to, defaults to the pod IP.'
                                            type: string
                                          port:
                                            anyOf:
                                            - type: integer
                                            - type: string
                                            description: |-
                                              Number or name of the port to access on the container.
                                              Number must be in the range 1 to 65535.
                                              Name must be an IANA_SVC_NAME.
                                            x-kubernetes-int-or-string: true
                                        required:
                                        - port
                                        type: object
                                    type: object
                                  preStop:
                                    description: |-
                                      PreStop is called immediately before a container is terminated due to an
                                      API request or management event such as liveness/startup probe failure,
                                      preemption, resource contention, etc. The handler is not called if the
                                      container crashes or exits. The Pod's termination grace period countdown begins before the
                                      PreStop hook is executed. Regardless of the outcome of the handler, the
                                      container will eventually terminate within the Pod's termination grace
                                      period (unless delayed by finalizers). Other management of the container blocks until the hook completes
                                      or until the termination grace period is reached.
                                      More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
                                    properties:
                                      exec:
                                        description: Exec specifies a command to execute
                                          in the container.
                                        properties:
                                          command:
                                            description: |-
                                              Command is the command line to execute inside the container, the working directory for the
                                              command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                              not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                              a shell, you need to explicitly call out to that shell.
                                              Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        type: object
                                      httpGet:
                                        description: HTTPGet specifies an HTTP GET
                                          request to perform.
                                        properties:
                                          host:
                                            description: |-
                                              Host name to connect to, defaults to the pod IP. You probably want to set
                                              "Host" in httpHeaders instead.
                                            type: string
                                          httpHeaders:
                                            description: Custom headers to set in
                                              the request. HTTP allows repeated headers.
                                            items:
                                              description: HTTPHeader describes a
                                                custom header to be used in HTTP probes
                                              properties:
                                                name:
                                                  description: |-
                                                    The header field name.
                                                    This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                                  type: string
                                                value:
                                                  description: The header field value
                                                  type: string
                                              required:
                                              - name
                                              - value
                                              type: object
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          path:
                                            description: Path to access on the HTTP
                                              server.
                                            type: string
                                          port:
                                            anyOf:
                                            - type: integer
                                            - type: string
                                            description: |-
                                              Name or number of the port to access on the container.
                                              Number must be in the range 1 to 65535.
                                              Name must be an IANA_SVC_NAME.
                                            x-kubernetes-int-or-string: true
                                          scheme:
                                            description: |-
                                              Scheme to use for connecting to the host.
                                              Defaults to HTTP.
                                            type: string
                                        required:
                                        - port
                                        type: object
                                      sleep:
                                        description: Sleep represents a duration that
                                          the container should sleep.
                                        properties:
                                          seconds:
                                            description: Seconds is the number of
                                              seconds to sleep.
                                            format: int64
                                            type: integer
                                        required:
                                        - seconds
                                        type: object
                                      tcpSocket:
                                        description: |-
                                          Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
                                          for backward compatibility. There is no validation of this field and
                                          lifecycle hooks will fail at runtime when it is specified.
                                        properties:
                                          host:
                                            description: 'Optional: Host name to connect
                                              to, defaults to the pod IP.'
                                            type: string
                                          port:
                                            anyOf:
                                            - type: integer
                                            - type: string
                                            description: |-
                                              Number or name of the port to access on the container.
                                              Number must be in the range 1 to 65535.
                                              Name must be an IANA_SVC_NAME.
                                            x-kubernetes-int-or-string: true
                                        required:
                                        - port
                                        type: object
                                    type: object
                                  stopSignal:
                                    description: |-
                                      StopSignal defines which signal will be sent to a container when it is being stopped.
                                      If not specified, the default is defined by the container runtime in use.
                                      StopSignal can only be set for Pods with a non-empty .spec.os.name
                                    type: string
                                type: object
                              livenessProbe:
                                description: |-
                                  Periodic probe of container liveness.
                                  Container will be restarted if the probe fails.
                                  Cannot be updated.
                                  More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                properties:
                                  exec:
                                    description: Exec specifies a command to execute
                                      in the container.
                                    properties:
                                      command:
                                        description: |-
                                          Command is the command line to execute inside the container, the working directory for the
                                          command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                          not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                          a shell, you need to explicitly call out to that shell.
                                          Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                  failureThreshold:
                                    description: |-
                                      Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                      Defaults to 3. Minimum value is 1.
                                    format: int32
                                    type: integer
                                  grpc:
                                    description: GRPC specifies a GRPC HealthCheckRequest.
                                    properties:
                                      port:
                                        description: Port number of the gRPC service.
                                          Number must be in the range 1 to 65535.
                                        format: int32
                                        type: integer
                                      service:
                                        default: ""
                                        description: |-
                                          Service is the name of the service to place in the gRPC HealthCheckRequest
                                          (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                          If this is not specified, the default behavior is defined by gRPC.
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  httpGet:
                                    description: HTTPGet specifies an HTTP GET request
                                      to perform.
                                    properties:
                                      host:
                                        description: |-
                                          Host name to connect to, defaults to the pod IP. You probably want to set
                                          "Host" in httpHeaders instead.
                                        type: string
                                      httpHeaders:
                                        description: Custom headers to set in the
                                          request. HTTP allows repeated headers.
                                        items:
                                          description: HTTPHeader describes a custom
                                            header to be used in HTTP probes
                                          properties:
                                            name:
                                              description: |-
                                                The header field name.
                                                This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                              type: string
                                            value:
                                              description: The header field value
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      path:
                                        description: Path to access on the HTTP server.
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: |-
                                          Name or number of the port to access on the container.
                                          Number must be in the range 1 to 65535.
                                          Name must be an IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        description: |-
                                          Scheme to use for connecting to the host.
                                          Defaults to HTTP.
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  initialDelaySeconds:
                                    description: |-
                                      Number of seconds after the container has started before liveness probes are initiated.
                                      More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                    format: int32
                                    type: integer
                                  periodSeconds:
                                    description: |-
                                      How often (in seconds) to perform the probe.
                                      Default to 10 seconds. Minimum value is 1.
                                    format: int32
                                    type: integer
                                  successThreshold:
                                    description: |-
                                      Minimum consecutive successes for the probe to be considered successful after having failed.
                                      Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                                    format: int32
                                    type: integer
                                  tcpSocket:
                                    description: TCPSocket specifies a connection
                                      to a TCP port.
                                    properties:
                                      host:
                                        description: 'Optional: Host name to connect
                                          to, defaults to the pod IP.'
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: |-
                                          Number or name of the port to access on the container.
                                          Number must be in the range 1 to 65535.
                                          Name must be an IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                    required:
                                    - port
                                    type: object
                                  terminationGracePeriodSeconds:
                                    description: |-
                                      Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
                                      The grace period is the duration in seconds after the processes running in the pod are sent
                                      a termination signal and the time when the processes are forcibly halted with a kill signal.
                                      Set this value longer than the expected cleanup time for your process.
                                      If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
                                      value overrides the value provided by the pod spec.
                                      Value must be non-negative integer. The value zero indicates stop immediately via
                                      the kill signal (no opportunity to shut down).
                                      This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
                                      Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
                                    format: int64
                                    type: integer
                                  timeoutSeconds:
                                    description: |-
                                      Number of seconds after which the probe times out.
                                      Defaults to 1 second. Minimum value is 1.
                                      More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                    format: int32
                                    type: integer
                                type: object
                              name:
                                description: |-
                                  Name of the container specified as a DNS_LABEL.
                                  Each container in a pod must have a unique name (DNS_LABEL).
                                  Cannot be updated.
                                type: string
                              ports:
                                description: |-
                                  List of ports to expose from the container. Not specifying a port here
                                  DOES NOT prevent that port from being exposed. Any port which is
                                  listening on the default "0.0.0.0" address inside a container will be
                                  accessible from the network.
                                  Modifying this array with strategic merge patch may corrupt the data.
                                  For more information See https://github.com/kubernetes/kubernetes/issues/108255.
                                  Cannot be updated.
                                items:
                                  description: ContainerPort represents a network
                                    port in a single container.
                                  properties:
                                    containerPort:
                                      description: |-
                                        Number of port to expose on the pod's IP address.
                                        This must be a valid port number, 0 < x < 65536.
                                      format: int32
                                      type: integer
                                    hostIP:
                                      description: What host IP to bind the external
                                        port to.
                                      type: string
                                    hostPort:
                                      description: |-
                                        Number of port to expose on the host.
                                        If specified, this must be a valid port number, 0 < x < 65536.
                                        If HostNetwork is specified, this must match ContainerPort.
                                        Most containers do not need this.
                                      format: int32
                                      type: integer
                                    name:
                                      description: |-
                                        If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
                                        named port in a pod must have a unique name. Name for the port that can be
                                        referred to by services.
                                      type: string
                                    protocol:
                                      default: TCP
                                      description: |-
                                        Protocol for port. Must be UDP, TCP, or SCTP.
                                        Defaults to "TCP".
                                      type: string
                                  required:
                                  - containerPort
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - containerPort
                                - protocol
                                x-kubernetes-list-type: map
                              readinessProbe:
                                description: |-
                                  Periodic probe of container service readiness.
                                  Container will be removed from service endpoints if the probe fails.
                                  Cannot be updated.
                                  More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                properties:
                                  exec:
                                    description: Exec specifies a command to execute
                                      in the container.
                                    properties:
                                      command:
                                        description: |-
                                          Command is the command line to execute inside the container, the working directory for the
                                          command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                          not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                          a shell, you need to explicitly call out to that shell.
                                          Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                  failureThreshold:
                                    description: |-
                                      Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                      Defaults to 3. Minimum value is 1.
                                    format: int32
                                    type: integer
                                  grpc:
                                    description: GRPC specifies a GRPC HealthCheckRequest.
                                    properties:
                                      port:
                                        description: Port number of the gRPC service.
                                          Number must be in the range 1 to 65535.
                                        format: int32
                                        type: integer
                                      service:
                                        default: ""
                                        description: |-
                                          Service is the name of the service to place in the gRPC HealthCheckRequest
                                          (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                          If this is not specified, the default behavior is defined by gRPC.
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  httpGet:
                                    description: HTTPGet specifies an HTTP GET request
                                      to perform.
                                    properties:
                                      host:
                                        description: |-
                                          Host name to connect to, defaults to the pod IP. You probably want to set
                                          "Host" in httpHeaders instead.
                                        type: string
                                      httpHeaders:
                                        description: Custom headers to set in the
                                          request. HTTP allows repeated headers.
                                        items:
                                          description: HTTPHeader describes a custom
                                            header to be used in HTTP probes
                                          properties:
                                            name:
                                              description: |-
                                                The header field name.
                                                This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                              type: string
                                            value:
                                              description: The header field value
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      path:
                                        description: Path to access on the HTTP server.
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: |-
                                          Name or number of the port to access on the container.
                                          Number must be in the range 1 to 65535.
                                          Name must be an IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        description: |-
                                          Scheme to use for connecting to the host.
                                          Defaults to HTTP.
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  initialDelaySeconds:
                                    description: |-
                                      Number of seconds after the container has started before liveness probes are initiated.
                                      More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                    format: int32
                                    type: integer
                                  periodSeconds:
                                    description: |-
                                      How often (in seconds) to perform the probe.
                                      Default to 10 seconds. Minimum value is 1.
                                    format: int32
                                    type: integer
                                  successThreshold:
                                    description: |-
                                      Minimum consecutive successes for the probe to be considered successful after having failed.
                                      Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                                    format: int32
                                    type: integer
                                  tcpSocket:
                                    description: TCPSocket specifies a connection
                                      to a TCP port.
                                    properties:
                                      host:
                                        description: 'Optional: Host name to connect
                                          to, defaults to the pod IP.'
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: |-
                                          Number or name of the port to access on the container.
                                          Number must be in the range 1 to 65535.
                                          Name must be an IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                    required:
                                    - port
                                    type: object
                                  terminationGracePeriodSeconds:
                                    description: |-
                                      Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
                                      The grace period is the duration in seconds after the processes running in the pod are sent
                                      a termination signal and the time when the processes are forcibly halted with a kill signal.
                                      Set this value longer than the expected cleanup time for your process.
                                      If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
                                      value overrides the value provided by the pod spec.
                                      Value must be non-negative integer. The value zero indicates stop immediately via
                                      the kill signal (no opportunity to shut down).
                                      This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
                                      Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
                                    format: int64
                                    type: integer
                                  timeoutSeconds:
                                    description: |-
                                      Number of seconds after which the probe times out.
                                      Defaults to 1 second. Minimum value is 1.
                                      More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                    format: int32
                                    type: integer
                                type: object
                              resizePolicy:
                                description: Resources resize policy for the container.
                                items:
                                  description: ContainerResizePolicy represents resource
                                    resize policy for the container.
                                  properties:
                                    resourceName:
                                      description: |-
                                        Name of the resource to which this resource resize policy applies.
                                        Supported values: cpu, memory.
                                      type: string
                                    restartPolicy:
                                      description: |-
                                        Restart policy to apply when specified resource is resized.
                                        If not specified, it defaults to NotRequired.
                                      type: string
                                  required:
                                  - resourceName
                                  - restartPolicy
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              resources:
                                description: |-
                                  Compute Resources required by this container.
                                  Cannot be updated.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                properties:
                                  claims:
                                    description: |-
                                      Claims lists the names of resources, defined in spec.resourceClaims,
                                      that are used by this container.

                                      This is an alpha field and requires enabling the
                                      DynamicResourceAllocation feature gate.

                                      This field is immutable. It can only be set for containers.
                                    items:
                                      description: ResourceClaim references one entry
                                        in PodSpec.ResourceClaims.
                                      properties:
                                        name:
                                          description: |-
                                            Name must match the name of one entry in pod.spec.resourceClaims of
                                            the Pod where this field is used. It makes that resource available
                                            inside a container.
                                          type: string
                                        request:
                                          description: |-
                                            Request is the name chosen for a request in the referenced claim.
                                            If empty, everything from the claim is made available, otherwise
                                            only the result of this request.
                                          type: string
                                      required:
                                      - name
                                      type: object
                                    type: array
                                    x-kubernetes-list-map-keys:
                                    - name
                                    x-kubernetes-list-type: map
                                  limits:
                                    additionalProperties:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                    description: |-
                                      Limits describes the maximum amount of compute resources allowed.
                                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                    type: object
                                  requests:
                                    additionalProperties:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      x-kubernetes-int-or-string: true
                                    description: |-
                                      Requests describes the minimum amount of compute resources required.
                                      If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                      otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                      More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                    type: object
                                type: object
                              restartPolicy:
                                description: |-
                                  RestartPolicy defines the restart behavior of individual containers in a pod.
                                  This field may only be set for init containers, and the only allowed value is "Always".
                                  For non-init containers or when this field is not specified,
                                  the restart behavior is defined by the Pod's restart policy and the container type.
                                  Setting the RestartPolicy as "Always" for the init container will have the following effect:
                                  this init container will be continually restarted on
                                  exit until all regular containers have terminated. Once all regular
                                  containers have completed, all init containers with restartPolicy "Always"
                                  will be shut down. This lifecycle differs from normal init containers and
                                  is often referred to as a "sidecar" container. Although this init
                                  container still starts in the init container sequence, it does not wait
                                  for the container to complete before proceeding to the next init
                                  container. Instead, the next init container starts immediately after this
                                  init container is started, or after any startupProbe has successfully
                                  completed.
                                type: string
                              securityContext:
                                description: |-
                                  SecurityContext defines the security options the container should be run with.
                                  If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
                                  More info: https://kubernetes.io/docs/tasks/configure-pod-container/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
                                      Note that this field cannot be set when spec.os.name is windows.
                                    type: boolean
                                  appArmorProfile:
                                    description: |-
                                      appArmorProfile is the AppArmor options to use by this container. If set, this profile
                                      overrides the pod's appArmorProfile.
                                      Note that this field cannot be set when spec.os.name is windows.
                                    properties:
                                      localhostProfile:
                                        description: |-
                                          localhostProfile indicates a profile loaded on the node that should be used.
                                          The profile must be preconfigured on the node to work.
                                          Must match the loaded name of the profile.
                                          Must be set if and only if type is "Localhost".
                                        type: string
                                      type:
                                        description: |-
                                          type indicates which kind of AppArmor profile will be applied.
                                          Valid options are:
                                            Localhost - a profile pre-loaded on the node.
                                            RuntimeDefault - the container runtime's default profile.
                                            Unconfined - no AppArmor enforcement.
                                        type: string
                                    required:
                                    - type
                                    type: object
                                  capabilities:
                                    description: |-
                                      The capabilities to add/drop when running containers.
                                      Defaults to the default set of capabilities granted by the container runtime.
                                      Note that this field cannot be set when spec.os.name is windows.
                                    properties:
                                      add:
                                        description: Added capabilities
                                        items:
                                          description: Capability represent POSIX
                                            capabilities type
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      drop:
                                        description: Removed capabilities
                                        items:
                                          description: Capability represent POSIX
                                            capabilities type
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                  privileged:
                                    description: |-
                                      Run container in privileged mode.
                                      Processes in privileged containers are essentially equivalent to root on the host.
                                      Defaults to false.
                                      Note that this field cannot be set when spec.os.name is windows.
                                    type: boolean
                                  procMount:
                                    description: |-
                                      procMount denotes the type of proc mount to use for the containers.
                                      The default value is Default which uses the container runtime defaults for
                                      readonly paths and masked paths.
                                      This requires the ProcMountType feature flag to be enabled.
                                      Note that this field cannot be set when spec.os.name is windows.
                                    type: string
                                  readOnlyRootFilesystem:
                                    description: |-
                                      Whether this container has a read-only root filesystem.
                                      Default is false.
                                      Note that this field cannot be set when spec.os.name is windows.
                                    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.
                                      Note that this field cannot be set when spec.os.name is windows.
                                    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.
                                      Note that this field cannot be set when spec.os.name is windows.
                                    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.
                                      Note that this field cannot be set when spec.os.name is windows.
                                    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.
                                      Note that this field cannot be set when spec.os.name is windows.
                                    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 be set if type is "Localhost". Must NOT be set for any other type.
                                        type: string
                                      type:
                                        description: |-
                                          type indicates which kind of seccomp profile will be applied.
                                          Valid options are:

                                          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.
                                      Note that this field cannot be set when spec.os.name is linux.
                                    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
                                      hostProcess:
                                        description: |-
                                          HostProcess determines if a container should be run as a 'Host Process' container.
                                          All of a Pod's containers must have the same effective HostProcess value
                                          (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).
                                          In addition, if HostProcess is true then HostNetwork must also be set to true.
                                        type: boolean
                                      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
                              startupProbe:
                                description: |-
                                  StartupProbe indicates that the Pod has successfully initialized.
                                  If specified, no other probes are executed until this completes successfully.
                                  If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
                                  This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
                                  when it might take a long time to load data or warm a cache, than during steady-state operation.
                                  This cannot be updated.
                                  More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                properties:
                                  exec:
                                    description: Exec specifies a command to execute
                                      in the container.
                                    properties:
                                      command:
                                        description: |-
                                          Command is the command line to execute inside the container, the working directory for the
                                          command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                          not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                          a shell, you need to explicitly call out to that shell.
                                          Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                  failureThreshold:
                                    description: |-
                                      Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                      Defaults to 3. Minimum value is 1.
                                    format: int32
                                    type: integer
                                  grpc:
                                    description: GRPC specifies a GRPC HealthCheckRequest.
                                    properties:
                                      port:
                                        description: Port number of the gRPC service.
                                          Number must be in the range 1 to 65535.
                                        format: int32
                                        type: integer
                                      service:
                                        default: ""
                                        description: |-
                                          Service is the name of the service to place in the gRPC HealthCheckRequest
                                          (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                          If this is not specified, the default behavior is defined by gRPC.
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  httpGet:
                                    description: HTTPGet specifies an HTTP GET request
                                      to perform.
                                    properties:
                                      host:
                                        description: |-
                                          Host name to connect to, defaults to the pod IP. You probably want to set
                                          "Host" in httpHeaders instead.
                                        type: string
                                      httpHeaders:
                                        description: Custom headers to set in the
                                          request. HTTP allows repeated headers.
                                        items:
                                          description: HTTPHeader describes a custom
                                            header to be used in HTTP probes
                                          properties:
                                            name:
                                              description: |-
                                                The header field name.
                                                This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                              type: string
                                            value:
                                              description: The header field value
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      path:
                                        description: Path to access on the HTTP server.
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: |-
                                          Name or number of the port to access on the container.
                                          Number must be in the range 1 to 65535.
                                          Name must be an IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        description: |-
                                          Scheme to use for connecting to the host.
                                          Defaults to HTTP.
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  initialDelaySeconds:
                                    description: |-
                                      Number of seconds after the container has started before liveness probes are initiated.
                                      More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                    format: int32
                                    type: integer
                                  periodSeconds:
                                    description: |-
                                      How often (in seconds) to perform the probe.
                                      Default to 10 seconds. Minimum value is 1.
                                    format: int32
                                    type: integer
                                  successThreshold:
                                    description: |-
                                      Minimum consecutive successes for the probe to be considered successful after having failed.
                                      Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                                    format: int32
                                    type: integer
                                  tcpSocket:
                                    description: TCPSocket specifies a connection
                                      to a TCP port.
                                    properties:
                                      host:
                                        description: 'Optional: Host name to connect
                                          to, defaults to the pod IP.'
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: |-
                                          Number or name of the port to access on the container.
                                          Number must be in the range 1 to 65535.
                                          Name must be an IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                    required:
                                    - port
                                    type: object
                                  terminationGracePeriodSeconds:
                                    description: |-
                                      Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
                                      The grace period is the duration in seconds after the processes running in the pod are sent
                                      a termination signal and the time when the processes are forcibly halted with a kill signal.
                                      Set this value longer than the expected cleanup time for your process.
                                      If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
                                      value overrides the value provided by the pod spec.
                                      Value must be non-negative integer. The value zero indicates stop immediately via
                                      the kill signal (no opportunity to shut down).
                                      This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
                                      Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
                                    format: int64
                                    type: integer
                                  timeoutSeconds:
                                    description: |-
                                      Number of seconds after which the probe times out.
                                      Defaults to 1 second. Minimum value is 1.
                                      More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                    format: int32
                                    type: integer
                                type: object
                              stdin:
                                description: |-
                                  Whether this container should allocate a buffer for stdin in the container runtime. If this
                                  is not set, reads from stdin in the container will always result in EOF.
                                  Default is false.
                                type: boolean
                              stdinOnce:
                                description: |-
                                  Whether the container runtime should close the stdin channel after it has been opened by
                                  a single attach. When stdin is true the stdin stream will remain open across multiple attach
                                  sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
                                  first client attaches to stdin, and then remains open and accepts data until the client disconnects,
                                  at which time stdin is closed and remains closed until the container is restarted. If this
                                  flag is false, a container processes that reads from stdin will never receive an EOF.
                                  Default is false
                                type: boolean
                              terminationMessagePath:
                                description: |-
                                  Optional: Path at which the file to which the container's termination message
                                  will be written is mounted into the container's filesystem.
                                  Message written is intended to be brief final status, such as an assertion failure message.
                                  Will be truncated by the node if greater than 4096 bytes. The total message length across
                                  all containers will be limited to 12kb.
                                  Defaults to /dev/termination-log.
                                  Cannot be updated.
                                type: string
                              terminationMessagePolicy:
                                description: |-
                                  Indicate how the termination message should be populated. File will use the contents of
                                  terminationMessagePath to populate the container status message on both success and failure.
                                  FallbackToLogsOnError will use the last chunk of container log output if the termination
                                  message file is empty and the container exited with an error.
                                  The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
                                  Defaults to File.
                                  Cannot be updated.
                                type: string
                              tty:
                                description: |-
                                  Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
                                  Default is false.
                                type: boolean
                              volumeDevices:
                                description: volumeDevices is the list of block devices
                                  to be used by the container.
                                items:
                                  description: volumeDevice describes a mapping of
                                    a raw block device within a container.
                                  properties:
                                    devicePath:
                                      description: devicePath is the path inside of
                                        the container that the device will be mapped
                                        to.
                                      type: string
                                    name:
                                      description: name must match the name of a persistentVolumeClaim
                                        in the pod
                                      type: string
                                  required:
                                  - devicePath
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - devicePath
                                x-kubernetes-list-type: map
                              volumeMounts:
                                description: |-
                                  Pod volumes to mount into the container's filesystem.
                                  Cannot be updated.
                                items:
                                  description: VolumeMount describes a mounting of
                                    a Volume within a container.
                                  properties:
                                    mountPath:
                                      description: |-
                                        Path within the container at which the volume should be mounted.  Must
                                        not contain ':'.
                                      type: string
                                    mountPropagation:
                                      description: |-
                                        mountPropagation determines how mounts are propagated from the host
                                        to container and the other way around.
                                        When not set, MountPropagationNone is used.
                                        This field is beta in 1.10.
                                        When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
                                        (which defaults to None).
                                      type: string
                                    name:
                                      description: This must match the Name of a Volume.
                                      type: string
                                    readOnly:
                                      description: |-
                                        Mounted read-only if true, read-write otherwise (false or unspecified).
                                        Defaults to false.
                                      type: boolean
                                    recursiveReadOnly:
                                      description: |-
                                        RecursiveReadOnly specifies whether read-only mounts should be handled
                                        recursively.

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

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

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

                                        If this field is not specified, it is treated as an equivalent of Disabled.
                                      type: string
                                    subPath:
                                      description: |-
                                        Path within the volume from which the container's volume should be mounted.
                                        Defaults to "" (volume's root).
                                      type: string
                                    subPathExpr:
                                      description: |-
                                        Expanded path within the volume from which the container's volume should be mounted.
                                        Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
                                        Defaults to "" (volume's root).
                                        SubPathExpr and SubPath are mutually exclusive.
                                      type: string
                                  required:
                                  - mountPath
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - mountPath
                                x-kubernetes-list-type: map
                              workingDir:
                                description: |-
                                  Container's working directory.
                                  If not specified, the container runtime's default will be used, which
                                  might be configured in the container image.
                                  Cannot be updated.
                                type: string
                            required:
                            - name
                            type: object
                          type: array
                        retryStrategy:
                          description: |-
                            RetryStrategy describes how to retry container nodes if the container set fails.
                            Note that this works differently from the template-level `retryStrategy` as it is a process-level retry that does not create new Pods or containers.
                          properties:
                            duration:
                              description: |-
                                Duration is the time between each retry, examples values are "300ms", "1s" or "5m".
                                Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
                              type: string
                            retries:
                              anyOf:
                              - type: integer
                              - type: string
                              description: |-
                                Retries is the maximum number of retry attempts for each container. It does not include the
                                first, original attempt; the maximum number of total attempts will be `retries + 1`.
                              x-kubernetes-int-or-string: true
                          required:
                          - retries
                          type: object
                        volumeMounts:
                          items:
                            description: VolumeMount describes a mounting of a Volume
                              within a container.
                            properties:
                              mountPath:
                                description: |-
                                  Path within the container at which the volume should be mounted.  Must
                                  not contain ':'.
                                type: string
                              mountPropagation:
                                description: |-
                                  mountPropagation determines how mounts are propagated from the host
                                  to container and the other way around.
                                  When not set, MountPropagationNone is used.
                                  This field is beta in 1.10.
                                  When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
                                  (which defaults to None).
                                type: string
                              name:
                                description: This must match the Name of a Volume.
                                type: string
                              readOnly:
                                description: |-
                                  Mounted read-only if true, read-write otherwise (false or unspecified).
                                  Defaults to false.
                                type: boolean
                              recursiveReadOnly:
                                description: |-
                                  RecursiveReadOnly specifies whether read-only mounts should be handled
                                  recursively.

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

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

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

                                  If this field is not specified, it is treated as an equivalent of Disabled.
                                type: string
                              subPath:
                                description: |-
                                  Path within the volume from which the container's volume should be mounted.
                                  Defaults to "" (volume's root).
                                type: string
                              subPathExpr:
                                description: |-
                                  Expanded path within the volume from which the container's volume should be mounted.
                                  Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
                                  Defaults to "" (volume's root).
                                  SubPathExpr and SubPath are mutually exclusive.
                                type: string
                            required:
                            - mountPath
                            - name
                            type: object
                          type: array
                      required:
                      - containers
                      type: object
                    daemon:
                      description: Daemon will allow a workflow to proceed to the
                        next step so long as the container reaches readiness
                      type: boolean
                    dag:
                      description: DAG template subtype which runs a DAG
                      properties:
                        failFast:
                          description: |-
                            This flag is for DAG logic. The DAG logic has a built-in "fail fast" feature to stop scheduling new steps,
                            as soon as it detects that one of the DAG nodes is failed. Then it waits until all DAG nodes are completed
                            before failing the DAG itself.
                            The FailFast flag default is true,  if set to false, it will allow a DAG to run all branches of the DAG to
                            completion (either success or failure), regardless of the failed outcomes of branches in the DAG.
                            More info and example about this feature at https://github.com/argoproj/argo-workflows/issues/1442
                          type: boolean
                        target:
                          description: Target are one or more names of targets to
                            execute in a DAG
                          type: string
                        tasks:
                          description: |-
                            Tasks are a list of DAG tasks
                            MaxItems is an artificial limit to limit CEL validation costs - see note at top of file
                          items:
                            description: |-
                              DAGTask represents a node in the graph during DAG execution
                              Note: CEL validation cannot check withItems (Schemaless) or inline (PreserveUnknownFields) fields.
                            properties:
                              arguments:
                                description: Arguments are the parameter and artifact
                                  arguments to the template
                                properties:
                                  artifacts:
                                    description: Artifacts is the list of artifacts
                                      to pass to the template or workflow
                                    items:
                                      description: Artifact indicates an artifact
                                        to place at a specified path
                                      properties:
                                        archive:
                                          description: Archive controls how the artifact
                                            will be saved to the artifact repository.
                                          properties:
                                            none:
                                              description: |-
                                                NoneStrategy indicates to skip tar process and upload the files or directory tree as independent
                                                files. Note that if the artifact is a directory, the artifact driver must support the ability to
                                                save/load the directory appropriately.
                                              type: object
                                            tar:
                                              description: TarStrategy will tar and
                                                gzip the file or directory when saving
                                              properties:
                                                compressionLevel:
                                                  description: |-
                                                    CompressionLevel specifies the gzip compression level to use for the artifact.
                                                    Defaults to gzip.DefaultCompression.
                                                  format: int32
                                                  type: integer
                                              type: object
                                            zip:
                                              description: ZipStrategy will unzip
                                                zipped input artifacts
                                              type: object
                                          type: object
                                        archiveLogs:
                                          description: ArchiveLogs indicates if the
                                            container logs should be archived
                                          type: boolean
                                        artifactGC:
                                          description: ArtifactGC describes the strategy
                                            to use when to deleting an artifact from
                                            completed or deleted workflows
                                          properties:
                                            podMetadata:
                                              description: PodMetadata is an optional
                                                field for specifying the Labels and
                                                Annotations that should be assigned
                                                to the Pod doing the deletion
                                              properties:
                                                annotations:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                                labels:
                                                  additionalProperties:
                                                    type: string
                                                  type: object
                                              type: object
                                            serviceAccountName:
                                              description: ServiceAccountName is an
                                                optional field for specifying the
                                                Service Account that should be assigned
                                                to the Pod doing the deletion
                                              type: string
                                            strategy:
                                              description: Strategy is the strategy
                                                to use.
                                              enum:
                                              - ""
                                              - OnWorkflowCompletion
                                              - OnWorkflowDeletion
                                              - Never
                                              type: string
                                          type: object
                                        artifactory:
                                          description: Artifactory contains artifactory
                                            artifact location details
                                          properties:
                                            passwordSecret:
                                              description: PasswordSecret is the secret
                                                selector to the repository password
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            url:
                                              description: URL of the artifact
                                              type: string
                                            usernameSecret:
                                              description: UsernameSecret is the secret
                                                selector to the repository username
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                          required:
                                          - url
                                          type: object
                                        azure:
                                          description: Azure contains Azure Storage
                                            artifact location details
                                          properties:
                                            accountKeySecret:
                                              description: AccountKeySecret is the
                                                secret selector to the Azure Blob
                                                Storage account access key
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            blob:
                                              description: Blob is the blob name (i.e.,
                                                path) in the container where the artifact
                                                resides
                                              type: string
                                            container:
                                              description: Container is the container
                                                where resources will be stored
                                              type: string
                                            endpoint:
                                              description: Endpoint is the service
                                                url associated with an account. It
                                                is most likely "https://<ACCOUNT_NAME>.blob.core.windows.net"
                                              type: string
                                            useSDKCreds:
                                              description: UseSDKCreds tells the driver
                                                to figure out credentials based on
                                                sdk defaults.
                                              type: boolean
                                          required:
                                          - blob
                                          - container
                                          - endpoint
                                          type: object
                                        deleted:
                                          description: Has this been deleted?
                                          type: boolean
                                        from:
                                          description: From allows an artifact to
                                            reference an artifact from a previous
                                            step
                                          type: string
                                        fromExpression:
                                          description: FromExpression, if defined,
                                            is evaluated to specify the value for
                                            the artifact
                                          type: string
                                        gcs:
                                          description: GCS contains GCS artifact location
                                            details
                                          properties:
                                            bucket:
                                              description: Bucket is the name of the
                                                bucket
                                              type: string
                                            key:
                                              description: Key is the path in the
                                                bucket where the artifact resides
                                              type: string
                                            serviceAccountKeySecret:
                                              description: ServiceAccountKeySecret
                                                is the secret selector to the bucket's
                                                service account key
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                          required:
                                          - key
                                          type: object
                                        git:
                                          description: Git contains git artifact location
                                            details
                                          properties:
                                            branch:
                                              description: Branch is the branch to
                                                fetch when `SingleBranch` is enabled
                                              type: string
                                            depth:
                                              description: |-
                                                Depth specifies clones/fetches should be shallow and include the given
                                                number of commits from the branch tip
                                              format: int64
                                              type: integer
                                            disableSubmodules:
                                              description: DisableSubmodules disables
                                                submodules during git clone
                                              type: boolean
                                            fetch:
                                              description: Fetch specifies a number
                                                of refs that should be fetched before
                                                checkout
                                              items:
                                                type: string
                                              type: array
                                            insecureIgnoreHostKey:
                                              description: InsecureIgnoreHostKey disables
                                                SSH strict host key checking during
                                                git clone
                                              type: boolean
                                            insecureSkipTLS:
                                              description: InsecureSkipTLS disables
                                                server certificate verification resulting
                                                in insecure HTTPS connections
                                              type: boolean
                                            passwordSecret:
                                              description: PasswordSecret is the secret
                                                selector to the repository password
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            repo:
                                              description: Repo is the git repository
                                              type: string
                                            revision:
                                              description: Revision is the git commit,
                                                tag, branch to checkout
                                              type: string
                                            singleBranch:
                                              description: SingleBranch enables single
                                                branch clone, using the `branch` parameter
                                              type: boolean
                                            sshPrivateKeySecret:
                                              description: SSHPrivateKeySecret is
                                                the secret selector to the repository
                                                ssh private key
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            usernameSecret:
                                              description: UsernameSecret is the secret
                                                selector to the repository username
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                          required:
                                          - repo
                                          type: object
                                        globalName:
                                          description: |-
                                            GlobalName exports an output artifact to the global scope, making it available as
                                            '{{workflow.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts
                                          type: string
                                        hdfs:
                                          description: HDFS contains HDFS artifact
                                            location details
                                          properties:
                                            addresses:
                                              description: Addresses is accessible
                                                addresses of HDFS name nodes
                                              items:
                                                type: string
                                              type: array
                                            dataTransferProtection:
                                              description: |-
                                                DataTransferProtection is the protection level for HDFS data transfer.
                                                It corresponds to the dfs.data.transfer.protection configuration in HDFS.
                                              type: string
                                            force:
                                              description: Force copies a file forcibly
                                                even if it exists
                                              type: boolean
                                            hdfsUser:
                                              description: |-
                                                HDFSUser is the user to access HDFS file system.
                                                It is ignored if either ccache or keytab is used.
                                              type: string
                                            krbCCacheSecret:
                                              description: |-
                                                KrbCCacheSecret is the secret selector for Kerberos ccache
                                                Either ccache or keytab can be set to use Kerberos.
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            krbConfigConfigMap:
                                              description: |-
                                                KrbConfig is the configmap selector for Kerberos config as string
                                                It must be set if either ccache or keytab is used.
                                              properties:
                                                key:
                                                  description: The key to select.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    ConfigMap or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            krbKeytabSecret:
                                              description: |-
                                                KrbKeytabSecret is the secret selector for Kerberos keytab
                                                Either ccache or keytab can be set to use Kerberos.
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            krbRealm:
                                              description: |-
                                                KrbRealm is the Kerberos realm used with Kerberos keytab
                                                It must be set if keytab is used.
                                              type: string
                                            krbServicePrincipalName:
                                              description: |-
                                                KrbServicePrincipalName is the principal name of Kerberos service
                                                It must be set if either ccache or keytab is used.
                                              type: string
                                            krbUsername:
                                              description: |-
                                                KrbUsername is the Kerberos username used with Kerberos keytab
                                                It must be set if keytab is used.
                                              type: string
                                            path:
                                              description: Path is a file path in
                                                HDFS
                                              type: string
                                          required:
                                          - path
                                          type: object
                                        http:
                                          description: HTTP contains HTTP artifact
                                            location details
                                          properties:
                                            auth:
                                              description: Auth contains information
                                                for client authentication
                                              properties:
                                                basicAuth:
                                                  description: BasicAuth describes
                                                    the secret selectors required
                                                    for basic authentication
                                                  properties:
                                                    passwordSecret:
                                                      description: PasswordSecret
                                                        is the secret selector to
                                                        the repository password
                                                      properties:
                                                        key:
                                                          description: The key of
                                                            the secret to select from.  Must
                                                            be a valid secret key.
                                                          type: string
                                                        name:
                                                          default: ""
                                                          description: |-
                                                            Name of the referent.
                                                            This field is effectively required, but due to backwards compatibility is
                                                            allowed to be empty. Instances of this type with an empty value here are
                                                            almost certainly wrong.
                                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                          type: string
                                                        optional:
                                                          description: Specify whether
                                                            the Secret or its key
                                                            must be defined
                                                          type: boolean
                                                      required:
                                                      - key
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                    usernameSecret:
                                                      description: UsernameSecret
                                                        is the secret selector to
                                                        the repository username
                                                      properties:
                                                        key:
                                                          description: The key of
                                                            the secret to select from.  Must
                                                            be a valid secret key.
                                                          type: string
                                                        name:
                                                          default: ""
                                                          description: |-
                                                            Name of the referent.
                                                            This field is effectively required, but due to backwards compatibility is
                                                            allowed to be empty. Instances of this type with an empty value here are
                                                            almost certainly wrong.
                                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                          type: string
                                                        optional:
                                                          description: Specify whether
                                                            the Secret or its key
                                                            must be defined
                                                          type: boolean
                                                      required:
                                                      - key
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                  type: object
                                                clientCert:
                                                  description: ClientCertAuth holds
                                                    necessary information for client
                                                    authentication via certificates
                                                  properties:
                                                    clientCertSecret:
                                                      description: SecretKeySelector
                                                        selects a key of a Secret.
                                                      properties:
                                                        key:
                                                          description: The key of
                                                            the secret to select from.  Must
                                                            be a valid secret key.
                                                          type: string
                                                        name:
                                                          default: ""
                                                          description: |-
                                                            Name of the referent.
                                                            This field is effectively required, but due to backwards compatibility is
                                                            allowed to be empty. Instances of this type with an empty value here are
                                                            almost certainly wrong.
                                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                          type: string
                                                        optional:
                                                          description: Specify whether
                                                            the Secret or its key
                                                            must be defined
                                                          type: boolean
                                                      required:
                                                      - key
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                    clientKeySecret:
                                                      description: SecretKeySelector
                                                        selects a key of a Secret.
                                                      properties:
                                                        key:
                                                          description: The key of
                                                            the secret to select from.  Must
                                                            be a valid secret key.
                                                          type: string
                                                        name:
                                                          default: ""
                                                          description: |-
                                                            Name of the referent.
                                                            This field is effectively required, but due to backwards compatibility is
                                                            allowed to be empty. Instances of this type with an empty value here are
                                                            almost certainly wrong.
                                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                          type: string
                                                        optional:
                                                          description: Specify whether
                                                            the Secret or its key
                                                            must be defined
                                                          type: boolean
                                                      required:
                                                      - key
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                  type: object
                                                oauth2:
                                                  description: OAuth2Auth holds all
                                                    information for client authentication
                                                    via OAuth2 tokens
                                                  properties:
                                                    clientIDSecret:
                                                      description: SecretKeySelector
                                                        selects a key of a Secret.
                                                      properties:
                                                        key:
                                                          description: The key of
                                                            the secret to select from.  Must
                                                            be a valid secret key.
                                                          type: string
                                                        name:
                                                          default: ""
                                                          description: |-
                                                            Name of the referent.
                                                            This field is effectively required, but due to backwards compatibility is
                                                            allowed to be empty. Instances of this type with an empty value here are
                                                            almost certainly wrong.
                                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                          type: string
                                                        optional:
                                                          description: Specify whether
                                                            the Secret or its key
                                                            must be defined
                                                          type: boolean
                                                      required:
                                                      - key
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                    clientSecretSecret:
                                                      description: SecretKeySelector
                                                        selects a key of a Secret.
                                                      properties:
                                                        key:
                                                          description: The key of
                                                            the secret to select from.  Must
                                                            be a valid secret key.
                                                          type: string
                                                        name:
                                                          default: ""
                                                          description: |-
                                                            Name of the referent.
                                                            This field is effectively required, but due to backwards compatibility is
                                                            allowed to be empty. Instances of this type with an empty value here are
                                                            almost certainly wrong.
                                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                          type: string
                                                        optional:
                                                          description: Specify whether
                                                            the Secret or its key
                                                            must be defined
                                                          type: boolean
                                                      required:
                                                      - key
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                    endpointParams:
                                                      items:
                                                        description: EndpointParam
                                                          is for requesting optional
                                                          fields that should be sent
                                                          in the oauth request
                                                        properties:
                                                          key:
                                                            description: Name is the
                                                              header name
                                                            type: string
                                                          value:
                                                            description: Value is
                                                              the literal value to
                                                              use for the header
                                                            type: string
                                                        required:
                                                        - key
                                                        type: object
                                                      type: array
                                                    scopes:
                                                      items:
                                                        type: string
                                                      type: array
                                                    tokenURLSecret:
                                                      description: SecretKeySelector
                                                        selects a key of a Secret.
                                                      properties:
                                                        key:
                                                          description: The key of
                                                            the secret to select from.  Must
                                                            be a valid secret key.
                                                          type: string
                                                        name:
                                                          default: ""
                                                          description: |-
                                                            Name of the referent.
                                                            This field is effectively required, but due to backwards compatibility is
                                                            allowed to be empty. Instances of this type with an empty value here are
                                                            almost certainly wrong.
                                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                          type: string
                                                        optional:
                                                          description: Specify whether
                                                            the Secret or its key
                                                            must be defined
                                                          type: boolean
                                                      required:
                                                      - key
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                  type: object
                                              type: object
                                            headers:
                                              description: Headers are an optional
                                                list of headers to send with HTTP
                                                requests for artifacts
                                              items:
                                                description: Header indicate a key-value
                                                  request header to be used when fetching
                                                  artifacts over HTTP
                                                properties:
                                                  name:
                                                    description: Name is the header
                                                      name
                                                    type: string
                                                  value:
                                                    description: Value is the literal
                                                      value to use for the header
                                                    type: string
                                                required:
                                                - name
                                                - value
                                                type: object
                                              type: array
                                            url:
                                              description: URL of the artifact
                                              type: string
                                          required:
                                          - url
                                          type: object
                                        mode:
                                          description: |-
                                            mode bits to use on this file, must be a value between 0 and 0777.
                                            Set when loading input artifacts. It is recommended to set the mode value
                                            to ensure the artifact has the expected permissions in your container.
                                          format: int32
                                          maximum: 511
                                          minimum: 0
                                          type: integer
                                        name:
                                          description: name of the artifact. must
                                            be unique within a template's inputs/outputs.
                                          pattern: ^[-a-zA-Z0-9_{}.]+$
                                          type: string
                                        optional:
                                          description: Make Artifacts optional, if
                                            Artifacts doesn't generate or exist
                                          type: boolean
                                        oss:
                                          description: OSS contains OSS artifact location
                                            details
                                          properties:
                                            accessKeySecret:
                                              description: AccessKeySecret is the
                                                secret selector to the bucket's access
                                                key
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            bucket:
                                              description: Bucket is the name of the
                                                bucket
                                              type: string
                                            createBucketIfNotPresent:
                                              description: CreateBucketIfNotPresent
                                                tells the driver to attempt to create
                                                the OSS bucket for output artifacts,
                                                if it doesn't exist
                                              type: boolean
                                            endpoint:
                                              description: Endpoint is the hostname
                                                of the bucket endpoint
                                              type: string
                                            key:
                                              description: Key is the path in the
                                                bucket where the artifact resides
                                              type: string
                                            lifecycleRule:
                                              description: LifecycleRule specifies
                                                how to manage bucket's lifecycle
                                              properties:
                                                markDeletionAfterDays:
                                                  description: MarkDeletionAfterDays
                                                    is the number of days before we
                                                    delete objects in the bucket
                                                  format: int32
                                                  type: integer
                                                markInfrequentAccessAfterDays:
                                                  description: MarkInfrequentAccessAfterDays
                                                    is the number of days before we
                                                    convert the objects in the bucket
                                                    to Infrequent Access (IA) storage
                                                    type
                                                  format: int32
                                                  type: integer
                                              type: object
                                            secretKeySecret:
                                              description: SecretKeySecret is the
                                                secret selector to the bucket's secret
                                                key
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            securityToken:
                                              description: 'SecurityToken is the user''s
                                                temporary security token. For more
                                                details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm'
                                              type: string
                                            useSDKCreds:
                                              description: UseSDKCreds tells the driver
                                                to figure out credentials based on
                                                sdk defaults.
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                        path:
                                          description: Path is the container path
                                            to the artifact
                                          type: string
                                        plugin:
                                          description: Plugin contains plugin artifact
                                            location details
                                          properties:
                                            configuration:
                                              description: Configuration is the plugin
                                                defined configuration for the artifact
                                                driver plugin
                                              type: string
                                            connectionTimeoutSeconds:
                                              description: ConnectionTimeoutSeconds
                                                is the timeout for the artifact driver
                                                connection, overriding the driver's
                                                timeout
                                              format: int32
                                              type: integer
                                            key:
                                              description: Key is the path in the
                                                artifact repository where the artifact
                                                resides
                                              type: string
                                            name:
                                              description: Name is the name of the
                                                artifact driver plugin
                                              type: string
                                          required:
                                          - key
                                          type: object
                                        raw:
                                          description: Raw contains raw artifact location
                                            details
                                          properties:
                                            data:
                                              description: Data is the string contents
                                                of the artifact
                                              type: string
                                          required:
                                          - data
                                          type: object
                                        recurseMode:
                                          description: If mode is set, apply the permission
                                            recursively into the artifact if it is
                                            a folder
                                          type: boolean
                                        s3:
                                          description: S3 contains S3 artifact location
                                            details
                                          properties:
                                            accessKeySecret:
                                              description: AccessKeySecret is the
                                                secret selector to the bucket's access
                                                key
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            bucket:
                                              description: Bucket is the name of the
                                                bucket
                                              type: string
                                            caSecret:
                                              description: CASecret specifies the
                                                secret that contains the CA, used
                                                to verify the TLS connection
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            createBucketIfNotPresent:
                                              description: CreateBucketIfNotPresent
                                                tells the driver to attempt to create
                                                the S3 bucket for output artifacts,
                                                if it doesn't exist. Setting Enabled
                                                Encryption will apply either SSE-S3
                                                to the bucket if KmsKeyId is not set
                                                or SSE-KMS if it is.
                                              properties:
                                                objectLocking:
                                                  description: ObjectLocking Enable
                                                    object locking
                                                  type: boolean
                                              type: object
                                            encryptionOptions:
                                              description: S3EncryptionOptions used
                                                to determine encryption options during
                                                s3 operations
                                              properties:
                                                enableEncryption:
                                                  description: EnableEncryption tells
                                                    the driver to encrypt objects
                                                    if set to true. If kmsKeyId and
                                                    serverSideCustomerKeySecret are
                                                    not set, SSE-S3 will be used
                                                  type: boolean
                                                kmsEncryptionContext:
                                                  description: KmsEncryptionContext
                                                    is a json blob that contains an
                                                    encryption context. See https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
                                                    for more information
                                                  type: string
                                                kmsKeyId:
                                                  description: KMSKeyId tells the
                                                    driver to encrypt the object using
                                                    the specified KMS Key.
                                                  type: string
                                                serverSideCustomerKeySecret:
                                                  description: ServerSideCustomerKeySecret
                                                    tells the driver to encrypt the
                                                    output artifacts using SSE-C with
                                                    the specified secret.
                                                  properties:
                                                    key:
                                                      description: The key of the
                                                        secret to select from.  Must
                                                        be a valid secret key.
                                                      type: string
                                                    name:
                                                      default: ""
                                                      description: |-
                                                        Name of the referent.
                                                        This field is effectively required, but due to backwards compatibility is
                                                        allowed to be empty. Instances of this type with an empty value here are
                                                        almost certainly wrong.
                                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                      type: string
                                                    optional:
                                                      description: Specify whether
                                                        the Secret or its key must
                                                        be defined
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                              type: object
                                            endpoint:
                                              description: Endpoint is the hostname
                                                of the bucket endpoint
                                              type: string
                                            insecure:
                                              description: Insecure will connect to
                                                the service with TLS
                                              type: boolean
                                            key:
                                              description: Key is the key in the bucket
                                                where the artifact resides
                                              type: string
                                            region:
                                              description: Region contains the optional
                                                bucket region
                                              type: string
                                            roleARN:
                                              description: RoleARN is the Amazon Resource
                                                Name (ARN) of the role to assume.
                                              type: string
                                            secretKeySecret:
                                              description: SecretKeySecret is the
                                                secret selector to the bucket's secret
                                                key
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            sessionTokenSecret:
                                              description: SessionTokenSecret is used
                                                for ephemeral credentials like an
                                                IAM assume role or S3 access grant
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            useSDKCreds:
                                              description: UseSDKCreds tells the driver
                                                to figure out credentials based on
                                                sdk defaults.
                                              type: boolean
                                          type: object
                                        subPath:
                                          description: SubPath allows an artifact
                                            to be sourced from a subpath within the
                                            specified source
                                          type: string
                                      required:
                                      - name
                                      type: object
                                      x-kubernetes-validations:
                                      - message: at most one artifact location can
                                          be specified
                                        rule: '(has(self.s3) ? 1 : 0) + (has(self.git)
                                          ? 1 : 0) + (has(self.http) ? 1 : 0) + (has(self.artifactory)
                                          ? 1 : 0) + (has(self.hdfs) ? 1 : 0) + (has(self.raw)
                                          ? 1 : 0) + (has(self.oss) ? 1 : 0) + (has(self.gcs)
                                          ? 1 : 0) + (has(self.azure) ? 1 : 0) + (has(self.plugin)
                                          ? 1 : 0) <= 1'
                                    type: array
                                  parameters:
                                    description: Parameters is the list of parameters
                                      to pass to the template or workflow
                                    items:
                                      description: Parameter indicate a passed string
                                        parameter to a service template with an optional
                                        default value
                                      properties:
                                        default:
                                          description: Default is the default value
                                            to use for an input parameter if a value
                                            was not supplied
                                          type: string
                                        description:
                                          description: Description is the parameter
                                            description
                                          type: string
                                        enum:
                                          description: Enum holds a list of string
                                            values to choose from, for the actual
                                            value of the parameter
                                          items:
                                            description: |-
                                              * It's JSON type is just string.
                                              * It will unmarshall int64, int32, float64, float32, boolean, a plain string and represents it as string.
                                              * It will marshall back to string - marshalling is not symmetric.
                                            type: string
                                          minItems: 1
                                          type: array
                                        globalName:
                                          description: |-
                                            GlobalName exports an output parameter to the global scope, making it available as
                                            '{{workflow.outputs.parameters.XXXX}} and in workflow.status.outputs.parameters
                                          type: string
                                        name:
                                          description: Name is the parameter name
                                          pattern: ^[-a-zA-Z0-9_]+$
                                          type: string
                                        value:
                                          description: |-
                                            Value is the literal value to use for the parameter.
                                            If specified in the context of an input parameter, any passed values take precedence over the specified value
                                          type: string
                                        valueFrom:
                                          description: ValueFrom is the source for
                                            the output parameter's value
                                          properties:
                                            configMapKeyRef:
                                              description: ConfigMapKeyRef is configmap
                                                selector for input parameter configuration
                                              properties:
                                                key:
                                                  description: The key to select.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    ConfigMap or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            default:
                                              description: Default specifies a value
                                                to be used if retrieving the value
                                                from the specified source fails
                                              type: string
                                            event:
                                              description: Selector (https://github.com/expr-lang/expr)
                                                that is evaluated against the event
                                                to get the value of the parameter.
                                                E.g. `payload.message`
                                              type: string
                                            expression:
                                              description: Expression, if defined,
                                                is evaluated to specify the value
                                                for the parameter
                                              type: string
                                            jqFilter:
                                              description: JQFilter expression against
                                                the resource object in resource templates
                                              type: string
                                            jsonPath:
                                              description: JSONPath of a resource
                                                to retrieve an output parameter value
                                                from in resource templates
                                              type: string
                                            parameter:
                                              description: |-
                                                Parameter reference to a step or dag task in which to retrieve an output parameter value from
                                                (e.g. '{{steps.mystep.outputs.myparam}}')
                                              type: string
                                            path:
                                              description: Path in the container to
                                                retrieve an output parameter value
                                                from in container templates
                                              type: string
                                            supplied:
                                              description: Supplied value to be filled
                                                in directly, either through the CLI,
                                                API, etc.
                                              type: object
                                          type: object
                                      required:
                                      - name
                                      type: object
                                    type: array
                                type: object
                              continueOn:
                                description: |-
                                  ContinueOn makes argo to proceed with the following step even if this step fails.
                                  Errors and Failed states can be specified
                                properties:
                                  error:
                                    type: boolean
                                  failed:
                                    type: boolean
                                type: object
                              dependencies:
                                description: Dependencies are name of other targets
                                  which this depends on
                                items:
                                  type: string
                                type: array
                              depends:
                                description: Depends are name of other targets which
                                  this depends on
                                type: string
                              hooks:
                                additionalProperties:
                                  properties:
                                    arguments:
                                      description: Arguments hold arguments to the
                                        template
                                      properties:
                                        artifacts:
                                          description: Artifacts is the list of artifacts
                                            to pass to the template or workflow
                                          items:
                                            description: Artifact indicates an artifact
                                              to place at a specified path
                                            properties:
                                              archive:
                                                description: Archive controls how
                                                  the artifact will be saved to the
                                                  artifact repository.
                                                properties:
                                                  none:
                                                    description: |-
                                                      NoneStrategy indicates to skip tar process and upload the files or directory tree as independent
                                                      files. Note that if the artifact is a directory, the artifact driver must support the ability to
                                                      save/load the directory appropriately.
                                                    type: object
                                                  tar:
                                                    description: TarStrategy will
                                                      tar and gzip the file or directory
                                                      when saving
                                                    properties:
                                                      compressionLevel:
                                                        description: |-
                                                          CompressionLevel specifies the gzip compression level to use for the artifact.
                                                          Defaults to gzip.DefaultCompression.
                                                        format: int32
                                                        type: integer
                                                    type: object
                                                  zip:
                                                    description: ZipStrategy will
                                                      unzip zipped input artifacts
                                                    type: object
                                                type: object
                                              archiveLogs:
                                                description: ArchiveLogs indicates
                                                  if the container logs should be
                                                  archived
                                                type: boolean
                                              artifactGC:
                                                description: ArtifactGC describes
                                                  the strategy to use when to deleting
                                                  an artifact from completed or deleted
                                                  workflows
                                                properties:
                                                  podMetadata:
                                                    description: PodMetadata is an
                                                      optional field for specifying
                                                      the Labels and Annotations that
                                                      should be assigned to the Pod
                                                      doing the deletion
                                                    properties:
                                                      annotations:
                                                        additionalProperties:
                                                          type: string
                                                        type: object
                                                      labels:
                                                        additionalProperties:
                                                          type: string
                                                        type: object
                                                    type: object
                                                  serviceAccountName:
                                                    description: ServiceAccountName
                                                      is an optional field for specifying
                                                      the Service Account that should
                                                      be assigned to the Pod doing
                                                      the deletion
                                                    type: string
                                                  strategy:
                                                    description: Strategy is the strategy
                                                      to use.
                                                    enum:
                                                    - ""
                                                    - OnWorkflowCompletion
                                                    - OnWorkflowDeletion
                                                    - Never
                                                    type: string
                                                type: object
                                              artifactory:
                                                description: Artifactory contains
                                                  artifactory artifact location details
                                                properties:
                                                  passwordSecret:
                                                    description: PasswordSecret is
                                                      the secret selector to the repository
                                                      password
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  url:
                                                    description: URL of the artifact
                                                    type: string
                                                  usernameSecret:
                                                    description: UsernameSecret is
                                                      the secret selector to the repository
                                                      username
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                required:
                                                - url
                                                type: object
                                              azure:
                                                description: Azure contains Azure
                                                  Storage artifact location details
                                                properties:
                                                  accountKeySecret:
                                                    description: AccountKeySecret
                                                      is the secret selector to the
                                                      Azure Blob Storage account access
                                                      key
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  blob:
                                                    description: Blob is the blob
                                                      name (i.e., path) in the container
                                                      where the artifact resides
                                                    type: string
                                                  container:
                                                    description: Container is the
                                                      container where resources will
                                                      be stored
                                                    type: string
                                                  endpoint:
                                                    description: Endpoint is the service
                                                      url associated with an account.
                                                      It is most likely "https://<ACCOUNT_NAME>.blob.core.windows.net"
                                                    type: string
                                                  useSDKCreds:
                                                    description: UseSDKCreds tells
                                                      the driver to figure out credentials
                                                      based on sdk defaults.
                                                    type: boolean
                                                required:
                                                - blob
                                                - container
                                                - endpoint
                                                type: object
                                              deleted:
                                                description: Has this been deleted?
                                                type: boolean
                                              from:
                                                description: From allows an artifact
                                                  to reference an artifact from a
                                                  previous step
                                                type: string
                                              fromExpression:
                                                description: FromExpression, if defined,
                                                  is evaluated to specify the value
                                                  for the artifact
                                                type: string
                                              gcs:
                                                description: GCS contains GCS artifact
                                                  location details
                                                properties:
                                                  bucket:
                                                    description: Bucket is the name
                                                      of the bucket
                                                    type: string
                                                  key:
                                                    description: Key is the path in
                                                      the bucket where the artifact
                                                      resides
                                                    type: string
                                                  serviceAccountKeySecret:
                                                    description: ServiceAccountKeySecret
                                                      is the secret selector to the
                                                      bucket's service account key
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                required:
                                                - key
                                                type: object
                                              git:
                                                description: Git contains git artifact
                                                  location details
                                                properties:
                                                  branch:
                                                    description: Branch is the branch
                                                      to fetch when `SingleBranch`
                                                      is enabled
                                                    type: string
                                                  depth:
                                                    description: |-
                                                      Depth specifies clones/fetches should be shallow and include the given
                                                      number of commits from the branch tip
                                                    format: int64
                                                    type: integer
                                                  disableSubmodules:
                                                    description: DisableSubmodules
                                                      disables submodules during git
                                                      clone
                                                    type: boolean
                                                  fetch:
                                                    description: Fetch specifies a
                                                      number of refs that should be
                                                      fetched before checkout
                                                    items:
                                                      type: string
                                                    type: array
                                                  insecureIgnoreHostKey:
                                                    description: InsecureIgnoreHostKey
                                                      disables SSH strict host key
                                                      checking during git clone
                                                    type: boolean
                                                  insecureSkipTLS:
                                                    description: InsecureSkipTLS disables
                                                      server certificate verification
                                                      resulting in insecure HTTPS
                                                      connections
                                                    type: boolean
                                                  passwordSecret:
                                                    description: PasswordSecret is
                                                      the secret selector to the repository
                                                      password
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  repo:
                                                    description: Repo is the git repository
                                                    type: string
                                                  revision:
                                                    description: Revision is the git
                                                      commit, tag, branch to checkout
                                                    type: string
                                                  singleBranch:
                                                    description: SingleBranch enables
                                                      single branch clone, using the
                                                      `branch` parameter
                                                    type: boolean
                                                  sshPrivateKeySecret:
                                                    description: SSHPrivateKeySecret
                                                      is the secret selector to the
                                                      repository ssh private key
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  usernameSecret:
                                                    description: UsernameSecret is
                                                      the secret selector to the repository
                                                      username
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                required:
                                                - repo
                                                type: object
                                              globalName:
                                                description: |-
                                                  GlobalName exports an output artifact to the global scope, making it available as
                                                  '{{workflow.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts
                                                type: string
                                              hdfs:
                                                description: HDFS contains HDFS artifact
                                                  location details
                                                properties:
                                                  addresses:
                                                    description: Addresses is accessible
                                                      addresses of HDFS name nodes
                                                    items:
                                                      type: string
                                                    type: array
                                                  dataTransferProtection:
                                                    description: |-
                                                      DataTransferProtection is the protection level for HDFS data transfer.
                                                      It corresponds to the dfs.data.transfer.protection configuration in HDFS.
                                                    type: string
                                                  force:
                                                    description: Force copies a file
                                                      forcibly even if it exists
                                                    type: boolean
                                                  hdfsUser:
                                                    description: |-
                                                      HDFSUser is the user to access HDFS file system.
                                                      It is ignored if either ccache or keytab is used.
                                                    type: string
                                                  krbCCacheSecret:
                                                    description: |-
                                                      KrbCCacheSecret is the secret selector for Kerberos ccache
                                                      Either ccache or keytab can be set to use Kerberos.
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  krbConfigConfigMap:
                                                    description: |-
                                                      KrbConfig is the configmap selector for Kerberos config as string
                                                      It must be set if either ccache or keytab is used.
                                                    properties:
                                                      key:
                                                        description: The key to select.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the ConfigMap or its key
                                                          must be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  krbKeytabSecret:
                                                    description: |-
                                                      KrbKeytabSecret is the secret selector for Kerberos keytab
                                                      Either ccache or keytab can be set to use Kerberos.
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  krbRealm:
                                                    description: |-
                                                      KrbRealm is the Kerberos realm used with Kerberos keytab
                                                      It must be set if keytab is used.
                                                    type: string
                                                  krbServicePrincipalName:
                                                    description: |-
                                                      KrbServicePrincipalName is the principal name of Kerberos service
                                                      It must be set if either ccache or keytab is used.
                                                    type: string
                                                  krbUsername:
                                                    description: |-
                                                      KrbUsername is the Kerberos username used with Kerberos keytab
                                                      It must be set if keytab is used.
                                                    type: string
                                                  path:
                                                    description: Path is a file path
                                                      in HDFS
                                                    type: string
                                                required:
                                                - path
                                                type: object
                                              http:
                                                description: HTTP contains HTTP artifact
                                                  location details
                                                properties:
                                                  auth:
                                                    description: Auth contains information
                                                      for client authentication
                                                    properties:
                                                      basicAuth:
                                                        description: BasicAuth describes
                                                          the secret selectors required
                                                          for basic authentication
                                                        properties:
                                                          passwordSecret:
                                                            description: PasswordSecret
                                                              is the secret selector
                                                              to the repository password
                                                            properties:
                                                              key:
                                                                description: The key
                                                                  of the secret to
                                                                  select from.  Must
                                                                  be a valid secret
                                                                  key.
                                                                type: string
                                                              name:
                                                                default: ""
                                                                description: |-
                                                                  Name of the referent.
                                                                  This field is effectively required, but due to backwards compatibility is
                                                                  allowed to be empty. Instances of this type with an empty value here are
                                                                  almost certainly wrong.
                                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                                type: string
                                                              optional:
                                                                description: Specify
                                                                  whether the Secret
                                                                  or its key must
                                                                  be defined
                                                                type: boolean
                                                            required:
                                                            - key
                                                            type: object
                                                            x-kubernetes-map-type: atomic
                                                          usernameSecret:
                                                            description: UsernameSecret
                                                              is the secret selector
                                                              to the repository username
                                                            properties:
                                                              key:
                                                                description: The key
                                                                  of the secret to
                                                                  select from.  Must
                                                                  be a valid secret
                                                                  key.
                                                                type: string
                                                              name:
                                                                default: ""
                                                                description: |-
                                                                  Name of the referent.
                                                                  This field is effectively required, but due to backwards compatibility is
                                                                  allowed to be empty. Instances of this type with an empty value here are
                                                                  almost certainly wrong.
                                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                                type: string
                                                              optional:
                                                                description: Specify
                                                                  whether the Secret
                                                                  or its key must
                                                                  be defined
                                                                type: boolean
                                                            required:
                                                            - key
                                                            type: object
                                                            x-kubernetes-map-type: atomic
                                                        type: object
                                                      clientCert:
                                                        description: ClientCertAuth
                                                          holds necessary information
                                                          for client authentication
                                                          via certificates
                                                        properties:
                                                          clientCertSecret:
                                                            description: SecretKeySelector
                                                              selects a key of a Secret.
                                                            properties:
                                                              key:
                                                                description: The key
                                                                  of the secret to
                                                                  select from.  Must
                                                                  be a valid secret
                                                                  key.
                                                                type: string
                                                              name:
                                                                default: ""
                                                                description: |-
                                                                  Name of the referent.
                                                                  This field is effectively required, but due to backwards compatibility is
                                                                  allowed to be empty. Instances of this type with an empty value here are
                                                                  almost certainly wrong.
                                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                                type: string
                                                              optional:
                                                                description: Specify
                                                                  whether the Secret
                                                                  or its key must
                                                                  be defined
                                                                type: boolean
                                                            required:
                                                            - key
                                                            type: object
                                                            x-kubernetes-map-type: atomic
                                                          clientKeySecret:
                                                            description: SecretKeySelector
                                                              selects a key of a Secret.
                                                            properties:
                                                              key:
                                                                description: The key
                                                                  of the secret to
                                                                  select from.  Must
                                                                  be a valid secret
                                                                  key.
                                                                type: string
                                                              name:
                                                                default: ""
                                                                description: |-
                                                                  Name of the referent.
                                                                  This field is effectively required, but due to backwards compatibility is
                                                                  allowed to be empty. Instances of this type with an empty value here are
                                                                  almost certainly wrong.
                                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                                type: string
                                                              optional:
                                                                description: Specify
                                                                  whether the Secret
                                                                  or its key must
                                                                  be defined
                                                                type: boolean
                                                            required:
                                                            - key
                                                            type: object
                                                            x-kubernetes-map-type: atomic
                                                        type: object
                                                      oauth2:
                                                        description: OAuth2Auth holds
                                                          all information for client
                                                          authentication via OAuth2
                                                          tokens
                                                        properties:
                                                          clientIDSecret:
                                                            description: SecretKeySelector
                                                              selects a key of a Secret.
                                                            properties:
                                                              key:
                                                                description: The key
                                                                  of the secret to
                                                                  select from.  Must
                                                                  be a valid secret
                                                                  key.
                                                                type: string
                                                              name:
                                                                default: ""
                                                                description: |-
                                                                  Name of the referent.
                                                                  This field is effectively required, but due to backwards compatibility is
                                                                  allowed to be empty. Instances of this type with an empty value here are
                                                                  almost certainly wrong.
                                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                                type: string
                                                              optional:
                                                                description: Specify
                                                                  whether the Secret
                                                                  or its key must
                                                                  be defined
                                                                type: boolean
                                                            required:
                                                            - key
                                                            type: object
                                                            x-kubernetes-map-type: atomic
                                                          clientSecretSecret:
                                                            description: SecretKeySelector
                                                              selects a key of a Secret.
                                                            properties:
                                                              key:
                                                                description: The key
                                                                  of the secret to
                                                                  select from.  Must
                                                                  be a valid secret
                                                                  key.
                                                                type: string
                                                              name:
                                                                default: ""
                                                                description: |-
                                                                  Name of the referent.
                                                                  This field is effectively required, but due to backwards compatibility is
                                                                  allowed to be empty. Instances of this type with an empty value here are
                                                                  almost certainly wrong.
                                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                                type: string
                                                              optional:
                                                                description: Specify
                                                                  whether the Secret
                                                                  or its key must
                                                                  be defined
                                                                type: boolean
                                                            required:
                                                            - key
                                                            type: object
                                                            x-kubernetes-map-type: atomic
                                                          endpointParams:
                                                            items:
                                                              description: EndpointParam
                                                                is for requesting
                                                                optional fields that
                                                                should be sent in
                                                                the oauth request
                                                              properties:
                                                                key:
                                                                  description: Name
                                                                    is the header
                                                                    name
                                                                  type: string
                                                                value:
                                                                  description: Value
                                                                    is the literal
                                                                    value to use for
                                                                    the header
                                                                  type: string
                                                              required:
                                                              - key
                                                              type: object
                                                            type: array
                                                          scopes:
                                                            items:
                                                              type: string
                                                            type: array
                                                          tokenURLSecret:
                                                            description: SecretKeySelector
                                                              selects a key of a Secret.
                                                            properties:
                                                              key:
                                                                description: The key
                                                                  of the secret to
                                                                  select from.  Must
                                                                  be a valid secret
                                                                  key.
                                                                type: string
                                                              name:
                                                                default: ""
                                                                description: |-
                                                                  Name of the referent.
                                                                  This field is effectively required, but due to backwards compatibility is
                                                                  allowed to be empty. Instances of this type with an empty value here are
                                                                  almost certainly wrong.
                                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                                type: string
                                                              optional:
                                                                description: Specify
                                                                  whether the Secret
                                                                  or its key must
                                                                  be defined
                                                                type: boolean
                                                            required:
                                                            - key
                                                            type: object
                                                            x-kubernetes-map-type: atomic
                                                        type: object
                                                    type: object
                                                  headers:
                                                    description: Headers are an optional
                                                      list of headers to send with
                                                      HTTP requests for artifacts
                                                    items:
                                                      description: Header indicate
                                                        a key-value request header
                                                        to be used when fetching artifacts
                                                        over HTTP
                                                      properties:
                                                        name:
                                                          description: Name is the
                                                            header name
                                                          type: string
                                                        value:
                                                          description: Value is the
                                                            literal value to use for
                                                            the header
                                                          type: string
                                                      required:
                                                      - name
                                                      - value
                                                      type: object
                                                    type: array
                                                  url:
                                                    description: URL of the artifact
                                                    type: string
                                                required:
                                                - url
                                                type: object
                                              mode:
                                                description: |-
                                                  mode bits to use on this file, must be a value between 0 and 0777.
                                                  Set when loading input artifacts. It is recommended to set the mode value
                                                  to ensure the artifact has the expected permissions in your container.
                                                format: int32
                                                maximum: 511
                                                minimum: 0
                                                type: integer
                                              name:
                                                description: name of the artifact.
                                                  must be unique within a template's
                                                  inputs/outputs.
                                                pattern: ^[-a-zA-Z0-9_{}.]+$
                                                type: string
                                              optional:
                                                description: Make Artifacts optional,
                                                  if Artifacts doesn't generate or
                                                  exist
                                                type: boolean
                                              oss:
                                                description: OSS contains OSS artifact
                                                  location details
                                                properties:
                                                  accessKeySecret:
                                                    description: AccessKeySecret is
                                                      the secret selector to the bucket's
                                                      access key
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  bucket:
                                                    description: Bucket is the name
                                                      of the bucket
                                                    type: string
                                                  createBucketIfNotPresent:
                                                    description: CreateBucketIfNotPresent
                                                      tells the driver to attempt
                                                      to create the OSS bucket for
                                                      output artifacts, if it doesn't
                                                      exist
                                                    type: boolean
                                                  endpoint:
                                                    description: Endpoint is the hostname
                                                      of the bucket endpoint
                                                    type: string
                                                  key:
                                                    description: Key is the path in
                                                      the bucket where the artifact
                                                      resides
                                                    type: string
                                                  lifecycleRule:
                                                    description: LifecycleRule specifies
                                                      how to manage bucket's lifecycle
                                                    properties:
                                                      markDeletionAfterDays:
                                                        description: MarkDeletionAfterDays
                                                          is the number of days before
                                                          we delete objects in the
                                                          bucket
                                                        format: int32
                                                        type: integer
                                                      markInfrequentAccessAfterDays:
                                                        description: MarkInfrequentAccessAfterDays
                                                          is the number of days before
                                                          we convert the objects in
                                                          the bucket to Infrequent
                                                          Access (IA) storage type
                                                        format: int32
                                                        type: integer
                                                    type: object
                                                  secretKeySecret:
                                                    description: SecretKeySecret is
                                                      the secret selector to the bucket's
                                                      secret key
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  securityToken:
                                                    description: 'SecurityToken is
                                                      the user''s temporary security
                                                      token. For more details, check
                                                      out: https://www.alibabacloud.com/help/doc-detail/100624.htm'
                                                    type: string
                                                  useSDKCreds:
                                                    description: UseSDKCreds tells
                                                      the driver to figure out credentials
                                                      based on sdk defaults.
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                              path:
                                                description: Path is the container
                                                  path to the artifact
                                                type: string
                                              plugin:
                                                description: Plugin contains plugin
                                                  artifact location details
                                                properties:
                                                  configuration:
                                                    description: Configuration is
                                                      the plugin defined configuration
                                                      for the artifact driver plugin
                                                    type: string
                                                  connectionTimeoutSeconds:
                                                    description: ConnectionTimeoutSeconds
                                                      is the timeout for the artifact
                                                      driver connection, overriding
                                                      the driver's timeout
                                                    format: int32
                                                    type: integer
                                                  key:
                                                    description: Key is the path in
                                                      the artifact repository where
                                                      the artifact resides
                                                    type: string
                                                  name:
                                                    description: Name is the name
                                                      of the artifact driver plugin
                                                    type: string
                                                required:
                                                - key
                                                type: object
                                              raw:
                                                description: Raw contains raw artifact
                                                  location details
                                                properties:
                                                  data:
                                                    description: Data is the string
                                                      contents of the artifact
                                                    type: string
                                                required:
                                                - data
                                                type: object
                                              recurseMode:
                                                description: If mode is set, apply
                                                  the permission recursively into
                                                  the artifact if it is a folder
                                                type: boolean
                                              s3:
                                                description: S3 contains S3 artifact
                                                  location details
                                                properties:
                                                  accessKeySecret:
                                                    description: AccessKeySecret is
                                                      the secret selector to the bucket's
                                                      access key
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  bucket:
                                                    description: Bucket is the name
                                                      of the bucket
                                                    type: string
                                                  caSecret:
                                                    description: CASecret specifies
                                                      the secret that contains the
                                                      CA, used to verify the TLS connection
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  createBucketIfNotPresent:
                                                    description: CreateBucketIfNotPresent
                                                      tells the driver to attempt
                                                      to create the S3 bucket for
                                                      output artifacts, if it doesn't
                                                      exist. Setting Enabled Encryption
                                                      will apply either SSE-S3 to
                                                      the bucket if KmsKeyId is not
                                                      set or SSE-KMS if it is.
                                                    properties:
                                                      objectLocking:
                                                        description: ObjectLocking
                                                          Enable object locking
                                                        type: boolean
                                                    type: object
                                                  encryptionOptions:
                                                    description: S3EncryptionOptions
                                                      used to determine encryption
                                                      options during s3 operations
                                                    properties:
                                                      enableEncryption:
                                                        description: EnableEncryption
                                                          tells the driver to encrypt
                                                          objects if set to true.
                                                          If kmsKeyId and serverSideCustomerKeySecret
                                                          are not set, SSE-S3 will
                                                          be used
                                                        type: boolean
                                                      kmsEncryptionContext:
                                                        description: KmsEncryptionContext
                                                          is a json blob that contains
                                                          an encryption context. See
                                                          https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
                                                          for more information
                                                        type: string
                                                      kmsKeyId:
                                                        description: KMSKeyId tells
                                                          the driver to encrypt the
                                                          object using the specified
                                                          KMS Key.
                                                        type: string
                                                      serverSideCustomerKeySecret:
                                                        description: ServerSideCustomerKeySecret
                                                          tells the driver to encrypt
                                                          the output artifacts using
                                                          SSE-C with the specified
                                                          secret.
                                                        properties:
                                                          key:
                                                            description: The key of
                                                              the secret to select
                                                              from.  Must be a valid
                                                              secret key.
                                                            type: string
                                                          name:
                                                            default: ""
                                                            description: |-
                                                              Name of the referent.
                                                              This field is effectively required, but due to backwards compatibility is
                                                              allowed to be empty. Instances of this type with an empty value here are
                                                              almost certainly wrong.
                                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                            type: string
                                                          optional:
                                                            description: Specify whether
                                                              the Secret or its key
                                                              must be defined
                                                            type: boolean
                                                        required:
                                                        - key
                                                        type: object
                                                        x-kubernetes-map-type: atomic
                                                    type: object
                                                  endpoint:
                                                    description: Endpoint is the hostname
                                                      of the bucket endpoint
                                                    type: string
                                                  insecure:
                                                    description: Insecure will connect
                                                      to the service with TLS
                                                    type: boolean
                                                  key:
                                                    description: Key is the key in
                                                      the bucket where the artifact
                                                      resides
                                                    type: string
                                                  region:
                                                    description: Region contains the
                                                      optional bucket region
                                                    type: string
                                                  roleARN:
                                                    description: RoleARN is the Amazon
                                                      Resource Name (ARN) of the role
                                                      to assume.
                                                    type: string
                                                  secretKeySecret:
                                                    description: SecretKeySecret is
                                                      the secret selector to the bucket's
                                                      secret key
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  sessionTokenSecret:
                                                    description: SessionTokenSecret
                                                      is used for ephemeral credentials
                                                      like an IAM assume role or S3
                                                      access grant
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  useSDKCreds:
                                                    description: UseSDKCreds tells
                                                      the driver to figure out credentials
                                                      based on sdk defaults.
                                                    type: boolean
                                                type: object
                                              subPath:
                                                description: SubPath allows an artifact
                                                  to be sourced from a subpath within
                                                  the specified source
                                                type: string
                                            required:
                                            - name
                                            type: object
                                            x-kubernetes-validations:
                                            - message: at most one artifact location
                                                can be specified
                                              rule: '(has(self.s3) ? 1 : 0) + (has(self.git)
                                                ? 1 : 0) + (has(self.http) ? 1 : 0)
                                                + (has(self.artifactory) ? 1 : 0)
                                                + (has(self.hdfs) ? 1 : 0) + (has(self.raw)
                                                ? 1 : 0) + (has(self.oss) ? 1 : 0)
                                                + (has(self.gcs) ? 1 : 0) + (has(self.azure)
                                                ? 1 : 0) + (has(self.plugin) ? 1 :
                                                0) <= 1'
                                          type: array
                                        parameters:
                                          description: Parameters is the list of parameters
                                            to pass to the template or workflow
                                          items:
                                            description: Parameter indicate a passed
                                              string parameter to a service template
                                              with an optional default value
                                            properties:
                                              default:
                                                description: Default is the default
                                                  value to use for an input parameter
                                                  if a value was not supplied
                                                type: string
                                              description:
                                                description: Description is the parameter
                                                  description
                                                type: string
                                              enum:
                                                description: Enum holds a list of
                                                  string values to choose from, for
                                                  the actual value of the parameter
                                                items:
                                                  description: |-
                                                    * It's JSON type is just string.
                                                    * It will unmarshall int64, int32, float64, float32, boolean, a plain string and represents it as string.
                                                    * It will marshall back to string - marshalling is not symmetric.
                                                  type: string
                                                minItems: 1
                                                type: array
                                              globalName:
                                                description: |-
                                                  GlobalName exports an output parameter to the global scope, making it available as
                                                  '{{workflow.outputs.parameters.XXXX}} and in workflow.status.outputs.parameters
                                                type: string
                                              name:
                                                description: Name is the parameter
                                                  name
                                                pattern: ^[-a-zA-Z0-9_]+$
                                                type: string
                                              value:
                                                description: |-
                                                  Value is the literal value to use for the parameter.
                                                  If specified in the context of an input parameter, any passed values take precedence over the specified value
                                                type: string
                                              valueFrom:
                                                description: ValueFrom is the source
                                                  for the output parameter's value
                                                properties:
                                                  configMapKeyRef:
                                                    description: ConfigMapKeyRef is
                                                      configmap selector for input
                                                      parameter configuration
                                                    properties:
                                                      key:
                                                        description: The key to select.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the ConfigMap or its key
                                                          must be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  default:
                                                    description: Default specifies
                                                      a value to be used if retrieving
                                                      the value from the specified
                                                      source fails
                                                    type: string
                                                  event:
                                                    description: Selector (https://github.com/expr-lang/expr)
                                                      that is evaluated against the
                                                      event to get the value of the
                                                      parameter. E.g. `payload.message`
                                                    type: string
                                                  expression:
                                                    description: Expression, if defined,
                                                      is evaluated to specify the
                                                      value for the parameter
                                                    type: string
                                                  jqFilter:
                                                    description: JQFilter expression
                                                      against the resource object
                                                      in resource templates
                                                    type: string
                                                  jsonPath:
                                                    description: JSONPath of a resource
                                                      to retrieve an output parameter
                                                      value from in resource templates
                                                    type: string
                                                  parameter:
                                                    description: |-
                                                      Parameter reference to a step or dag task in which to retrieve an output parameter value from
                                                      (e.g. '{{steps.mystep.outputs.myparam}}')
                                                    type: string
                                                  path:
                                                    description: Path in the container
                                                      to retrieve an output parameter
                                                      value from in container templates
                                                    type: string
                                                  supplied:
                                                    description: Supplied value to
                                                      be filled in directly, either
                                                      through the CLI, API, etc.
                                                    type: object
                                                type: object
                                            required:
                                            - name
                                            type: object
                                          type: array
                                      type: object
                                    expression:
                                      description: |-
                                        Expression is a condition expression for when a node will be retried. If it evaluates to false, the node will not
                                        be retried and the retry strategy will be ignored
                                      type: string
                                    template:
                                      description: Template is the name of the template
                                        to execute by the hook
                                      type: string
                                    templateRef:
                                      description: TemplateRef is the reference to
                                        the template resource to execute by the hook
                                      properties:
                                        clusterScope:
                                          description: ClusterScope indicates the
                                            referred template is cluster scoped (i.e.
                                            a ClusterWorkflowTemplate).
                                          type: boolean
                                        name:
                                          description: Name is the resource name of
                                            the template.
                                          type: string
                                        template:
                                          description: Template is the name of referred
                                            template in the resource.
                                          type: string
                                      type: object
                                  type: object
                                description: |-
                                  Hooks hold the lifecycle hook which is invoked at lifecycle of
                                  task, irrespective of the success, failure, or error status of the primary task
                                type: object
                              inline:
                                description: |-
                                  Inline is the template. Template must be empty if this is declared (and vice-versa).
                                  Note: As mentioned in the corresponding definition in WorkflowStep, this struct is defined recursively,
                                  so we need "x-kubernetes-preserve-unknown-fields: true" in the validation schema.
                                x-kubernetes-preserve-unknown-fields: true
                              name:
                                description: Name is the name of the target
                                maxLength: 128
                                pattern: ^[a-zA-Z0-9][-a-zA-Z0-9]*$
                                type: string
                              onExit:
                                description: |-
                                  OnExit is a template reference which is invoked at the end of the
                                  template, irrespective of the success, failure, or error of the
                                  primary template.
                                  DEPRECATED: Use Hooks[exit].Template instead.
                                type: string
                              template:
                                description: Name of template to execute
                                type: string
                              templateRef:
                                description: TemplateRef is the reference to the template
                                  resource to execute.
                                properties:
                                  clusterScope:
                                    description: ClusterScope indicates the referred
                                      template is cluster scoped (i.e. a ClusterWorkflowTemplate).
                                    type: boolean
                                  name:
                                    description: Name is the resource name of the
                                      template.
                                    type: string
                                  template:
                                    description: Template is the name of referred
                                      template in the resource.
                                    type: string
                                type: object
                              when:
                                description: When is an expression in which the task
                                  should conditionally execute
                                type: string
                              withItems:
                                description: |-
                                  WithItems expands a task into multiple parallel tasks from the items in the list
                                  Note: The structure of WithItems is free-form, so we need
                                  "x-kubernetes-preserve-unknown-fields: true" in the validation schema.
                                x-kubernetes-preserve-unknown-fields: true
                              withParam:
                                description: |-
                                  WithParam expands a task into multiple parallel tasks from the value in the parameter,
                                  which is expected to be a JSON list.
                                type: string
                              withSequence:
                                description: WithSequence expands a task into a numeric
                                  sequence
                                properties:
                                  count:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    description: 'Count is number of elements in the
                                      sequence (default: 0). Not to be used with end'
                                    x-kubernetes-int-or-string: true
                                  end:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    description: 'Number at which to end the sequence
                                      (default: 0). Not to be used with Count'
                                    x-kubernetes-int-or-string: true
                                  format:
                                    description: Format is a printf format string
                                      to format the value in the sequence
                                    type: string
                                  start:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    description: 'Number at which to start the sequence
                                      (default: 0)'
                                    x-kubernetes-int-or-string: true
                                type: object
                                x-kubernetes-validations:
                                - message: only one of count or end can be defined
                                  rule: '!(has(self.count) && has(self.end))'
                            required:
                            - name
                            type: object
                            x-kubernetes-validations:
                            - message: cannot use both 'depends' and 'dependencies'
                              rule: '!has(self.depends) || !has(self.dependencies)'
                            - message: cannot use 'continueOn' when using 'depends'
                              rule: '!has(self.depends) || !has(self.continueOn)'
                            - message: task name cannot begin with a digit when using
                                'depends' or 'dependencies'
                              rule: '!(has(self.depends) || has(self.dependencies))
                                || !self.name.matches(''^[0-9]'')'
                          maxItems: 200
                          minItems: 1
                          type: array
                      required:
                      - tasks
                      type: object
                    data:
                      description: Data is a data template
                      properties:
                        source:
                          description: Source sources external data into a data template
                          properties:
                            artifactPaths:
                              description: ArtifactPaths is a data transformation
                                that collects a list of artifact paths
                              properties:
                                archive:
                                  description: Archive controls how the artifact will
                                    be saved to the artifact repository.
                                  properties:
                                    none:
                                      description: |-
                                        NoneStrategy indicates to skip tar process and upload the files or directory tree as independent
                                        files. Note that if the artifact is a directory, the artifact driver must support the ability to
                                        save/load the directory appropriately.
                                      type: object
                                    tar:
                                      description: TarStrategy will tar and gzip the
                                        file or directory when saving
                                      properties:
                                        compressionLevel:
                                          description: |-
                                            CompressionLevel specifies the gzip compression level to use for the artifact.
                                            Defaults to gzip.DefaultCompression.
                                          format: int32
                                          type: integer
                                      type: object
                                    zip:
                                      description: ZipStrategy will unzip zipped input
                                        artifacts
                                      type: object
                                  type: object
                                archiveLogs:
                                  description: ArchiveLogs indicates if the container
                                    logs should be archived
                                  type: boolean
                                artifactGC:
                                  description: ArtifactGC describes the strategy to
                                    use when to deleting an artifact from completed
                                    or deleted workflows
                                  properties:
                                    podMetadata:
                                      description: PodMetadata is an optional field
                                        for specifying the Labels and Annotations
                                        that should be assigned to the Pod doing the
                                        deletion
                                      properties:
                                        annotations:
                                          additionalProperties:
                                            type: string
                                          type: object
                                        labels:
                                          additionalProperties:
                                            type: string
                                          type: object
                                      type: object
                                    serviceAccountName:
                                      description: ServiceAccountName is an optional
                                        field for specifying the Service Account that
                                        should be assigned to the Pod doing the deletion
                                      type: string
                                    strategy:
                                      description: Strategy is the strategy to use.
                                      enum:
                                      - ""
                                      - OnWorkflowCompletion
                                      - OnWorkflowDeletion
                                      - Never
                                      type: string
                                  type: object
                                artifactory:
                                  description: Artifactory contains artifactory artifact
                                    location details
                                  properties:
                                    passwordSecret:
                                      description: PasswordSecret is the secret selector
                                        to the repository password
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    url:
                                      description: URL of the artifact
                                      type: string
                                    usernameSecret:
                                      description: UsernameSecret is the secret selector
                                        to the repository username
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  required:
                                  - url
                                  type: object
                                azure:
                                  description: Azure contains Azure Storage artifact
                                    location details
                                  properties:
                                    accountKeySecret:
                                      description: AccountKeySecret is the secret
                                        selector to the Azure Blob Storage account
                                        access key
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    blob:
                                      description: Blob is the blob name (i.e., path)
                                        in the container where the artifact resides
                                      type: string
                                    container:
                                      description: Container is the container where
                                        resources will be stored
                                      type: string
                                    endpoint:
                                      description: Endpoint is the service url associated
                                        with an account. It is most likely "https://<ACCOUNT_NAME>.blob.core.windows.net"
                                      type: string
                                    useSDKCreds:
                                      description: UseSDKCreds tells the driver to
                                        figure out credentials based on sdk defaults.
                                      type: boolean
                                  required:
                                  - blob
                                  - container
                                  - endpoint
                                  type: object
                                deleted:
                                  description: Has this been deleted?
                                  type: boolean
                                from:
                                  description: From allows an artifact to reference
                                    an artifact from a previous step
                                  type: string
                                fromExpression:
                                  description: FromExpression, if defined, is evaluated
                                    to specify the value for the artifact
                                  type: string
                                gcs:
                                  description: GCS contains GCS artifact location
                                    details
                                  properties:
                                    bucket:
                                      description: Bucket is the name of the bucket
                                      type: string
                                    key:
                                      description: Key is the path in the bucket where
                                        the artifact resides
                                      type: string
                                    serviceAccountKeySecret:
                                      description: ServiceAccountKeySecret is the
                                        secret selector to the bucket's service account
                                        key
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  required:
                                  - key
                                  type: object
                                git:
                                  description: Git contains git artifact location
                                    details
                                  properties:
                                    branch:
                                      description: Branch is the branch to fetch when
                                        `SingleBranch` is enabled
                                      type: string
                                    depth:
                                      description: |-
                                        Depth specifies clones/fetches should be shallow and include the given
                                        number of commits from the branch tip
                                      format: int64
                                      type: integer
                                    disableSubmodules:
                                      description: DisableSubmodules disables submodules
                                        during git clone
                                      type: boolean
                                    fetch:
                                      description: Fetch specifies a number of refs
                                        that should be fetched before checkout
                                      items:
                                        type: string
                                      type: array
                                    insecureIgnoreHostKey:
                                      description: InsecureIgnoreHostKey disables
                                        SSH strict host key checking during git clone
                                      type: boolean
                                    insecureSkipTLS:
                                      description: InsecureSkipTLS disables server
                                        certificate verification resulting in insecure
                                        HTTPS connections
                                      type: boolean
                                    passwordSecret:
                                      description: PasswordSecret is the secret selector
                                        to the repository password
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    repo:
                                      description: Repo is the git repository
                                      type: string
                                    revision:
                                      description: Revision is the git commit, tag,
                                        branch to checkout
                                      type: string
                                    singleBranch:
                                      description: SingleBranch enables single branch
                                        clone, using the `branch` parameter
                                      type: boolean
                                    sshPrivateKeySecret:
                                      description: SSHPrivateKeySecret is the secret
                                        selector to the repository ssh private key
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    usernameSecret:
                                      description: UsernameSecret is the secret selector
                                        to the repository username
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  required:
                                  - repo
                                  type: object
                                globalName:
                                  description: |-
                                    GlobalName exports an output artifact to the global scope, making it available as
                                    '{{workflow.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts
                                  type: string
                                hdfs:
                                  description: HDFS contains HDFS artifact location
                                    details
                                  properties:
                                    addresses:
                                      description: Addresses is accessible addresses
                                        of HDFS name nodes
                                      items:
                                        type: string
                                      type: array
                                    dataTransferProtection:
                                      description: |-
                                        DataTransferProtection is the protection level for HDFS data transfer.
                                        It corresponds to the dfs.data.transfer.protection configuration in HDFS.
                                      type: string
                                    force:
                                      description: Force copies a file forcibly even
                                        if it exists
                                      type: boolean
                                    hdfsUser:
                                      description: |-
                                        HDFSUser is the user to access HDFS file system.
                                        It is ignored if either ccache or keytab is used.
                                      type: string
                                    krbCCacheSecret:
                                      description: |-
                                        KrbCCacheSecret is the secret selector for Kerberos ccache
                                        Either ccache or keytab can be set to use Kerberos.
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    krbConfigConfigMap:
                                      description: |-
                                        KrbConfig is the configmap selector for Kerberos config as string
                                        It must be set if either ccache or keytab is used.
                                      properties:
                                        key:
                                          description: The key to select.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the ConfigMap
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    krbKeytabSecret:
                                      description: |-
                                        KrbKeytabSecret is the secret selector for Kerberos keytab
                                        Either ccache or keytab can be set to use Kerberos.
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    krbRealm:
                                      description: |-
                                        KrbRealm is the Kerberos realm used with Kerberos keytab
                                        It must be set if keytab is used.
                                      type: string
                                    krbServicePrincipalName:
                                      description: |-
                                        KrbServicePrincipalName is the principal name of Kerberos service
                                        It must be set if either ccache or keytab is used.
                                      type: string
                                    krbUsername:
                                      description: |-
                                        KrbUsername is the Kerberos username used with Kerberos keytab
                                        It must be set if keytab is used.
                                      type: string
                                    path:
                                      description: Path is a file path in HDFS
                                      type: string
                                  required:
                                  - path
                                  type: object
                                http:
                                  description: HTTP contains HTTP artifact location
                                    details
                                  properties:
                                    auth:
                                      description: Auth contains information for client
                                        authentication
                                      properties:
                                        basicAuth:
                                          description: BasicAuth describes the secret
                                            selectors required for basic authentication
                                          properties:
                                            passwordSecret:
                                              description: PasswordSecret is the secret
                                                selector to the repository password
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            usernameSecret:
                                              description: UsernameSecret is the secret
                                                selector to the repository username
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                          type: object
                                        clientCert:
                                          description: ClientCertAuth holds necessary
                                            information for client authentication
                                            via certificates
                                          properties:
                                            clientCertSecret:
                                              description: SecretKeySelector selects
                                                a key of a Secret.
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            clientKeySecret:
                                              description: SecretKeySelector selects
                                                a key of a Secret.
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                          type: object
                                        oauth2:
                                          description: OAuth2Auth holds all information
                                            for client authentication via OAuth2 tokens
                                          properties:
                                            clientIDSecret:
                                              description: SecretKeySelector selects
                                                a key of a Secret.
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            clientSecretSecret:
                                              description: SecretKeySelector selects
                                                a key of a Secret.
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            endpointParams:
                                              items:
                                                description: EndpointParam is for
                                                  requesting optional fields that
                                                  should be sent in the oauth request
                                                properties:
                                                  key:
                                                    description: Name is the header
                                                      name
                                                    type: string
                                                  value:
                                                    description: Value is the literal
                                                      value to use for the header
                                                    type: string
                                                required:
                                                - key
                                                type: object
                                              type: array
                                            scopes:
                                              items:
                                                type: string
                                              type: array
                                            tokenURLSecret:
                                              description: SecretKeySelector selects
                                                a key of a Secret.
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                          type: object
                                      type: object
                                    headers:
                                      description: Headers are an optional list of
                                        headers to send with HTTP requests for artifacts
                                      items:
                                        description: Header indicate a key-value request
                                          header to be used when fetching artifacts
                                          over HTTP
                                        properties:
                                          name:
                                            description: Name is the header name
                                            type: string
                                          value:
                                            description: Value is the literal value
                                              to use for the header
                                            type: string
                                        required:
                                        - name
                                        - value
                                        type: object
                                      type: array
                                    url:
                                      description: URL of the artifact
                                      type: string
                                  required:
                                  - url
                                  type: object
                                mode:
                                  description: |-
                                    mode bits to use on this file, must be a value between 0 and 0777.
                                    Set when loading input artifacts. It is recommended to set the mode value
                                    to ensure the artifact has the expected permissions in your container.
                                  format: int32
                                  maximum: 511
                                  minimum: 0
                                  type: integer
                                name:
                                  description: name of the artifact. must be unique
                                    within a template's inputs/outputs.
                                  pattern: ^[-a-zA-Z0-9_{}.]+$
                                  type: string
                                optional:
                                  description: Make Artifacts optional, if Artifacts
                                    doesn't generate or exist
                                  type: boolean
                                oss:
                                  description: OSS contains OSS artifact location
                                    details
                                  properties:
                                    accessKeySecret:
                                      description: AccessKeySecret is the secret selector
                                        to the bucket's access key
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    bucket:
                                      description: Bucket is the name of the bucket
                                      type: string
                                    createBucketIfNotPresent:
                                      description: CreateBucketIfNotPresent tells
                                        the driver to attempt to create the OSS bucket
                                        for output artifacts, if it doesn't exist
                                      type: boolean
                                    endpoint:
                                      description: Endpoint is the hostname of the
                                        bucket endpoint
                                      type: string
                                    key:
                                      description: Key is the path in the bucket where
                                        the artifact resides
                                      type: string
                                    lifecycleRule:
                                      description: LifecycleRule specifies how to
                                        manage bucket's lifecycle
                                      properties:
                                        markDeletionAfterDays:
                                          description: MarkDeletionAfterDays is the
                                            number of days before we delete objects
                                            in the bucket
                                          format: int32
                                          type: integer
                                        markInfrequentAccessAfterDays:
                                          description: MarkInfrequentAccessAfterDays
                                            is the number of days before we convert
                                            the objects in the bucket to Infrequent
                                            Access (IA) storage type
                                          format: int32
                                          type: integer
                                      type: object
                                    secretKeySecret:
                                      description: SecretKeySecret is the secret selector
                                        to the bucket's secret key
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    securityToken:
                                      description: 'SecurityToken is the user''s temporary
                                        security token. For more details, check out:
                                        https://www.alibabacloud.com/help/doc-detail/100624.htm'
                                      type: string
                                    useSDKCreds:
                                      description: UseSDKCreds tells the driver to
                                        figure out credentials based on sdk defaults.
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                path:
                                  description: Path is the container path to the artifact
                                  type: string
                                plugin:
                                  description: Plugin contains plugin artifact location
                                    details
                                  properties:
                                    configuration:
                                      description: Configuration is the plugin defined
                                        configuration for the artifact driver plugin
                                      type: string
                                    connectionTimeoutSeconds:
                                      description: ConnectionTimeoutSeconds is the
                                        timeout for the artifact driver connection,
                                        overriding the driver's timeout
                                      format: int32
                                      type: integer
                                    key:
                                      description: Key is the path in the artifact
                                        repository where the artifact resides
                                      type: string
                                    name:
                                      description: Name is the name of the artifact
                                        driver plugin
                                      type: string
                                  required:
                                  - key
                                  type: object
                                raw:
                                  description: Raw contains raw artifact location
                                    details
                                  properties:
                                    data:
                                      description: Data is the string contents of
                                        the artifact
                                      type: string
                                  required:
                                  - data
                                  type: object
                                recurseMode:
                                  description: If mode is set, apply the permission
                                    recursively into the artifact if it is a folder
                                  type: boolean
                                s3:
                                  description: S3 contains S3 artifact location details
                                  properties:
                                    accessKeySecret:
                                      description: AccessKeySecret is the secret selector
                                        to the bucket's access key
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    bucket:
                                      description: Bucket is the name of the bucket
                                      type: string
                                    caSecret:
                                      description: CASecret specifies the secret that
                                        contains the CA, used to verify the TLS connection
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    createBucketIfNotPresent:
                                      description: CreateBucketIfNotPresent tells
                                        the driver to attempt to create the S3 bucket
                                        for output artifacts, if it doesn't exist.
                                        Setting Enabled Encryption will apply either
                                        SSE-S3 to the bucket if KmsKeyId is not set
                                        or SSE-KMS if it is.
                                      properties:
                                        objectLocking:
                                          description: ObjectLocking Enable object
                                            locking
                                          type: boolean
                                      type: object
                                    encryptionOptions:
                                      description: S3EncryptionOptions used to determine
                                        encryption options during s3 operations
                                      properties:
                                        enableEncryption:
                                          description: EnableEncryption tells the
                                            driver to encrypt objects if set to true.
                                            If kmsKeyId and serverSideCustomerKeySecret
                                            are not set, SSE-S3 will be used
                                          type: boolean
                                        kmsEncryptionContext:
                                          description: KmsEncryptionContext is a json
                                            blob that contains an encryption context.
                                            See https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
                                            for more information
                                          type: string
                                        kmsKeyId:
                                          description: KMSKeyId tells the driver to
                                            encrypt the object using the specified
                                            KMS Key.
                                          type: string
                                        serverSideCustomerKeySecret:
                                          description: ServerSideCustomerKeySecret
                                            tells the driver to encrypt the output
                                            artifacts using SSE-C with the specified
                                            secret.
                                          properties:
                                            key:
                                              description: The key of the secret to
                                                select from.  Must be a valid secret
                                                key.
                                              type: string
                                            name:
                                              default: ""
                                              description: |-
                                                Name of the referent.
                                                This field is effectively required, but due to backwards compatibility is
                                                allowed to be empty. Instances of this type with an empty value here are
                                                almost certainly wrong.
                                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                              type: string
                                            optional:
                                              description: Specify whether the Secret
                                                or its key must be defined
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                      type: object
                                    endpoint:
                                      description: Endpoint is the hostname of the
                                        bucket endpoint
                                      type: string
                                    insecure:
                                      description: Insecure will connect to the service
                                        with TLS
                                      type: boolean
                                    key:
                                      description: Key is the key in the bucket where
                                        the artifact resides
                                      type: string
                                    region:
                                      description: Region contains the optional bucket
                                        region
                                      type: string
                                    roleARN:
                                      description: RoleARN is the Amazon Resource
                                        Name (ARN) of the role to assume.
                                      type: string
                                    secretKeySecret:
                                      description: SecretKeySecret is the secret selector
                                        to the bucket's secret key
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    sessionTokenSecret:
                                      description: SessionTokenSecret is used for
                                        ephemeral credentials like an IAM assume role
                                        or S3 access grant
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    useSDKCreds:
                                      description: UseSDKCreds tells the driver to
                                        figure out credentials based on sdk defaults.
                                      type: boolean
                                  type: object
                                subPath:
                                  description: SubPath allows an artifact to be sourced
                                    from a subpath within the specified source
                                  type: string
                              required:
                              - name
                              type: object
                              x-kubernetes-validations:
                              - message: at most one artifact location can be specified
                                rule: '(has(self.s3) ? 1 : 0) + (has(self.git) ? 1
                                  : 0) + (has(self.http) ? 1 : 0) + (has(self.artifactory)
                                  ? 1 : 0) + (has(self.hdfs) ? 1 : 0) + (has(self.raw)
                                  ? 1 : 0) + (has(self.oss) ? 1 : 0) + (has(self.gcs)
                                  ? 1 : 0) + (has(self.azure) ? 1 : 0) + (has(self.plugin)
                                  ? 1 : 0) <= 1'
                          type: object
                        transformation:
                          description: Transformation applies a set of transformations
                          items:
                            properties:
                              expression:
                                description: Expression defines an expr expression
                                  to apply
                                type: string
                            required:
                            - expression
                            type: object
                          type: array
                      required:
                      - source
                      - transformation
                      type: object
                    executor:
                      description: Executor holds configurations of the executor container.
                      properties:
                        serviceAccountName:
                          description: ServiceAccountName specifies the service account
                            name of the executor container.
                          type: string
                      type: object
                    failFast:
                      description: |-
                        FailFast, if specified, will fail this template if any of its child pods has failed. This is useful for when this
                        template is expanded with `withItems`, etc.
                      type: boolean
                    hostAliases:
                      description: HostAliases is an optional list of hosts and IPs
                        that will be injected into the pod spec
                      items:
                        description: |-
                          HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the
                          pod's hosts file.
                        properties:
                          hostnames:
                            description: Hostnames for the above IP address.
                            items:
                              type: string
                            type: array
                            x-kubernetes-list-type: atomic
                          ip:
                            description: IP address of the host file entry.
                            type: string
                        required:
                        - ip
                        type: object
                      type: array
                    http:
                      description: HTTP makes a HTTP request
                      properties:
                        body:
                          description: Body is content of the HTTP Request
                          type: string
                        bodyFrom:
                          description: BodyFrom is  content of the HTTP Request as
                            Bytes
                          properties:
                            bytes:
                              format: byte
                              type: string
                          type: object
                        headers:
                          description: Headers are an optional list of headers to
                            send with HTTP requests
                          items:
                            properties:
                              name:
                                type: string
                              value:
                                type: string
                              valueFrom:
                                properties:
                                  secretKeyRef:
                                    description: SecretKeySelector selects a key of
                                      a Secret.
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                type: object
                            required:
                            - name
                            type: object
                          type: array
                        insecureSkipVerify:
                          description: InsecureSkipVerify is a bool when if set to
                            true will skip TLS verification for the HTTP client
                          type: boolean
                        method:
                          description: Method is HTTP methods for HTTP Request
                          type: string
                        successCondition:
                          description: SuccessCondition is an expression if evaluated
                            to true is considered successful
                          type: string
                        timeoutSeconds:
                          description: TimeoutSeconds is request timeout for HTTP
                            Request. Default is 30 seconds
                          format: int64
                          type: integer
                        url:
                          description: URL of the HTTP Request
                          type: string
                      required:
                      - url
                      type: object
                    initContainers:
                      description: InitContainers is a list of containers which run
                        before the main container.
                      items:
                        description: UserContainer is a container specified by a user.
                        properties:
                          args:
                            description: |-
                              Arguments to the entrypoint.
                              The container image's CMD is used if this is not provided.
                              Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
                              cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
                              to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
                              produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
                              of whether the variable exists or not. Cannot be updated.
                              More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
                            items:
                              type: string
                            type: array
                            x-kubernetes-list-type: atomic
                          command:
                            description: |-
                              Entrypoint array. Not executed within a shell.
                              The container image's ENTRYPOINT is used if this is not provided.
                              Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
                              cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
                              to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
                              produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
                              of whether the variable exists or not. Cannot be updated.
                              More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
                            items:
                              type: string
                            type: array
                            x-kubernetes-list-type: atomic
                          env:
                            description: |-
                              List of environment variables to set in the container.
                              Cannot be updated.
                            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 previously 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. Double $$ are reduced
                                    to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
                                    "$$(VAR_NAME)" will produce the string literal "$(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:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the ConfigMap
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    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
                                      x-kubernetes-map-type: atomic
                                    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
                                      x-kubernetes-map-type: atomic
                                    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:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  type: object
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          envFrom:
                            description: |-
                              List of sources to populate environment variables in the container.
                              The keys defined within a source must be a C_IDENTIFIER. All invalid keys
                              will be reported as an event when the container is starting. When a key exists in multiple
                              sources, the value associated with the last source will take precedence.
                              Values defined by an Env with a duplicate key will take precedence.
                              Cannot be updated.
                            items:
                              description: EnvFromSource represents the source of
                                a set of ConfigMaps or Secrets
                              properties:
                                configMapRef:
                                  description: The ConfigMap to select from
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                    optional:
                                      description: Specify whether the ConfigMap must
                                        be defined
                                      type: boolean
                                  type: object
                                  x-kubernetes-map-type: atomic
                                prefix:
                                  description: Optional text to prepend to the name
                                    of each environment variable. Must be a C_IDENTIFIER.
                                  type: string
                                secretRef:
                                  description: The Secret to select from
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                    optional:
                                      description: Specify whether the Secret must
                                        be defined
                                      type: boolean
                                  type: object
                                  x-kubernetes-map-type: atomic
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          image:
                            description: |-
                              Container image name.
                              More info: https://kubernetes.io/docs/concepts/containers/images
                              This field is optional to allow higher level config management to default or override
                              container images in workload controllers like Deployments and StatefulSets.
                            type: string
                          imagePullPolicy:
                            description: |-
                              Image pull policy.
                              One of Always, Never, IfNotPresent.
                              Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
                              Cannot be updated.
                              More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
                            type: string
                          lifecycle:
                            description: |-
                              Actions that the management system should take in response to container lifecycle events.
                              Cannot be updated.
                            properties:
                              postStart:
                                description: |-
                                  PostStart is called immediately after a container is created. If the handler fails,
                                  the container is terminated and restarted according to its restart policy.
                                  Other management of the container blocks until the hook completes.
                                  More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
                                properties:
                                  exec:
                                    description: Exec specifies a command to execute
                                      in the container.
                                    properties:
                                      command:
                                        description: |-
                                          Command is the command line to execute inside the container, the working directory for the
                                          command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                          not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                          a shell, you need to explicitly call out to that shell.
                                          Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                  httpGet:
                                    description: HTTPGet specifies an HTTP GET request
                                      to perform.
                                    properties:
                                      host:
                                        description: |-
                                          Host name to connect to, defaults to the pod IP. You probably want to set
                                          "Host" in httpHeaders instead.
                                        type: string
                                      httpHeaders:
                                        description: Custom headers to set in the
                                          request. HTTP allows repeated headers.
                                        items:
                                          description: HTTPHeader describes a custom
                                            header to be used in HTTP probes
                                          properties:
                                            name:
                                              description: |-
                                                The header field name.
                                                This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                              type: string
                                            value:
                                              description: The header field value
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      path:
                                        description: Path to access on the HTTP server.
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: |-
                                          Name or number of the port to access on the container.
                                          Number must be in the range 1 to 65535.
                                          Name must be an IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        description: |-
                                          Scheme to use for connecting to the host.
                                          Defaults to HTTP.
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  sleep:
                                    description: Sleep represents a duration that
                                      the container should sleep.
                                    properties:
                                      seconds:
                                        description: Seconds is the number of seconds
                                          to sleep.
                                        format: int64
                                        type: integer
                                    required:
                                    - seconds
                                    type: object
                                  tcpSocket:
                                    description: |-
                                      Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
                                      for backward compatibility. There is no validation of this field and
                                      lifecycle hooks will fail at runtime when it is specified.
                                    properties:
                                      host:
                                        description: 'Optional: Host name to connect
                                          to, defaults to the pod IP.'
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: |-
                                          Number or name of the port to access on the container.
                                          Number must be in the range 1 to 65535.
                                          Name must be an IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                    required:
                                    - port
                                    type: object
                                type: object
                              preStop:
                                description: |-
                                  PreStop is called immediately before a container is terminated due to an
                                  API request or management event such as liveness/startup probe failure,
                                  preemption, resource contention, etc. The handler is not called if the
                                  container crashes or exits. The Pod's termination grace period countdown begins before the
                                  PreStop hook is executed. Regardless of the outcome of the handler, the
                                  container will eventually terminate within the Pod's termination grace
                                  period (unless delayed by finalizers). Other management of the container blocks until the hook completes
                                  or until the termination grace period is reached.
                                  More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
                                properties:
                                  exec:
                                    description: Exec specifies a command to execute
                                      in the container.
                                    properties:
                                      command:
                                        description: |-
                                          Command is the command line to execute inside the container, the working directory for the
                                          command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                          not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                          a shell, you need to explicitly call out to that shell.
                                          Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                  httpGet:
                                    description: HTTPGet specifies an HTTP GET request
                                      to perform.
                                    properties:
                                      host:
                                        description: |-
                                          Host name to connect to, defaults to the pod IP. You probably want to set
                                          "Host" in httpHeaders instead.
                                        type: string
                                      httpHeaders:
                                        description: Custom headers to set in the
                                          request. HTTP allows repeated headers.
                                        items:
                                          description: HTTPHeader describes a custom
                                            header to be used in HTTP probes
                                          properties:
                                            name:
                                              description: |-
                                                The header field name.
                                                This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                              type: string
                                            value:
                                              description: The header field value
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      path:
                                        description: Path to access on the HTTP server.
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: |-
                                          Name or number of the port to access on the container.
                                          Number must be in the range 1 to 65535.
                                          Name must be an IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        description: |-
                                          Scheme to use for connecting to the host.
                                          Defaults to HTTP.
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  sleep:
                                    description: Sleep represents a duration that
                                      the container should sleep.
                                    properties:
                                      seconds:
                                        description: Seconds is the number of seconds
                                          to sleep.
                                        format: int64
                                        type: integer
                                    required:
                                    - seconds
                                    type: object
                                  tcpSocket:
                                    description: |-
                                      Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
                                      for backward compatibility. There is no validation of this field and
                                      lifecycle hooks will fail at runtime when it is specified.
                                    properties:
                                      host:
                                        description: 'Optional: Host name to connect
                                          to, defaults to the pod IP.'
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: |-
                                          Number or name of the port to access on the container.
                                          Number must be in the range 1 to 65535.
                                          Name must be an IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                    required:
                                    - port
                                    type: object
                                type: object
                              stopSignal:
                                description: |-
                                  StopSignal defines which signal will be sent to a container when it is being stopped.
                                  If not specified, the default is defined by the container runtime in use.
                                  StopSignal can only be set for Pods with a non-empty .spec.os.name
                                type: string
                            type: object
                          livenessProbe:
                            description: |-
                              Periodic probe of container liveness.
                              Container will be restarted if the probe fails.
                              Cannot be updated.
                              More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                            properties:
                              exec:
                                description: Exec specifies a command to execute in
                                  the container.
                                properties:
                                  command:
                                    description: |-
                                      Command is the command line to execute inside the container, the working directory for the
                                      command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                      not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                      a shell, you need to explicitly call out to that shell.
                                      Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              failureThreshold:
                                description: |-
                                  Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                  Defaults to 3. Minimum value is 1.
                                format: int32
                                type: integer
                              grpc:
                                description: GRPC specifies a GRPC HealthCheckRequest.
                                properties:
                                  port:
                                    description: Port number of the gRPC service.
                                      Number must be in the range 1 to 65535.
                                    format: int32
                                    type: integer
                                  service:
                                    default: ""
                                    description: |-
                                      Service is the name of the service to place in the gRPC HealthCheckRequest
                                      (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                      If this is not specified, the default behavior is defined by gRPC.
                                    type: string
                                required:
                                - port
                                type: object
                              httpGet:
                                description: HTTPGet specifies an HTTP GET request
                                  to perform.
                                properties:
                                  host:
                                    description: |-
                                      Host name to connect to, defaults to the pod IP. You probably want to set
                                      "Host" in httpHeaders instead.
                                    type: string
                                  httpHeaders:
                                    description: Custom headers to set in the request.
                                      HTTP allows repeated headers.
                                    items:
                                      description: HTTPHeader describes a custom header
                                        to be used in HTTP probes
                                      properties:
                                        name:
                                          description: |-
                                            The header field name.
                                            This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                          type: string
                                        value:
                                          description: The header field value
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  path:
                                    description: Path to access on the HTTP server.
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    description: |-
                                      Name or number of the port to access on the container.
                                      Number must be in the range 1 to 65535.
                                      Name must be an IANA_SVC_NAME.
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    description: |-
                                      Scheme to use for connecting to the host.
                                      Defaults to HTTP.
                                    type: string
                                required:
                                - port
                                type: object
                              initialDelaySeconds:
                                description: |-
                                  Number of seconds after the container has started before liveness probes are initiated.
                                  More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                format: int32
                                type: integer
                              periodSeconds:
                                description: |-
                                  How often (in seconds) to perform the probe.
                                  Default to 10 seconds. Minimum value is 1.
                                format: int32
                                type: integer
                              successThreshold:
                                description: |-
                                  Minimum consecutive successes for the probe to be considered successful after having failed.
                                  Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                                format: int32
                                type: integer
                              tcpSocket:
                                description: TCPSocket specifies a connection to a
                                  TCP port.
                                properties:
                                  host:
                                    description: 'Optional: Host name to connect to,
                                      defaults to the pod IP.'
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    description: |-
                                      Number or name of the port to access on the container.
                                      Number must be in the range 1 to 65535.
                                      Name must be an IANA_SVC_NAME.
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                              terminationGracePeriodSeconds:
                                description: |-
                                  Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
                                  The grace period is the duration in seconds after the processes running in the pod are sent
                                  a termination signal and the time when the processes are forcibly halted with a kill signal.
                                  Set this value longer than the expected cleanup time for your process.
                                  If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
                                  value overrides the value provided by the pod spec.
                                  Value must be non-negative integer. The value zero indicates stop immediately via
                                  the kill signal (no opportunity to shut down).
                                  This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
                                  Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
                                format: int64
                                type: integer
                              timeoutSeconds:
                                description: |-
                                  Number of seconds after which the probe times out.
                                  Defaults to 1 second. Minimum value is 1.
                                  More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                format: int32
                                type: integer
                            type: object
                          mirrorVolumeMounts:
                            description: |-
                              MirrorVolumeMounts will mount the same volumes specified in the main container
                              to the container (including artifacts), at the same mountPaths. This enables
                              dind daemon to partially see the same filesystem as the main container in
                              order to use features such as docker volume binding
                            type: boolean
                          name:
                            description: |-
                              Name of the container specified as a DNS_LABEL.
                              Each container in a pod must have a unique name (DNS_LABEL).
                              Cannot be updated.
                            type: string
                          ports:
                            description: |-
                              List of ports to expose from the container. Not specifying a port here
                              DOES NOT prevent that port from being exposed. Any port which is
                              listening on the default "0.0.0.0" address inside a container will be
                              accessible from the network.
                              Modifying this array with strategic merge patch may corrupt the data.
                              For more information See https://github.com/kubernetes/kubernetes/issues/108255.
                              Cannot be updated.
                            items:
                              description: ContainerPort represents a network port
                                in a single container.
                              properties:
                                containerPort:
                                  description: |-
                                    Number of port to expose on the pod's IP address.
                                    This must be a valid port number, 0 < x < 65536.
                                  format: int32
                                  type: integer
                                hostIP:
                                  description: What host IP to bind the external port
                                    to.
                                  type: string
                                hostPort:
                                  description: |-
                                    Number of port to expose on the host.
                                    If specified, this must be a valid port number, 0 < x < 65536.
                                    If HostNetwork is specified, this must match ContainerPort.
                                    Most containers do not need this.
                                  format: int32
                                  type: integer
                                name:
                                  description: |-
                                    If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
                                    named port in a pod must have a unique name. Name for the port that can be
                                    referred to by services.
                                  type: string
                                protocol:
                                  default: TCP
                                  description: |-
                                    Protocol for port. Must be UDP, TCP, or SCTP.
                                    Defaults to "TCP".
                                  type: string
                              required:
                              - containerPort
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - containerPort
                            - protocol
                            x-kubernetes-list-type: map
                          readinessProbe:
                            description: |-
                              Periodic probe of container service readiness.
                              Container will be removed from service endpoints if the probe fails.
                              Cannot be updated.
                              More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                            properties:
                              exec:
                                description: Exec specifies a command to execute in
                                  the container.
                                properties:
                                  command:
                                    description: |-
                                      Command is the command line to execute inside the container, the working directory for the
                                      command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                      not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                      a shell, you need to explicitly call out to that shell.
                                      Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              failureThreshold:
                                description: |-
                                  Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                  Defaults to 3. Minimum value is 1.
                                format: int32
                                type: integer
                              grpc:
                                description: GRPC specifies a GRPC HealthCheckRequest.
                                properties:
                                  port:
                                    description: Port number of the gRPC service.
                                      Number must be in the range 1 to 65535.
                                    format: int32
                                    type: integer
                                  service:
                                    default: ""
                                    description: |-
                                      Service is the name of the service to place in the gRPC HealthCheckRequest
                                      (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                      If this is not specified, the default behavior is defined by gRPC.
                                    type: string
                                required:
                                - port
                                type: object
                              httpGet:
                                description: HTTPGet specifies an HTTP GET request
                                  to perform.
                                properties:
                                  host:
                                    description: |-
                                      Host name to connect to, defaults to the pod IP. You probably want to set
                                      "Host" in httpHeaders instead.
                                    type: string
                                  httpHeaders:
                                    description: Custom headers to set in the request.
                                      HTTP allows repeated headers.
                                    items:
                                      description: HTTPHeader describes a custom header
                                        to be used in HTTP probes
                                      properties:
                                        name:
                                          description: |-
                                            The header field name.
                                            This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                          type: string
                                        value:
                                          description: The header field value
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  path:
                                    description: Path to access on the HTTP server.
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    description: |-
                                      Name or number of the port to access on the container.
                                      Number must be in the range 1 to 65535.
                                      Name must be an IANA_SVC_NAME.
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    description: |-
                                      Scheme to use for connecting to the host.
                                      Defaults to HTTP.
                                    type: string
                                required:
                                - port
                                type: object
                              initialDelaySeconds:
                                description: |-
                                  Number of seconds after the container has started before liveness probes are initiated.
                                  More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                format: int32
                                type: integer
                              periodSeconds:
                                description: |-
                                  How often (in seconds) to perform the probe.
                                  Default to 10 seconds. Minimum value is 1.
                                format: int32
                                type: integer
                              successThreshold:
                                description: |-
                                  Minimum consecutive successes for the probe to be considered successful after having failed.
                                  Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                                format: int32
                                type: integer
                              tcpSocket:
                                description: TCPSocket specifies a connection to a
                                  TCP port.
                                properties:
                                  host:
                                    description: 'Optional: Host name to connect to,
                                      defaults to the pod IP.'
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    description: |-
                                      Number or name of the port to access on the container.
                                      Number must be in the range 1 to 65535.
                                      Name must be an IANA_SVC_NAME.
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                              terminationGracePeriodSeconds:
                                description: |-
                                  Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
                                  The grace period is the duration in seconds after the processes running in the pod are sent
                                  a termination signal and the time when the processes are forcibly halted with a kill signal.
                                  Set this value longer than the expected cleanup time for your process.
                                  If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
                                  value overrides the value provided by the pod spec.
                                  Value must be non-negative integer. The value zero indicates stop immediately via
                                  the kill signal (no opportunity to shut down).
                                  This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
                                  Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
                                format: int64
                                type: integer
                              timeoutSeconds:
                                description: |-
                                  Number of seconds after which the probe times out.
                                  Defaults to 1 second. Minimum value is 1.
                                  More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                format: int32
                                type: integer
                            type: object
                          resizePolicy:
                            description: Resources resize policy for the container.
                            items:
                              description: ContainerResizePolicy represents resource
                                resize policy for the container.
                              properties:
                                resourceName:
                                  description: |-
                                    Name of the resource to which this resource resize policy applies.
                                    Supported values: cpu, memory.
                                  type: string
                                restartPolicy:
                                  description: |-
                                    Restart policy to apply when specified resource is resized.
                                    If not specified, it defaults to NotRequired.
                                  type: string
                              required:
                              - resourceName
                              - restartPolicy
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          resources:
                            description: |-
                              Compute Resources required by this container.
                              Cannot be updated.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This is an alpha field and requires enabling the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry
                                    in PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          restartPolicy:
                            description: |-
                              RestartPolicy defines the restart behavior of individual containers in a pod.
                              This field may only be set for init containers, and the only allowed value is "Always".
                              For non-init containers or when this field is not specified,
                              the restart behavior is defined by the Pod's restart policy and the container type.
                              Setting the RestartPolicy as "Always" for the init container will have the following effect:
                              this init container will be continually restarted on
                              exit until all regular containers have terminated. Once all regular
                              containers have completed, all init containers with restartPolicy "Always"
                              will be shut down. This lifecycle differs from normal init containers and
                              is often referred to as a "sidecar" container. Although this init
                              container still starts in the init container sequence, it does not wait
                              for the container to complete before proceeding to the next init
                              container. Instead, the next init container starts immediately after this
                              init container is started, or after any startupProbe has successfully
                              completed.
                            type: string
                          securityContext:
                            description: |-
                              SecurityContext defines the security options the container should be run with.
                              If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
                              More info: https://kubernetes.io/docs/tasks/configure-pod-container/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
                                  Note that this field cannot be set when spec.os.name is windows.
                                type: boolean
                              appArmorProfile:
                                description: |-
                                  appArmorProfile is the AppArmor options to use by this container. If set, this profile
                                  overrides the pod's appArmorProfile.
                                  Note that this field cannot be set when spec.os.name is windows.
                                properties:
                                  localhostProfile:
                                    description: |-
                                      localhostProfile indicates a profile loaded on the node that should be used.
                                      The profile must be preconfigured on the node to work.
                                      Must match the loaded name of the profile.
                                      Must be set if and only if type is "Localhost".
                                    type: string
                                  type:
                                    description: |-
                                      type indicates which kind of AppArmor profile will be applied.
                                      Valid options are:
                                        Localhost - a profile pre-loaded on the node.
                                        RuntimeDefault - the container runtime's default profile.
                                        Unconfined - no AppArmor enforcement.
                                    type: string
                                required:
                                - type
                                type: object
                              capabilities:
                                description: |-
                                  The capabilities to add/drop when running containers.
                                  Defaults to the default set of capabilities granted by the container runtime.
                                  Note that this field cannot be set when spec.os.name is windows.
                                properties:
                                  add:
                                    description: Added capabilities
                                    items:
                                      description: Capability represent POSIX capabilities
                                        type
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  drop:
                                    description: Removed capabilities
                                    items:
                                      description: Capability represent POSIX capabilities
                                        type
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              privileged:
                                description: |-
                                  Run container in privileged mode.
                                  Processes in privileged containers are essentially equivalent to root on the host.
                                  Defaults to false.
                                  Note that this field cannot be set when spec.os.name is windows.
                                type: boolean
                              procMount:
                                description: |-
                                  procMount denotes the type of proc mount to use for the containers.
                                  The default value is Default which uses the container runtime defaults for
                                  readonly paths and masked paths.
                                  This requires the ProcMountType feature flag to be enabled.
                                  Note that this field cannot be set when spec.os.name is windows.
                                type: string
                              readOnlyRootFilesystem:
                                description: |-
                                  Whether this container has a read-only root filesystem.
                                  Default is false.
                                  Note that this field cannot be set when spec.os.name is windows.
                                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.
                                  Note that this field cannot be set when spec.os.name is windows.
                                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.
                                  Note that this field cannot be set when spec.os.name is windows.
                                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.
                                  Note that this field cannot be set when spec.os.name is windows.
                                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.
                                  Note that this field cannot be set when spec.os.name is windows.
                                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 be set if type is "Localhost". Must NOT be set for any other type.
                                    type: string
                                  type:
                                    description: |-
                                      type indicates which kind of seccomp profile will be applied.
                                      Valid options are:

                                      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.
                                  Note that this field cannot be set when spec.os.name is linux.
                                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
                                  hostProcess:
                                    description: |-
                                      HostProcess determines if a container should be run as a 'Host Process' container.
                                      All of a Pod's containers must have the same effective HostProcess value
                                      (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).
                                      In addition, if HostProcess is true then HostNetwork must also be set to true.
                                    type: boolean
                                  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
                          startupProbe:
                            description: |-
                              StartupProbe indicates that the Pod has successfully initialized.
                              If specified, no other probes are executed until this completes successfully.
                              If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
                              This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
                              when it might take a long time to load data or warm a cache, than during steady-state operation.
                              This cannot be updated.
                              More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                            properties:
                              exec:
                                description: Exec specifies a command to execute in
                                  the container.
                                properties:
                                  command:
                                    description: |-
                                      Command is the command line to execute inside the container, the working directory for the
                                      command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                      not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                      a shell, you need to explicitly call out to that shell.
                                      Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              failureThreshold:
                                description: |-
                                  Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                  Defaults to 3. Minimum value is 1.
                                format: int32
                                type: integer
                              grpc:
                                description: GRPC specifies a GRPC HealthCheckRequest.
                                properties:
                                  port:
                                    description: Port number of the gRPC service.
                                      Number must be in the range 1 to 65535.
                                    format: int32
                                    type: integer
                                  service:
                                    default: ""
                                    description: |-
                                      Service is the name of the service to place in the gRPC HealthCheckRequest
                                      (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                      If this is not specified, the default behavior is defined by gRPC.
                                    type: string
                                required:
                                - port
                                type: object
                              httpGet:
                                description: HTTPGet specifies an HTTP GET request
                                  to perform.
                                properties:
                                  host:
                                    description: |-
                                      Host name to connect to, defaults to the pod IP. You probably want to set
                                      "Host" in httpHeaders instead.
                                    type: string
                                  httpHeaders:
                                    description: Custom headers to set in the request.
                                      HTTP allows repeated headers.
                                    items:
                                      description: HTTPHeader describes a custom header
                                        to be used in HTTP probes
                                      properties:
                                        name:
                                          description: |-
                                            The header field name.
                                            This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                          type: string
                                        value:
                                          description: The header field value
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  path:
                                    description: Path to access on the HTTP server.
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    description: |-
                                      Name or number of the port to access on the container.
                                      Number must be in the range 1 to 65535.
                                      Name must be an IANA_SVC_NAME.
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    description: |-
                                      Scheme to use for connecting to the host.
                                      Defaults to HTTP.
                                    type: string
                                required:
                                - port
                                type: object
                              initialDelaySeconds:
                                description: |-
                                  Number of seconds after the container has started before liveness probes are initiated.
                                  More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                format: int32
                                type: integer
                              periodSeconds:
                                description: |-
                                  How often (in seconds) to perform the probe.
                                  Default to 10 seconds. Minimum value is 1.
                                format: int32
                                type: integer
                              successThreshold:
                                description: |-
                                  Minimum consecutive successes for the probe to be considered successful after having failed.
                                  Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                                format: int32
                                type: integer
                              tcpSocket:
                                description: TCPSocket specifies a connection to a
                                  TCP port.
                                properties:
                                  host:
                                    description: 'Optional: Host name to connect to,
                                      defaults to the pod IP.'
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    description: |-
                                      Number or name of the port to access on the container.
                                      Number must be in the range 1 to 65535.
                                      Name must be an IANA_SVC_NAME.
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                              terminationGracePeriodSeconds:
                                description: |-
                                  Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
                                  The grace period is the duration in seconds after the processes running in the pod are sent
                                  a termination signal and the time when the processes are forcibly halted with a kill signal.
                                  Set this value longer than the expected cleanup time for your process.
                                  If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
                                  value overrides the value provided by the pod spec.
                                  Value must be non-negative integer. The value zero indicates stop immediately via
                                  the kill signal (no opportunity to shut down).
                                  This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
                                  Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
                                format: int64
                                type: integer
                              timeoutSeconds:
                                description: |-
                                  Number of seconds after which the probe times out.
                                  Defaults to 1 second. Minimum value is 1.
                                  More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                format: int32
                                type: integer
                            type: object
                          stdin:
                            description: |-
                              Whether this container should allocate a buffer for stdin in the container runtime. If this
                              is not set, reads from stdin in the container will always result in EOF.
                              Default is false.
                            type: boolean
                          stdinOnce:
                            description: |-
                              Whether the container runtime should close the stdin channel after it has been opened by
                              a single attach. When stdin is true the stdin stream will remain open across multiple attach
                              sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
                              first client attaches to stdin, and then remains open and accepts data until the client disconnects,
                              at which time stdin is closed and remains closed until the container is restarted. If this
                              flag is false, a container processes that reads from stdin will never receive an EOF.
                              Default is false
                            type: boolean
                          terminationMessagePath:
                            description: |-
                              Optional: Path at which the file to which the container's termination message
                              will be written is mounted into the container's filesystem.
                              Message written is intended to be brief final status, such as an assertion failure message.
                              Will be truncated by the node if greater than 4096 bytes. The total message length across
                              all containers will be limited to 12kb.
                              Defaults to /dev/termination-log.
                              Cannot be updated.
                            type: string
                          terminationMessagePolicy:
                            description: |-
                              Indicate how the termination message should be populated. File will use the contents of
                              terminationMessagePath to populate the container status message on both success and failure.
                              FallbackToLogsOnError will use the last chunk of container log output if the termination
                              message file is empty and the container exited with an error.
                              The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
                              Defaults to File.
                              Cannot be updated.
                            type: string
                          tty:
                            description: |-
                              Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
                              Default is false.
                            type: boolean
                          volumeDevices:
                            description: volumeDevices is the list of block devices
                              to be used by the container.
                            items:
                              description: volumeDevice describes a mapping of a raw
                                block device within a container.
                              properties:
                                devicePath:
                                  description: devicePath is the path inside of the
                                    container that the device will be mapped to.
                                  type: string
                                name:
                                  description: name must match the name of a persistentVolumeClaim
                                    in the pod
                                  type: string
                              required:
                              - devicePath
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - devicePath
                            x-kubernetes-list-type: map
                          volumeMounts:
                            description: |-
                              Pod volumes to mount into the container's filesystem.
                              Cannot be updated.
                            items:
                              description: VolumeMount describes a mounting of a Volume
                                within a container.
                              properties:
                                mountPath:
                                  description: |-
                                    Path within the container at which the volume should be mounted.  Must
                                    not contain ':'.
                                  type: string
                                mountPropagation:
                                  description: |-
                                    mountPropagation determines how mounts are propagated from the host
                                    to container and the other way around.
                                    When not set, MountPropagationNone is used.
                                    This field is beta in 1.10.
                                    When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
                                    (which defaults to None).
                                  type: string
                                name:
                                  description: This must match the Name of a Volume.
                                  type: string
                                readOnly:
                                  description: |-
                                    Mounted read-only if true, read-write otherwise (false or unspecified).
                                    Defaults to false.
                                  type: boolean
                                recursiveReadOnly:
                                  description: |-
                                    RecursiveReadOnly specifies whether read-only mounts should be handled
                                    recursively.

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

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

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

                                    If this field is not specified, it is treated as an equivalent of Disabled.
                                  type: string
                                subPath:
                                  description: |-
                                    Path within the volume from which the container's volume should be mounted.
                                    Defaults to "" (volume's root).
                                  type: string
                                subPathExpr:
                                  description: |-
                                    Expanded path within the volume from which the container's volume should be mounted.
                                    Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
                                    Defaults to "" (volume's root).
                                    SubPathExpr and SubPath are mutually exclusive.
                                  type: string
                              required:
                              - mountPath
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - mountPath
                            x-kubernetes-list-type: map
                          workingDir:
                            description: |-
                              Container's working directory.
                              If not specified, the container runtime's default will be used, which
                              might be configured in the container image.
                              Cannot be updated.
                            type: string
                        required:
                        - name
                        type: object
                      type: array
                    inputs:
                      description: Inputs describe what inputs parameters and artifacts
                        are supplied to this template
                      properties:
                        artifacts:
                          description: Artifact are a list of artifacts passed as
                            inputs
                          items:
                            description: Artifact indicates an artifact to place at
                              a specified path
                            properties:
                              archive:
                                description: Archive controls how the artifact will
                                  be saved to the artifact repository.
                                properties:
                                  none:
                                    description: |-
                                      NoneStrategy indicates to skip tar process and upload the files or directory tree as independent
                                      files. Note that if the artifact is a directory, the artifact driver must support the ability to
                                      save/load the directory appropriately.
                                    type: object
                                  tar:
                                    description: TarStrategy will tar and gzip the
                                      file or directory when saving
                                    properties:
                                      compressionLevel:
                                        description: |-
                                          CompressionLevel specifies the gzip compression level to use for the artifact.
                                          Defaults to gzip.DefaultCompression.
                                        format: int32
                                        type: integer
                                    type: object
                                  zip:
                                    description: ZipStrategy will unzip zipped input
                                      artifacts
                                    type: object
                                type: object
                              archiveLogs:
                                description: ArchiveLogs indicates if the container
                                  logs should be archived
                                type: boolean
                              artifactGC:
                                description: ArtifactGC describes the strategy to
                                  use when to deleting an artifact from completed
                                  or deleted workflows
                                properties:
                                  podMetadata:
                                    description: PodMetadata is an optional field
                                      for specifying the Labels and Annotations that
                                      should be assigned to the Pod doing the deletion
                                    properties:
                                      annotations:
                                        additionalProperties:
                                          type: string
                                        type: object
                                      labels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                  serviceAccountName:
                                    description: ServiceAccountName is an optional
                                      field for specifying the Service Account that
                                      should be assigned to the Pod doing the deletion
                                    type: string
                                  strategy:
                                    description: Strategy is the strategy to use.
                                    enum:
                                    - ""
                                    - OnWorkflowCompletion
                                    - OnWorkflowDeletion
                                    - Never
                                    type: string
                                type: object
                              artifactory:
                                description: Artifactory contains artifactory artifact
                                  location details
                                properties:
                                  passwordSecret:
                                    description: PasswordSecret is the secret selector
                                      to the repository password
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  url:
                                    description: URL of the artifact
                                    type: string
                                  usernameSecret:
                                    description: UsernameSecret is the secret selector
                                      to the repository username
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - url
                                type: object
                              azure:
                                description: Azure contains Azure Storage artifact
                                  location details
                                properties:
                                  accountKeySecret:
                                    description: AccountKeySecret is the secret selector
                                      to the Azure Blob Storage account access key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  blob:
                                    description: Blob is the blob name (i.e., path)
                                      in the container where the artifact resides
                                    type: string
                                  container:
                                    description: Container is the container where
                                      resources will be stored
                                    type: string
                                  endpoint:
                                    description: Endpoint is the service url associated
                                      with an account. It is most likely "https://<ACCOUNT_NAME>.blob.core.windows.net"
                                    type: string
                                  useSDKCreds:
                                    description: UseSDKCreds tells the driver to figure
                                      out credentials based on sdk defaults.
                                    type: boolean
                                required:
                                - blob
                                - container
                                - endpoint
                                type: object
                              deleted:
                                description: Has this been deleted?
                                type: boolean
                              from:
                                description: From allows an artifact to reference
                                  an artifact from a previous step
                                type: string
                              fromExpression:
                                description: FromExpression, if defined, is evaluated
                                  to specify the value for the artifact
                                type: string
                              gcs:
                                description: GCS contains GCS artifact location details
                                properties:
                                  bucket:
                                    description: Bucket is the name of the bucket
                                    type: string
                                  key:
                                    description: Key is the path in the bucket where
                                      the artifact resides
                                    type: string
                                  serviceAccountKeySecret:
                                    description: ServiceAccountKeySecret is the secret
                                      selector to the bucket's service account key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - key
                                type: object
                              git:
                                description: Git contains git artifact location details
                                properties:
                                  branch:
                                    description: Branch is the branch to fetch when
                                      `SingleBranch` is enabled
                                    type: string
                                  depth:
                                    description: |-
                                      Depth specifies clones/fetches should be shallow and include the given
                                      number of commits from the branch tip
                                    format: int64
                                    type: integer
                                  disableSubmodules:
                                    description: DisableSubmodules disables submodules
                                      during git clone
                                    type: boolean
                                  fetch:
                                    description: Fetch specifies a number of refs
                                      that should be fetched before checkout
                                    items:
                                      type: string
                                    type: array
                                  insecureIgnoreHostKey:
                                    description: InsecureIgnoreHostKey disables SSH
                                      strict host key checking during git clone
                                    type: boolean
                                  insecureSkipTLS:
                                    description: InsecureSkipTLS disables server certificate
                                      verification resulting in insecure HTTPS connections
                                    type: boolean
                                  passwordSecret:
                                    description: PasswordSecret is the secret selector
                                      to the repository password
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  repo:
                                    description: Repo is the git repository
                                    type: string
                                  revision:
                                    description: Revision is the git commit, tag,
                                      branch to checkout
                                    type: string
                                  singleBranch:
                                    description: SingleBranch enables single branch
                                      clone, using the `branch` parameter
                                    type: boolean
                                  sshPrivateKeySecret:
                                    description: SSHPrivateKeySecret is the secret
                                      selector to the repository ssh private key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  usernameSecret:
                                    description: UsernameSecret is the secret selector
                                      to the repository username
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - repo
                                type: object
                              globalName:
                                description: |-
                                  GlobalName exports an output artifact to the global scope, making it available as
                                  '{{workflow.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts
                                type: string
                              hdfs:
                                description: HDFS contains HDFS artifact location
                                  details
                                properties:
                                  addresses:
                                    description: Addresses is accessible addresses
                                      of HDFS name nodes
                                    items:
                                      type: string
                                    type: array
                                  dataTransferProtection:
                                    description: |-
                                      DataTransferProtection is the protection level for HDFS data transfer.
                                      It corresponds to the dfs.data.transfer.protection configuration in HDFS.
                                    type: string
                                  force:
                                    description: Force copies a file forcibly even
                                      if it exists
                                    type: boolean
                                  hdfsUser:
                                    description: |-
                                      HDFSUser is the user to access HDFS file system.
                                      It is ignored if either ccache or keytab is used.
                                    type: string
                                  krbCCacheSecret:
                                    description: |-
                                      KrbCCacheSecret is the secret selector for Kerberos ccache
                                      Either ccache or keytab can be set to use Kerberos.
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbConfigConfigMap:
                                    description: |-
                                      KrbConfig is the configmap selector for Kerberos config as string
                                      It must be set if either ccache or keytab is used.
                                    properties:
                                      key:
                                        description: The key to select.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the ConfigMap
                                          or its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbKeytabSecret:
                                    description: |-
                                      KrbKeytabSecret is the secret selector for Kerberos keytab
                                      Either ccache or keytab can be set to use Kerberos.
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbRealm:
                                    description: |-
                                      KrbRealm is the Kerberos realm used with Kerberos keytab
                                      It must be set if keytab is used.
                                    type: string
                                  krbServicePrincipalName:
                                    description: |-
                                      KrbServicePrincipalName is the principal name of Kerberos service
                                      It must be set if either ccache or keytab is used.
                                    type: string
                                  krbUsername:
                                    description: |-
                                      KrbUsername is the Kerberos username used with Kerberos keytab
                                      It must be set if keytab is used.
                                    type: string
                                  path:
                                    description: Path is a file path in HDFS
                                    type: string
                                required:
                                - path
                                type: object
                              http:
                                description: HTTP contains HTTP artifact location
                                  details
                                properties:
                                  auth:
                                    description: Auth contains information for client
                                      authentication
                                    properties:
                                      basicAuth:
                                        description: BasicAuth describes the secret
                                          selectors required for basic authentication
                                        properties:
                                          passwordSecret:
                                            description: PasswordSecret is the secret
                                              selector to the repository password
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          usernameSecret:
                                            description: UsernameSecret is the secret
                                              selector to the repository username
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                      clientCert:
                                        description: ClientCertAuth holds necessary
                                          information for client authentication via
                                          certificates
                                        properties:
                                          clientCertSecret:
                                            description: SecretKeySelector selects
                                              a key of a Secret.
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          clientKeySecret:
                                            description: SecretKeySelector selects
                                              a key of a Secret.
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                      oauth2:
                                        description: OAuth2Auth holds all information
                                          for client authentication via OAuth2 tokens
                                        properties:
                                          clientIDSecret:
                                            description: SecretKeySelector selects
                                              a key of a Secret.
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          clientSecretSecret:
                                            description: SecretKeySelector selects
                                              a key of a Secret.
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          endpointParams:
                                            items:
                                              description: EndpointParam is for requesting
                                                optional fields that should be sent
                                                in the oauth request
                                              properties:
                                                key:
                                                  description: Name is the header
                                                    name
                                                  type: string
                                                value:
                                                  description: Value is the literal
                                                    value to use for the header
                                                  type: string
                                              required:
                                              - key
                                              type: object
                                            type: array
                                          scopes:
                                            items:
                                              type: string
                                            type: array
                                          tokenURLSecret:
                                            description: SecretKeySelector selects
                                              a key of a Secret.
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                    type: object
                                  headers:
                                    description: Headers are an optional list of headers
                                      to send with HTTP requests for artifacts
                                    items:
                                      description: Header indicate a key-value request
                                        header to be used when fetching artifacts
                                        over HTTP
                                      properties:
                                        name:
                                          description: Name is the header name
                                          type: string
                                        value:
                                          description: Value is the literal value
                                            to use for the header
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  url:
                                    description: URL of the artifact
                                    type: string
                                required:
                                - url
                                type: object
                              mode:
                                description: |-
                                  mode bits to use on this file, must be a value between 0 and 0777.
                                  Set when loading input artifacts. It is recommended to set the mode value
                                  to ensure the artifact has the expected permissions in your container.
                                format: int32
                                maximum: 511
                                minimum: 0
                                type: integer
                              name:
                                description: name of the artifact. must be unique
                                  within a template's inputs/outputs.
                                pattern: ^[-a-zA-Z0-9_{}.]+$
                                type: string
                              optional:
                                description: Make Artifacts optional, if Artifacts
                                  doesn't generate or exist
                                type: boolean
                              oss:
                                description: OSS contains OSS artifact location details
                                properties:
                                  accessKeySecret:
                                    description: AccessKeySecret is the secret selector
                                      to the bucket's access key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  bucket:
                                    description: Bucket is the name of the bucket
                                    type: string
                                  createBucketIfNotPresent:
                                    description: CreateBucketIfNotPresent tells the
                                      driver to attempt to create the OSS bucket for
                                      output artifacts, if it doesn't exist
                                    type: boolean
                                  endpoint:
                                    description: Endpoint is the hostname of the bucket
                                      endpoint
                                    type: string
                                  key:
                                    description: Key is the path in the bucket where
                                      the artifact resides
                                    type: string
                                  lifecycleRule:
                                    description: LifecycleRule specifies how to manage
                                      bucket's lifecycle
                                    properties:
                                      markDeletionAfterDays:
                                        description: MarkDeletionAfterDays is the
                                          number of days before we delete objects
                                          in the bucket
                                        format: int32
                                        type: integer
                                      markInfrequentAccessAfterDays:
                                        description: MarkInfrequentAccessAfterDays
                                          is the number of days before we convert
                                          the objects in the bucket to Infrequent
                                          Access (IA) storage type
                                        format: int32
                                        type: integer
                                    type: object
                                  secretKeySecret:
                                    description: SecretKeySecret is the secret selector
                                      to the bucket's secret key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  securityToken:
                                    description: 'SecurityToken is the user''s temporary
                                      security token. For more details, check out:
                                      https://www.alibabacloud.com/help/doc-detail/100624.htm'
                                    type: string
                                  useSDKCreds:
                                    description: UseSDKCreds tells the driver to figure
                                      out credentials based on sdk defaults.
                                    type: boolean
                                required:
                                - key
                                type: object
                              path:
                                description: Path is the container path to the artifact
                                type: string
                              plugin:
                                description: Plugin contains plugin artifact location
                                  details
                                properties:
                                  configuration:
                                    description: Configuration is the plugin defined
                                      configuration for the artifact driver plugin
                                    type: string
                                  connectionTimeoutSeconds:
                                    description: ConnectionTimeoutSeconds is the timeout
                                      for the artifact driver connection, overriding
                                      the driver's timeout
                                    format: int32
                                    type: integer
                                  key:
                                    description: Key is the path in the artifact repository
                                      where the artifact resides
                                    type: string
                                  name:
                                    description: Name is the name of the artifact
                                      driver plugin
                                    type: string
                                required:
                                - key
                                type: object
                              raw:
                                description: Raw contains raw artifact location details
                                properties:
                                  data:
                                    description: Data is the string contents of the
                                      artifact
                                    type: string
                                required:
                                - data
                                type: object
                              recurseMode:
                                description: If mode is set, apply the permission
                                  recursively into the artifact if it is a folder
                                type: boolean
                              s3:
                                description: S3 contains S3 artifact location details
                                properties:
                                  accessKeySecret:
                                    description: AccessKeySecret is the secret selector
                                      to the bucket's access key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  bucket:
                                    description: Bucket is the name of the bucket
                                    type: string
                                  caSecret:
                                    description: CASecret specifies the secret that
                                      contains the CA, used to verify the TLS connection
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  createBucketIfNotPresent:
                                    description: CreateBucketIfNotPresent tells the
                                      driver to attempt to create the S3 bucket for
                                      output artifacts, if it doesn't exist. Setting
                                      Enabled Encryption will apply either SSE-S3
                                      to the bucket if KmsKeyId is not set or SSE-KMS
                                      if it is.
                                    properties:
                                      objectLocking:
                                        description: ObjectLocking Enable object locking
                                        type: boolean
                                    type: object
                                  encryptionOptions:
                                    description: S3EncryptionOptions used to determine
                                      encryption options during s3 operations
                                    properties:
                                      enableEncryption:
                                        description: EnableEncryption tells the driver
                                          to encrypt objects if set to true. If kmsKeyId
                                          and serverSideCustomerKeySecret are not
                                          set, SSE-S3 will be used
                                        type: boolean
                                      kmsEncryptionContext:
                                        description: KmsEncryptionContext is a json
                                          blob that contains an encryption context.
                                          See https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
                                          for more information
                                        type: string
                                      kmsKeyId:
                                        description: KMSKeyId tells the driver to
                                          encrypt the object using the specified KMS
                                          Key.
                                        type: string
                                      serverSideCustomerKeySecret:
                                        description: ServerSideCustomerKeySecret tells
                                          the driver to encrypt the output artifacts
                                          using SSE-C with the specified secret.
                                        properties:
                                          key:
                                            description: The key of the secret to
                                              select from.  Must be a valid secret
                                              key.
                                            type: string
                                          name:
                                            default: ""
                                            description: |-
                                              Name of the referent.
                                              This field is effectively required, but due to backwards compatibility is
                                              allowed to be empty. Instances of this type with an empty value here are
                                              almost certainly wrong.
                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                            type: string
                                          optional:
                                            description: Specify whether the Secret
                                              or its key must be defined
                                            type: boolean
                                        required:
                                        - key
                                        type: object
                                        x-kubernetes-map-type: atomic
                                    type: object
                                  endpoint:
                                    description: Endpoint is the hostname of the bucket
                                      endpoint
                                    type: string
                                  insecure:
                                    description: Insecure will connect to the service
                                      with TLS
                                    type: boolean
                                  key:
                                    description: Key is the key in the bucket where
                                      the artifact resides
                                    type: string
                                  region:
                                    description: Region contains the optional bucket
                                      region
                                    type: string
                                  roleARN:
                                    description: RoleARN is the Amazon Resource Name
                                      (ARN) of the role to assume.
                                    type: string
                                  secretKeySecret:
                                    description: SecretKeySecret is the secret selector
                                      to the bucket's secret key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  sessionTokenSecret:
                                    description: SessionTokenSecret is used for ephemeral
                                      credentials like an IAM assume role or S3 access
                                      grant
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  useSDKCreds:
                                    description: UseSDKCreds tells the driver to figure
                                      out credentials based on sdk defaults.
                                    type: boolean
                                type: object
                              subPath:
                                description: SubPath allows an artifact to be sourced
                                  from a subpath within the specified source
                                type: string
                            required:
                            - name
                            type: object
                            x-kubernetes-validations:
                            - message: at most one artifact location can be specified
                              rule: '(has(self.s3) ? 1 : 0) + (has(self.git) ? 1 :
                                0) + (has(self.http) ? 1 : 0) + (has(self.artifactory)
                                ? 1 : 0) + (has(self.hdfs) ? 1 : 0) + (has(self.raw)
                                ? 1 : 0) + (has(self.oss) ? 1 : 0) + (has(self.gcs)
                                ? 1 : 0) + (has(self.azure) ? 1 : 0) + (has(self.plugin)
                                ? 1 : 0) <= 1'
                          type: array
                        parameters:
                          description: |-
                            Parameters are a list of parameters passed as inputs
                            MaxItems is an artificial limit to limit CEL validation costs - see note at top of file
                          items:
                            description: Parameter indicate a passed string parameter
                              to a service template with an optional default value
                            properties:
                              default:
                                description: Default is the default value to use for
                                  an input parameter if a value was not supplied
                                type: string
                              description:
                                description: Description is the parameter description
                                type: string
                              enum:
                                description: Enum holds a list of string values to
                                  choose from, for the actual value of the parameter
                                items:
                                  description: |-
                                    * It's JSON type is just string.
                                    * It will unmarshall int64, int32, float64, float32, boolean, a plain string and represents it as string.
                                    * It will marshall back to string - marshalling is not symmetric.
                                  type: string
                                minItems: 1
                                type: array
                              globalName:
                                description: |-
                                  GlobalName exports an output parameter to the global scope, making it available as
                                  '{{workflow.outputs.parameters.XXXX}} and in workflow.status.outputs.parameters
                                type: string
                              name:
                                description: Name is the parameter name
                                pattern: ^[-a-zA-Z0-9_]+$
                                type: string
                              value:
                                description: |-
                                  Value is the literal value to use for the parameter.
                                  If specified in the context of an input parameter, any passed values take precedence over the specified value
                                type: string
                              valueFrom:
                                description: ValueFrom is the source for the output
                                  parameter's value
                                properties:
                                  configMapKeyRef:
                                    description: ConfigMapKeyRef is configmap selector
                                      for input parameter configuration
                                    properties:
                                      key:
                                        description: The key to select.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the ConfigMap
                                          or its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  default:
                                    description: Default specifies a value to be used
                                      if retrieving the value from the specified source
                                      fails
                                    type: string
                                  event:
                                    description: Selector (https://github.com/expr-lang/expr)
                                      that is evaluated against the event to get the
                                      value of the parameter. E.g. `payload.message`
                                    type: string
                                  expression:
                                    description: Expression, if defined, is evaluated
                                      to specify the value for the parameter
                                    type: string
                                  jqFilter:
                                    description: JQFilter expression against the resource
                                      object in resource templates
                                    type: string
                                  jsonPath:
                                    description: JSONPath of a resource to retrieve
                                      an output parameter value from in resource templates
                                    type: string
                                  parameter:
                                    description: |-
                                      Parameter reference to a step or dag task in which to retrieve an output parameter value from
                                      (e.g. '{{steps.mystep.outputs.myparam}}')
                                    type: string
                                  path:
                                    description: Path in the container to retrieve
                                      an output parameter value from in container
                                      templates
                                    type: string
                                  supplied:
                                    description: Supplied value to be filled in directly,
                                      either through the CLI, API, etc.
                                    type: object
                                type: object
                            required:
                            - name
                            type: object
                          maxItems: 500
                          type: array
                      type: object
                    memoize:
                      description: Memoize allows templates to use outputs generated
                        from already executed templates
                      properties:
                        cache:
                          description: Cache sets and configures the kind of cache
                          properties:
                            configMap:
                              description: ConfigMap sets a ConfigMap-based cache
                              properties:
                                name:
                                  default: ""
                                  description: |-
                                    Name of the referent.
                                    This field is effectively required, but due to backwards compatibility is
                                    allowed to be empty. Instances of this type with an empty value here are
                                    almost certainly wrong.
                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  type: string
                              type: object
                              x-kubernetes-map-type: atomic
                          required:
                          - configMap
                          type: object
                        key:
                          description: Key is the key to use as the caching key
                          type: string
                        maxAge:
                          description: |-
                            MaxAge is the maximum age (e.g. "180s", "24h") of an entry that is still considered valid. If an entry is older
                            than the MaxAge, it will be ignored.
                          type: string
                      required:
                      - cache
                      - key
                      - maxAge
                      type: object
                    metadata:
                      description: Metadata sets the pods's metadata, i.e. annotations
                        and labels
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          type: object
                        labels:
                          additionalProperties:
                            type: string
                          type: object
                      type: object
                    metrics:
                      description: Metrics are a list of metrics emitted from this
                        template
                      properties:
                        prometheus:
                          description: |-
                            Prometheus is a list of prometheus metrics to be emitted
                            MaxItems is an artificial limit to limit CEL validation costs - see note at top of file
                          items:
                            description: Prometheus is a prometheus metric to be emitted
                            properties:
                              counter:
                                description: Counter is a counter metric
                                properties:
                                  value:
                                    description: Value is the value of the metric
                                    minLength: 1
                                    type: string
                                required:
                                - value
                                type: object
                              gauge:
                                description: Gauge is a gauge metric
                                properties:
                                  operation:
                                    description: Operation defines the operation to
                                      apply with value and the metrics' current value
                                    enum:
                                    - Set
                                    - Add
                                    - Sub
                                    type: string
                                  realtime:
                                    description: Realtime emits this metric in real
                                      time if applicable
                                    type: boolean
                                  value:
                                    description: |-
                                      Value is the value to be used in the operation with the metric's current value. If no operation is set,
                                      value is the value of the metric
                                      MaxLength is an artificial limit to limit CEL validation costs - see note at top of file
                                    maxLength: 256
                                    minLength: 1
                                    type: string
                                required:
                                - realtime
                                - value
                                type: object
                                x-kubernetes-validations:
                                - message: '''resourcesDuration.*'' metrics cannot
                                    be used in real-time gauges'
                                  rule: '!has(self.realtime) || !self.realtime ||
                                    !self.value.contains(''resourcesDuration.'')'
                              help:
                                description: Help is a string that describes the metric
                                minLength: 1
                                type: string
                              histogram:
                                description: Histogram is a histogram metric
                                properties:
                                  buckets:
                                    description: Buckets is a list of bucket divisors
                                      for the histogram
                                    items:
                                      type: number
                                    type: array
                                  value:
                                    description: Value is the value of the metric
                                    minLength: 1
                                    type: string
                                required:
                                - buckets
                                - value
                                type: object
                              labels:
                                description: Labels is a list of metric labels
                                items:
                                  description: MetricLabel is a single label for a
                                    prometheus metric
                                  properties:
                                    key:
                                      pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
                                      type: string
                                    value:
                                      type: string
                                  required:
                                  - key
                                  - value
                                  type: object
                                type: array
                              name:
                                description: Name is the name of the metric
                                pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
                                type: string
                              when:
                                description: When is a conditional statement that
                                  decides when to emit the metric
                                type: string
                            required:
                            - help
                            - name
                            type: object
                          maxItems: 100
                          type: array
                      required:
                      - prometheus
                      type: object
                    name:
                      description: Name is the name of the template
                      maxLength: 128
                      pattern: ^[a-zA-Z0-9][-a-zA-Z0-9]*$
                      type: string
                    nodeSelector:
                      additionalProperties:
                        type: string
                      description: |-
                        NodeSelector is a selector to schedule this step of the workflow to be
                        run on the selected node(s). Overrides the selector set at the workflow level.
                      type: object
                    outputs:
                      description: Outputs describe the parameters and artifacts that
                        this template produces
                      properties:
                        artifacts:
                          description: Artifacts holds the list of output artifacts
                            produced by a step
                          items:
                            description: Artifact indicates an artifact to place at
                              a specified path
                            properties:
                              archive:
                                description: Archive controls how the artifact will
                                  be saved to the artifact repository.
                                properties:
                                  none:
                                    description: |-
                                      NoneStrategy indicates to skip tar process and upload the files or directory tree as independent
                                      files. Note that if the artifact is a directory, the artifact driver must support the ability to
                                      save/load the directory appropriately.
                                    type: object
                                  tar:
                                    description: TarStrategy will tar and gzip the
                                      file or directory when saving
                                    properties:
                                      compressionLevel:
                                        description: |-
                                          CompressionLevel specifies the gzip compression level to use for the artifact.
                                          Defaults to gzip.DefaultCompression.
                                        format: int32
                                        type: integer
                                    type: object
                                  zip:
                                    description: ZipStrategy will unzip zipped input
                                      artifacts
                                    type: object
                                type: object
                              archiveLogs:
                                description: ArchiveLogs indicates if the container
                                  logs should be archived
                                type: boolean
                              artifactGC:
                                description: ArtifactGC describes the strategy to
                                  use when to deleting an artifact from completed
                                  or deleted workflows
                                properties:
                                  podMetadata:
                                    description: PodMetadata is an optional field
                                      for specifying the Labels and Annotations that
                                      should be assigned to the Pod doing the deletion
                                    properties:
                                      annotations:
                                        additionalProperties:
                                          type: string
                                        type: object
                                      labels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                  serviceAccountName:
                                    description: ServiceAccountName is an optional
                                      field for specifying the Service Account that
                                      should be assigned to the Pod doing the deletion
                                    type: string
                                  strategy:
                                    description: Strategy is the strategy to use.
                                    enum:
                                    - ""
                                    - OnWorkflowCompletion
                                    - OnWorkflowDeletion
                                    - Never
                                    type: string
                                type: object
                              artifactory:
                                description: Artifactory contains artifactory artifact
                                  location details
                                properties:
                                  passwordSecret:
                                    description: PasswordSecret is the secret selector
                                      to the repository password
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  url:
                                    description: URL of the artifact
                                    type: string
                                  usernameSecret:
                                    description: UsernameSecret is the secret selector
                                      to the repository username
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - url
                                type: object
                              azure:
                                description: Azure contains Azure Storage artifact
                                  location details
                                properties:
                                  accountKeySecret:
                                    description: AccountKeySecret is the secret selector
                                      to the Azure Blob Storage account access key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  blob:
                                    description: Blob is the blob name (i.e., path)
                                      in the container where the artifact resides
                                    type: string
                                  container:
                                    description: Container is the container where
                                      resources will be stored
                                    type: string
                                  endpoint:
                                    description: Endpoint is the service url associated
                                      with an account. It is most likely "https://<ACCOUNT_NAME>.blob.core.windows.net"
                                    type: string
                                  useSDKCreds:
                                    description: UseSDKCreds tells the driver to figure
                                      out credentials based on sdk defaults.
                                    type: boolean
                                required:
                                - blob
                                - container
                                - endpoint
                                type: object
                              deleted:
                                description: Has this been deleted?
                                type: boolean
                              from:
                                description: From allows an artifact to reference
                                  an artifact from a previous step
                                type: string
                              fromExpression:
                                description: FromExpression, if defined, is evaluated
                                  to specify the value for the artifact
                                type: string
                              gcs:
                                description: GCS contains GCS artifact location details
                                properties:
                                  bucket:
                                    description: Bucket is the name of the bucket
                                    type: string
                                  key:
                                    description: Key is the path in the bucket where
                                      the artifact resides
                                    type: string
                                  serviceAccountKeySecret:
                                    description: ServiceAccountKeySecret is the secret
                                      selector to the bucket's service account key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - key
                                type: object
                              git:
                                description: Git contains git artifact location details
                                properties:
                                  branch:
                                    description: Branch is the branch to fetch when
                                      `SingleBranch` is enabled
                                    type: string
                                  depth:
                                    description: |-
                                      Depth specifies clones/fetches should be shallow and include the given
                                      number of commits from the branch tip
                                    format: int64
                                    type: integer
                                  disableSubmodules:
                                    description: DisableSubmodules disables submodules
                                      during git clone
                                    type: boolean
                                  fetch:
                                    description: Fetch specifies a number of refs
                                      that should be fetched before checkout
                                    items:
                                      type: string
                                    type: array
                                  insecureIgnoreHostKey:
                                    description: InsecureIgnoreHostKey disables SSH
                                      strict host key checking during git clone
                                    type: boolean
                                  insecureSkipTLS:
                                    description: InsecureSkipTLS disables server certificate
                                      verification resulting in insecure HTTPS connections
                                    type: boolean
                                  passwordSecret:
                                    description: PasswordSecret is the secret selector
                                      to the repository password
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  repo:
                                    description: Repo is the git repository
                                    type: string
                                  revision:
                                    description: Revision is the git commit, tag,
                                      branch to checkout
                                    type: string
                                  singleBranch:
                                    description: SingleBranch enables single branch
                                      clone, using the `branch` parameter
                                    type: boolean
                                  sshPrivateKeySecret:
                                    description: SSHPrivateKeySecret is the secret
                                      selector to the repository ssh private key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  usernameSecret:
                                    description: UsernameSecret is the secret selector
                                      to the repository username
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - repo
                                type: object
                              globalName:
                                description: |-
                                  GlobalName exports an output artifact to the global scope, making it available as
                                  '{{workflow.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts
                                type: string
                              hdfs:
                                description: HDFS contains HDFS artifact location
                                  details
                                properties:
                                  addresses:
                                    description: Addresses is accessible addresses
                                      of HDFS name nodes
                                    items:
                                      type: string
                                    type: array
                                  dataTransferProtection:
                                    description: |-
                                      DataTransferProtection is the protection level for HDFS data transfer.
                                      It corresponds to the dfs.data.transfer.protection configuration in HDFS.
                                    type: string
                                  force:
                                    description: Force copies a file forcibly even
                                      if it exists
                                    type: boolean
                                  hdfsUser:
                                    description: |-
                                      HDFSUser is the user to access HDFS file system.
                                      It is ignored if either ccache or keytab is used.
                                    type: string
                                  krbCCacheSecret:
                                    description: |-
                                      KrbCCacheSecret is the secret selector for Kerberos ccache
                                      Either ccache or keytab can be set to use Kerberos.
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbConfigConfigMap:
                                    description: |-
                                      KrbConfig is the configmap selector for Kerberos config as string
                                      It must be set if either ccache or keytab is used.
                                    properties:
                                      key:
                                        description: The key to select.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the ConfigMap
                                          or its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbKeytabSecret:
                                    description: |-
                                      KrbKeytabSecret is the secret selector for Kerberos keytab
                                      Either ccache or keytab can be set to use Kerberos.
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbRealm:
                                    description: |-
                                      KrbRealm is the Kerberos realm used with Kerberos keytab
                                      It must be set if keytab is used.
                                    type: string
                                  krbServicePrincipalName:
                                    description: |-
                                      KrbServicePrincipalName is the principal name of Kerberos service
                                      It must be set if either ccache or keytab is used.
                                    type: string
                                  krbUsername:
                                    description: |-
                                      KrbUsername is the Kerberos username used with Kerberos keytab
                                      It must be set if keytab is used.
                                    type: string
                                  path:
                                    description: Path is a file path in HDFS
                                    type: string
                                required:
                                - path
                                type: object
                              http:
                                description: HTTP contains HTTP artifact location
                                  details
                                properties:
                                  auth:
                                    description: Auth contains information for client
                                      authentication
                                    properties:
                                      basicAuth:
                                        description: BasicAuth describes the secret
                                          selectors required for basic authentication
                                        properties:
                                          passwordSecret:
                                            description: PasswordSecret is the secret
                                              selector to the repository password
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          usernameSecret:
                                            description: UsernameSecret is the secret
                                              selector to the repository username
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                      clientCert:
                                        description: ClientCertAuth holds necessary
                                          information for client authentication via
                                          certificates
                                        properties:
                                          clientCertSecret:
                                            description: SecretKeySelector selects
                                              a key of a Secret.
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          clientKeySecret:
                                            description: SecretKeySelector selects
                                              a key of a Secret.
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                      oauth2:
                                        description: OAuth2Auth holds all information
                                          for client authentication via OAuth2 tokens
                                        properties:
                                          clientIDSecret:
                                            description: SecretKeySelector selects
                                              a key of a Secret.
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          clientSecretSecret:
                                            description: SecretKeySelector selects
                                              a key of a Secret.
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          endpointParams:
                                            items:
                                              description: EndpointParam is for requesting
                                                optional fields that should be sent
                                                in the oauth request
                                              properties:
                                                key:
                                                  description: Name is the header
                                                    name
                                                  type: string
                                                value:
                                                  description: Value is the literal
                                                    value to use for the header
                                                  type: string
                                              required:
                                              - key
                                              type: object
                                            type: array
                                          scopes:
                                            items:
                                              type: string
                                            type: array
                                          tokenURLSecret:
                                            description: SecretKeySelector selects
                                              a key of a Secret.
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                    type: object
                                  headers:
                                    description: Headers are an optional list of headers
                                      to send with HTTP requests for artifacts
                                    items:
                                      description: Header indicate a key-value request
                                        header to be used when fetching artifacts
                                        over HTTP
                                      properties:
                                        name:
                                          description: Name is the header name
                                          type: string
                                        value:
                                          description: Value is the literal value
                                            to use for the header
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  url:
                                    description: URL of the artifact
                                    type: string
                                required:
                                - url
                                type: object
                              mode:
                                description: |-
                                  mode bits to use on this file, must be a value between 0 and 0777.
                                  Set when loading input artifacts. It is recommended to set the mode value
                                  to ensure the artifact has the expected permissions in your container.
                                format: int32
                                maximum: 511
                                minimum: 0
                                type: integer
                              name:
                                description: name of the artifact. must be unique
                                  within a template's inputs/outputs.
                                pattern: ^[-a-zA-Z0-9_{}.]+$
                                type: string
                              optional:
                                description: Make Artifacts optional, if Artifacts
                                  doesn't generate or exist
                                type: boolean
                              oss:
                                description: OSS contains OSS artifact location details
                                properties:
                                  accessKeySecret:
                                    description: AccessKeySecret is the secret selector
                                      to the bucket's access key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  bucket:
                                    description: Bucket is the name of the bucket
                                    type: string
                                  createBucketIfNotPresent:
                                    description: CreateBucketIfNotPresent tells the
                                      driver to attempt to create the OSS bucket for
                                      output artifacts, if it doesn't exist
                                    type: boolean
                                  endpoint:
                                    description: Endpoint is the hostname of the bucket
                                      endpoint
                                    type: string
                                  key:
                                    description: Key is the path in the bucket where
                                      the artifact resides
                                    type: string
                                  lifecycleRule:
                                    description: LifecycleRule specifies how to manage
                                      bucket's lifecycle
                                    properties:
                                      markDeletionAfterDays:
                                        description: MarkDeletionAfterDays is the
                                          number of days before we delete objects
                                          in the bucket
                                        format: int32
                                        type: integer
                                      markInfrequentAccessAfterDays:
                                        description: MarkInfrequentAccessAfterDays
                                          is the number of days before we convert
                                          the objects in the bucket to Infrequent
                                          Access (IA) storage type
                                        format: int32
                                        type: integer
                                    type: object
                                  secretKeySecret:
                                    description: SecretKeySecret is the secret selector
                                      to the bucket's secret key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  securityToken:
                                    description: 'SecurityToken is the user''s temporary
                                      security token. For more details, check out:
                                      https://www.alibabacloud.com/help/doc-detail/100624.htm'
                                    type: string
                                  useSDKCreds:
                                    description: UseSDKCreds tells the driver to figure
                                      out credentials based on sdk defaults.
                                    type: boolean
                                required:
                                - key
                                type: object
                              path:
                                description: Path is the container path to the artifact
                                type: string
                              plugin:
                                description: Plugin contains plugin artifact location
                                  details
                                properties:
                                  configuration:
                                    description: Configuration is the plugin defined
                                      configuration for the artifact driver plugin
                                    type: string
                                  connectionTimeoutSeconds:
                                    description: ConnectionTimeoutSeconds is the timeout
                                      for the artifact driver connection, overriding
                                      the driver's timeout
                                    format: int32
                                    type: integer
                                  key:
                                    description: Key is the path in the artifact repository
                                      where the artifact resides
                                    type: string
                                  name:
                                    description: Name is the name of the artifact
                                      driver plugin
                                    type: string
                                required:
                                - key
                                type: object
                              raw:
                                description: Raw contains raw artifact location details
                                properties:
                                  data:
                                    description: Data is the string contents of the
                                      artifact
                                    type: string
                                required:
                                - data
                                type: object
                              recurseMode:
                                description: If mode is set, apply the permission
                                  recursively into the artifact if it is a folder
                                type: boolean
                              s3:
                                description: S3 contains S3 artifact location details
                                properties:
                                  accessKeySecret:
                                    description: AccessKeySecret is the secret selector
                                      to the bucket's access key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  bucket:
                                    description: Bucket is the name of the bucket
                                    type: string
                                  caSecret:
                                    description: CASecret specifies the secret that
                                      contains the CA, used to verify the TLS connection
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  createBucketIfNotPresent:
                                    description: CreateBucketIfNotPresent tells the
                                      driver to attempt to create the S3 bucket for
                                      output artifacts, if it doesn't exist. Setting
                                      Enabled Encryption will apply either SSE-S3
                                      to the bucket if KmsKeyId is not set or SSE-KMS
                                      if it is.
                                    properties:
                                      objectLocking:
                                        description: ObjectLocking Enable object locking
                                        type: boolean
                                    type: object
                                  encryptionOptions:
                                    description: S3EncryptionOptions used to determine
                                      encryption options during s3 operations
                                    properties:
                                      enableEncryption:
                                        description: EnableEncryption tells the driver
                                          to encrypt objects if set to true. If kmsKeyId
                                          and serverSideCustomerKeySecret are not
                                          set, SSE-S3 will be used
                                        type: boolean
                                      kmsEncryptionContext:
                                        description: KmsEncryptionContext is a json
                                          blob that contains an encryption context.
                                          See https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
                                          for more information
                                        type: string
                                      kmsKeyId:
                                        description: KMSKeyId tells the driver to
                                          encrypt the object using the specified KMS
                                          Key.
                                        type: string
                                      serverSideCustomerKeySecret:
                                        description: ServerSideCustomerKeySecret tells
                                          the driver to encrypt the output artifacts
                                          using SSE-C with the specified secret.
                                        properties:
                                          key:
                                            description: The key of the secret to
                                              select from.  Must be a valid secret
                                              key.
                                            type: string
                                          name:
                                            default: ""
                                            description: |-
                                              Name of the referent.
                                              This field is effectively required, but due to backwards compatibility is
                                              allowed to be empty. Instances of this type with an empty value here are
                                              almost certainly wrong.
                                              More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                            type: string
                                          optional:
                                            description: Specify whether the Secret
                                              or its key must be defined
                                            type: boolean
                                        required:
                                        - key
                                        type: object
                                        x-kubernetes-map-type: atomic
                                    type: object
                                  endpoint:
                                    description: Endpoint is the hostname of the bucket
                                      endpoint
                                    type: string
                                  insecure:
                                    description: Insecure will connect to the service
                                      with TLS
                                    type: boolean
                                  key:
                                    description: Key is the key in the bucket where
                                      the artifact resides
                                    type: string
                                  region:
                                    description: Region contains the optional bucket
                                      region
                                    type: string
                                  roleARN:
                                    description: RoleARN is the Amazon Resource Name
                                      (ARN) of the role to assume.
                                    type: string
                                  secretKeySecret:
                                    description: SecretKeySecret is the secret selector
                                      to the bucket's secret key
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  sessionTokenSecret:
                                    description: SessionTokenSecret is used for ephemeral
                                      credentials like an IAM assume role or S3 access
                                      grant
                                    properties:
                                      key:
                                        description: The key of the secret to select
                                          from.  Must be a valid secret key.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  useSDKCreds:
                                    description: UseSDKCreds tells the driver to figure
                                      out credentials based on sdk defaults.
                                    type: boolean
                                type: object
                              subPath:
                                description: SubPath allows an artifact to be sourced
                                  from a subpath within the specified source
                                type: string
                            required:
                            - name
                            type: object
                            x-kubernetes-validations:
                            - message: at most one artifact location can be specified
                              rule: '(has(self.s3) ? 1 : 0) + (has(self.git) ? 1 :
                                0) + (has(self.http) ? 1 : 0) + (has(self.artifactory)
                                ? 1 : 0) + (has(self.hdfs) ? 1 : 0) + (has(self.raw)
                                ? 1 : 0) + (has(self.oss) ? 1 : 0) + (has(self.gcs)
                                ? 1 : 0) + (has(self.azure) ? 1 : 0) + (has(self.plugin)
                                ? 1 : 0) <= 1'
                          type: array
                        exitCode:
                          description: ExitCode holds the exit code of a script template
                          type: string
                        parameters:
                          description: Parameters holds the list of output parameters
                            produced by a step
                          items:
                            description: Parameter indicate a passed string parameter
                              to a service template with an optional default value
                            properties:
                              default:
                                description: Default is the default value to use for
                                  an input parameter if a value was not supplied
                                type: string
                              description:
                                description: Description is the parameter description
                                type: string
                              enum:
                                description: Enum holds a list of string values to
                                  choose from, for the actual value of the parameter
                                items:
                                  description: |-
                                    * It's JSON type is just string.
                                    * It will unmarshall int64, int32, float64, float32, boolean, a plain string and represents it as string.
                                    * It will marshall back to string - marshalling is not symmetric.
                                  type: string
                                minItems: 1
                                type: array
                              globalName:
                                description: |-
                                  GlobalName exports an output parameter to the global scope, making it available as
                                  '{{workflow.outputs.parameters.XXXX}} and in workflow.status.outputs.parameters
                                type: string
                              name:
                                description: Name is the parameter name
                                pattern: ^[-a-zA-Z0-9_]+$
                                type: string
                              value:
                                description: |-
                                  Value is the literal value to use for the parameter.
                                  If specified in the context of an input parameter, any passed values take precedence over the specified value
                                type: string
                              valueFrom:
                                description: ValueFrom is the source for the output
                                  parameter's value
                                properties:
                                  configMapKeyRef:
                                    description: ConfigMapKeyRef is configmap selector
                                      for input parameter configuration
                                    properties:
                                      key:
                                        description: The key to select.
                                        type: string
                                      name:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the ConfigMap
                                          or its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  default:
                                    description: Default specifies a value to be used
                                      if retrieving the value from the specified source
                                      fails
                                    type: string
                                  event:
                                    description: Selector (https://github.com/expr-lang/expr)
                                      that is evaluated against the event to get the
                                      value of the parameter. E.g. `payload.message`
                                    type: string
                                  expression:
                                    description: Expression, if defined, is evaluated
                                      to specify the value for the parameter
                                    type: string
                                  jqFilter:
                                    description: JQFilter expression against the resource
                                      object in resource templates
                                    type: string
                                  jsonPath:
                                    description: JSONPath of a resource to retrieve
                                      an output parameter value from in resource templates
                                    type: string
                                  parameter:
                                    description: |-
                                      Parameter reference to a step or dag task in which to retrieve an output parameter value from
                                      (e.g. '{{steps.mystep.outputs.myparam}}')
                                    type: string
                                  path:
                                    description: Path in the container to retrieve
                                      an output parameter value from in container
                                      templates
                                    type: string
                                  supplied:
                                    description: Supplied value to be filled in directly,
                                      either through the CLI, API, etc.
                                    type: object
                                type: object
                            required:
                            - name
                            type: object
                          type: array
                        result:
                          description: Result holds the result (stdout) of a script
                            or container template, or the response body of an HTTP
                            template
                          type: string
                      type: object
                    parallelism:
                      description: |-
                        Parallelism limits the max total parallel pods that can execute at the same time within the
                        boundaries of this template invocation. If additional steps/dag templates are invoked, the
                        pods created by those templates will not be counted towards this total.
                      format: int64
                      minimum: 1
                      type: integer
                    plugin:
                      description: |-
                        Plugin is a plugin template
                        Note: the structure of a plugin template is free-form, so we need to have
                        "x-kubernetes-preserve-unknown-fields: true" in the validation schema.
                      type: object
                      x-kubernetes-preserve-unknown-fields: true
                    podSpecPatch:
                      description: |-
                        PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of
                        container fields which are not strings (e.g. resource limits).
                      type: string
                    priorityClassName:
                      description: PriorityClassName to apply to workflow pods.
                      type: string
                    resource:
                      description: Resource template subtype which can run k8s resources
                      properties:
                        action:
                          description: |-
                            Action is the action to perform to the resource.
                            Must be one of: get, create, apply, delete, replace, patch
                          enum:
                          - get
                          - create
                          - apply
                          - delete
                          - replace
                          - patch
                          type: string
                        failureCondition:
                          description: |-
                            FailureCondition is a label selector expression which describes the conditions
                            of the k8s resource in which the step was considered failed
                          type: string
                        flags:
                          description: "Flags is a set of additional options passed
                            to kubectl before submitting a resource\nI.e. to disable
                            resource validation:\nflags: [\n\t\"--validate=false\"
                            \ # disable resource validation\n]"
                          items:
                            type: string
                          type: array
                        manifest:
                          description: Manifest contains the kubernetes manifest
                          type: string
                        manifestFrom:
                          description: ManifestFrom is the source for a single kubernetes
                            manifest
                          properties:
                            artifact:
                              description: Artifact contains the artifact to use
                              properties:
                                archive:
                                  description: Archive controls how the artifact will
                                    be saved to the artifact repository.
                                  properties:
                                    none:
                                      description: |-
                                        NoneStrategy indicates to skip tar process and upload the files or directory tree as independent
                                        files. Note that if the artifact is a directory, the artifact driver must support the ability to
                                        save/load the directory appropriately.
                                      type: object
                                    tar:
                                      description: TarStrategy will tar and gzip the
                                        file or directory when saving
                                      properties:
                                        compressionLevel:
                                          description: |-
                                            CompressionLevel specifies the gzip compression level to use for the artifact.
                                            Defaults to gzip.DefaultCompression.
                                          format: int32
                                          type: integer
                                      type: object
                                    zip:
                                      description: ZipStrategy will unzip zipped input
                                        artifacts
                                      type: object
                                  type: object
                                archiveLogs:
                                  description: ArchiveLogs indicates if the container
                                    logs should be archived
                                  type: boolean
                                artifactGC:
                                  description: ArtifactGC describes the strategy to
                                    use when to deleting an artifact from completed
                                    or deleted workflows
                                  properties:
                                    podMetadata:
                                      description: PodMetadata is an optional field
                                        for specifying the Labels and Annotations
                                        that should be assigned to the Pod doing the
                                        deletion
                                      properties:
                                        annotations:
                                          additionalProperties:
                                            type: string
                                          type: object
                                        labels:
                                          additionalProperties:
                                            type: string
                                          type: object
                                      type: object
                                    serviceAccountName:
                                      description: ServiceAccountName is an optional
                                        field for specifying the Service Account that
                                        should be assigned to the Pod doing the deletion
                                      type: string
                                    strategy:
                                      description: Strategy is the strategy to use.
                                      enum:
                                      - ""
                                      - OnWorkflowCompletion
                                      - OnWorkflowDeletion
                                      - Never
                                      type: string
                                  type: object
                                artifactory:
                                  description: Artifactory contains artifactory artifact
                                    location details
                                  properties:
                                    passwordSecret:
                                      description: PasswordSecret is the secret selector
                                        to the repository password
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    url:
                                      description: URL of the artifact
                                      type: string
                                    usernameSecret:
                                      description: UsernameSecret is the secret selector
                                        to the repository username
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  required:
                                  - url
                                  type: object
                                azure:
                                  description: Azure contains Azure Storage artifact
                                    location details
                                  properties:
                                    accountKeySecret:
                                      description: AccountKeySecret is the secret
                                        selector to the Azure Blob Storage account
                                        access key
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    blob:
                                      description: Blob is the blob name (i.e., path)
                                        in the container where the artifact resides
                                      type: string
                                    container:
                                      description: Container is the container where
                                        resources will be stored
                                      type: string
                                    endpoint:
                                      description: Endpoint is the service url associated
                                        with an account. It is most likely "https://<ACCOUNT_NAME>.blob.core.windows.net"
                                      type: string
                                    useSDKCreds:
                                      description: UseSDKCreds tells the driver to
                                        figure out credentials based on sdk defaults.
                                      type: boolean
                                  required:
                                  - blob
                                  - container
                                  - endpoint
                                  type: object
                                deleted:
                                  description: Has this been deleted?
                                  type: boolean
                                from:
                                  description: From allows an artifact to reference
                                    an artifact from a previous step
                                  type: string
                                fromExpression:
                                  description: FromExpression, if defined, is evaluated
                                    to specify the value for the artifact
                                  type: string
                                gcs:
                                  description: GCS contains GCS artifact location
                                    details
                                  properties:
                                    bucket:
                                      description: Bucket is the name of the bucket
                                      type: string
                                    key:
                                      description: Key is the path in the bucket where
                                        the artifact resides
                                      type: string
                                    serviceAccountKeySecret:
                                      description: ServiceAccountKeySecret is the
                                        secret selector to the bucket's service account
                                        key
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  required:
                                  - key
                                  type: object
                                git:
                                  description: Git contains git artifact location
                                    details
                                  properties:
                                    branch:
                                      description: Branch is the branch to fetch when
                                        `SingleBranch` is enabled
                                      type: string
                                    depth:
                                      description: |-
                                        Depth specifies clones/fetches should be shallow and include the given
                                        number of commits from the branch tip
                                      format: int64
                                      type: integer
                                    disableSubmodules:
                                      description: DisableSubmodules disables submodules
                                        during git clone
                                      type: boolean
                                    fetch:
                                      description: Fetch specifies a number of refs
                                        that should be fetched before checkout
                                      items:
                                        type: string
                                      type: array
                                    insecureIgnoreHostKey:
                                      description: InsecureIgnoreHostKey disables
                                        SSH strict host key checking during git clone
                                      type: boolean
                                    insecureSkipTLS:
                                      description: InsecureSkipTLS disables server
                                        certificate verification resulting in insecure
                                        HTTPS connections
                                      type: boolean
                                    passwordSecret:
                                      description: PasswordSecret is the secret selector
                                        to the repository password
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    repo:
                                      description: Repo is the git repository
                                      type: string
                                    revision:
                                      description: Revision is the git commit, tag,
                                        branch to checkout
                                      type: string
                                    singleBranch:
                                      description: SingleBranch enables single branch
                                        clone, using the `branch` parameter
                                      type: boolean
                                    sshPrivateKeySecret:
                                      description: SSHPrivateKeySecret is the secret
                                        selector to the repository ssh private key
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    usernameSecret:
                                      description: UsernameSecret is the secret selector
                                        to the repository username
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  required:
                                  - repo
                                  type: object
                                globalName:
                                  description: |-
                                    GlobalName exports an output artifact to the global scope, making it available as
                                    '{{workflow.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts
                                  type: string
                                hdfs:
                                  description: HDFS contains HDFS artifact location
                                    details
                                  properties:
                                    addresses:
                                      description: Addresses is accessible addresses
                                        of HDFS name nodes
                                      items:
                                        type: string
                                      type: array
                                    dataTransferProtection:
                                      description: |-
                                        DataTransferProtection is the protection level for HDFS data transfer.
                                        It corresponds to the dfs.data.transfer.protection configuration in HDFS.
                                      type: string
                                    force:
                                      description: Force copies a file forcibly even
                                        if it exists
                                      type: boolean
                                    hdfsUser:
                                      description: |-
                                        HDFSUser is the user to access HDFS file system.
                                        It is ignored if either ccache or keytab is used.
                                      type: string
                                    krbCCacheSecret:
                                      description: |-
                                        KrbCCacheSecret is the secret selector for Kerberos ccache
                                        Either ccache or keytab can be set to use Kerberos.
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    krbConfigConfigMap:
                                      description: |-
                                        KrbConfig is the configmap selector for Kerberos config as string
                                        It must be set if either ccache or keytab is used.
                                      properties:
                                        key:
                                          description: The key to select.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the ConfigMap
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    krbKeytabSecret:
                                      description: |-
                                        KrbKeytabSecret is the secret selector for Kerberos keytab
                                        Either ccache or keytab can be set to use Kerberos.
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    krbRealm:
                                      description: |-
                                        KrbRealm is the Kerberos realm used with Kerberos keytab
                                        It must be set if keytab is used.
                                      type: string
                                    krbServicePrincipalName:
                                      description: |-
                                        KrbServicePrincipalName is the principal name of Kerberos service
                                        It must be set if either ccache or keytab is used.
                                      type: string
                                    krbUsername:
                                      description: |-
                                        KrbUsername is the Kerberos username used with Kerberos keytab
                                        It must be set if keytab is used.
                                      type: string
                                    path:
                                      description: Path is a file path in HDFS
                                      type: string
                                  required:
                                  - path
                                  type: object
                                http:
                                  description: HTTP contains HTTP artifact location
                                    details
                                  properties:
                                    auth:
                                      description: Auth contains information for client
                                        authentication
                                      properties:
                                        basicAuth:
                                          description: BasicAuth describes the secret
                                            selectors required for basic authentication
                                          properties:
                                            passwordSecret:
                                              description: PasswordSecret is the secret
                                                selector to the repository password
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            usernameSecret:
                                              description: UsernameSecret is the secret
                                                selector to the repository username
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                          type: object
                                        clientCert:
                                          description: ClientCertAuth holds necessary
                                            information for client authentication
                                            via certificates
                                          properties:
                                            clientCertSecret:
                                              description: SecretKeySelector selects
                                                a key of a Secret.
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            clientKeySecret:
                                              description: SecretKeySelector selects
                                                a key of a Secret.
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                          type: object
                                        oauth2:
                                          description: OAuth2Auth holds all information
                                            for client authentication via OAuth2 tokens
                                          properties:
                                            clientIDSecret:
                                              description: SecretKeySelector selects
                                                a key of a Secret.
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            clientSecretSecret:
                                              description: SecretKeySelector selects
                                                a key of a Secret.
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            endpointParams:
                                              items:
                                                description: EndpointParam is for
                                                  requesting optional fields that
                                                  should be sent in the oauth request
                                                properties:
                                                  key:
                                                    description: Name is the header
                                                      name
                                                    type: string
                                                  value:
                                                    description: Value is the literal
                                                      value to use for the header
                                                    type: string
                                                required:
                                                - key
                                                type: object
                                              type: array
                                            scopes:
                                              items:
                                                type: string
                                              type: array
                                            tokenURLSecret:
                                              description: SecretKeySelector selects
                                                a key of a Secret.
                                              properties:
                                                key:
                                                  description: The key of the secret
                                                    to select from.  Must be a valid
                                                    secret key.
                                                  type: string
                                                name:
                                                  default: ""
                                                  description: |-
                                                    Name of the referent.
                                                    This field is effectively required, but due to backwards compatibility is
                                                    allowed to be empty. Instances of this type with an empty value here are
                                                    almost certainly wrong.
                                                    More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                  type: string
                                                optional:
                                                  description: Specify whether the
                                                    Secret or its key must be defined
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                              x-kubernetes-map-type: atomic
                                          type: object
                                      type: object
                                    headers:
                                      description: Headers are an optional list of
                                        headers to send with HTTP requests for artifacts
                                      items:
                                        description: Header indicate a key-value request
                                          header to be used when fetching artifacts
                                          over HTTP
                                        properties:
                                          name:
                                            description: Name is the header name
                                            type: string
                                          value:
                                            description: Value is the literal value
                                              to use for the header
                                            type: string
                                        required:
                                        - name
                                        - value
                                        type: object
                                      type: array
                                    url:
                                      description: URL of the artifact
                                      type: string
                                  required:
                                  - url
                                  type: object
                                mode:
                                  description: |-
                                    mode bits to use on this file, must be a value between 0 and 0777.
                                    Set when loading input artifacts. It is recommended to set the mode value
                                    to ensure the artifact has the expected permissions in your container.
                                  format: int32
                                  maximum: 511
                                  minimum: 0
                                  type: integer
                                name:
                                  description: name of the artifact. must be unique
                                    within a template's inputs/outputs.
                                  pattern: ^[-a-zA-Z0-9_{}.]+$
                                  type: string
                                optional:
                                  description: Make Artifacts optional, if Artifacts
                                    doesn't generate or exist
                                  type: boolean
                                oss:
                                  description: OSS contains OSS artifact location
                                    details
                                  properties:
                                    accessKeySecret:
                                      description: AccessKeySecret is the secret selector
                                        to the bucket's access key
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    bucket:
                                      description: Bucket is the name of the bucket
                                      type: string
                                    createBucketIfNotPresent:
                                      description: CreateBucketIfNotPresent tells
                                        the driver to attempt to create the OSS bucket
                                        for output artifacts, if it doesn't exist
                                      type: boolean
                                    endpoint:
                                      description: Endpoint is the hostname of the
                                        bucket endpoint
                                      type: string
                                    key:
                                      description: Key is the path in the bucket where
                                        the artifact resides
                                      type: string
                                    lifecycleRule:
                                      description: LifecycleRule specifies how to
                                        manage bucket's lifecycle
                                      properties:
                                        markDeletionAfterDays:
                                          description: MarkDeletionAfterDays is the
                                            number of days before we delete objects
                                            in the bucket
                                          format: int32
                                          type: integer
                                        markInfrequentAccessAfterDays:
                                          description: MarkInfrequentAccessAfterDays
                                            is the number of days before we convert
                                            the objects in the bucket to Infrequent
                                            Access (IA) storage type
                                          format: int32
                                          type: integer
                                      type: object
                                    secretKeySecret:
                                      description: SecretKeySecret is the secret selector
                                        to the bucket's secret key
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    securityToken:
                                      description: 'SecurityToken is the user''s temporary
                                        security token. For more details, check out:
                                        https://www.alibabacloud.com/help/doc-detail/100624.htm'
                                      type: string
                                    useSDKCreds:
                                      description: UseSDKCreds tells the driver to
                                        figure out credentials based on sdk defaults.
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                path:
                                  description: Path is the container path to the artifact
                                  type: string
                                plugin:
                                  description: Plugin contains plugin artifact location
                                    details
                                  properties:
                                    configuration:
                                      description: Configuration is the plugin defined
                                        configuration for the artifact driver plugin
                                      type: string
                                    connectionTimeoutSeconds:
                                      description: ConnectionTimeoutSeconds is the
                                        timeout for the artifact driver connection,
                                        overriding the driver's timeout
                                      format: int32
                                      type: integer
                                    key:
                                      description: Key is the path in the artifact
                                        repository where the artifact resides
                                      type: string
                                    name:
                                      description: Name is the name of the artifact
                                        driver plugin
                                      type: string
                                  required:
                                  - key
                                  type: object
                                raw:
                                  description: Raw contains raw artifact location
                                    details
                                  properties:
                                    data:
                                      description: Data is the string contents of
                                        the artifact
                                      type: string
                                  required:
                                  - data
                                  type: object
                                recurseMode:
                                  description: If mode is set, apply the permission
                                    recursively into the artifact if it is a folder
                                  type: boolean
                                s3:
                                  description: S3 contains S3 artifact location details
                                  properties:
                                    accessKeySecret:
                                      description: AccessKeySecret is the secret selector
                                        to the bucket's access key
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    bucket:
                                      description: Bucket is the name of the bucket
                                      type: string
                                    caSecret:
                                      description: CASecret specifies the secret that
                                        contains the CA, used to verify the TLS connection
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    createBucketIfNotPresent:
                                      description: CreateBucketIfNotPresent tells
                                        the driver to attempt to create the S3 bucket
                                        for output artifacts, if it doesn't exist.
                                        Setting Enabled Encryption will apply either
                                        SSE-S3 to the bucket if KmsKeyId is not set
                                        or SSE-KMS if it is.
                                      properties:
                                        objectLocking:
                                          description: ObjectLocking Enable object
                                            locking
                                          type: boolean
                                      type: object
                                    encryptionOptions:
                                      description: S3EncryptionOptions used to determine
                                        encryption options during s3 operations
                                      properties:
                                        enableEncryption:
                                          description: EnableEncryption tells the
                                            driver to encrypt objects if set to true.
                                            If kmsKeyId and serverSideCustomerKeySecret
                                            are not set, SSE-S3 will be used
                                          type: boolean
                                        kmsEncryptionContext:
                                          description: KmsEncryptionContext is a json
                                            blob that contains an encryption context.
                                            See https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
                                            for more information
                                          type: string
                                        kmsKeyId:
                                          description: KMSKeyId tells the driver to
                                            encrypt the object using the specified
                                            KMS Key.
                                          type: string
                                        serverSideCustomerKeySecret:
                                          description: ServerSideCustomerKeySecret
                                            tells the driver to encrypt the output
                                            artifacts using SSE-C with the specified
                                            secret.
                                          properties:
                                            key:
                                              description: The key of the secret to
                                                select from.  Must be a valid secret
                                                key.
                                              type: string
                                            name:
                                              default: ""
                                              description: |-
                                                Name of the referent.
                                                This field is effectively required, but due to backwards compatibility is
                                                allowed to be empty. Instances of this type with an empty value here are
                                                almost certainly wrong.
                                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                              type: string
                                            optional:
                                              description: Specify whether the Secret
                                                or its key must be defined
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                      type: object
                                    endpoint:
                                      description: Endpoint is the hostname of the
                                        bucket endpoint
                                      type: string
                                    insecure:
                                      description: Insecure will connect to the service
                                        with TLS
                                      type: boolean
                                    key:
                                      description: Key is the key in the bucket where
                                        the artifact resides
                                      type: string
                                    region:
                                      description: Region contains the optional bucket
                                        region
                                      type: string
                                    roleARN:
                                      description: RoleARN is the Amazon Resource
                                        Name (ARN) of the role to assume.
                                      type: string
                                    secretKeySecret:
                                      description: SecretKeySecret is the secret selector
                                        to the bucket's secret key
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    sessionTokenSecret:
                                      description: SessionTokenSecret is used for
                                        ephemeral credentials like an IAM assume role
                                        or S3 access grant
                                      properties:
                                        key:
                                          description: The key of the secret to select
                                            from.  Must be a valid secret key.
                                          type: string
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    useSDKCreds:
                                      description: UseSDKCreds tells the driver to
                                        figure out credentials based on sdk defaults.
                                      type: boolean
                                  type: object
                                subPath:
                                  description: SubPath allows an artifact to be sourced
                                    from a subpath within the specified source
                                  type: string
                              required:
                              - name
                              type: object
                              x-kubernetes-validations:
                              - message: at most one artifact location can be specified
                                rule: '(has(self.s3) ? 1 : 0) + (has(self.git) ? 1
                                  : 0) + (has(self.http) ? 1 : 0) + (has(self.artifactory)
                                  ? 1 : 0) + (has(self.hdfs) ? 1 : 0) + (has(self.raw)
                                  ? 1 : 0) + (has(self.oss) ? 1 : 0) + (has(self.gcs)
                                  ? 1 : 0) + (has(self.azure) ? 1 : 0) + (has(self.plugin)
                                  ? 1 : 0) <= 1'
                          required:
                          - artifact
                          type: object
                        mergeStrategy:
                          description: |-
                            MergeStrategy is the strategy used to merge a patch. It defaults to "strategic"
                            Must be one of: strategic, merge, json
                          enum:
                          - strategic
                          - merge
                          - json
                          type: string
                        setOwnerReference:
                          description: SetOwnerReference sets the reference to the
                            workflow on the OwnerReference of generated resource.
                          type: boolean
                        successCondition:
                          description: |-
                            SuccessCondition is a label selector expression which describes the conditions
                            of the k8s resource in which it is acceptable to proceed to the following step
                          type: string
                      required:
                      - action
                      type: object
                      x-kubernetes-validations:
                      - message: only one of manifest or manifestFrom can be specified
                        rule: (has(self.manifest) && !has(self.manifestFrom)) || (!has(self.manifest)
                          && has(self.manifestFrom)) || (!has(self.manifest) && !has(self.manifestFrom))
                    retryStrategy:
                      description: RetryStrategy describes how to retry a template
                        when it fails
                      properties:
                        affinity:
                          description: Affinity prevents running workflow's step on
                            the same host
                          properties:
                            nodeAntiAffinity:
                              description: |-
                                RetryNodeAntiAffinity is a placeholder for future expansion, only empty nodeAntiAffinity is allowed.
                                In order to prevent running steps on the same host, it uses "kubernetes.io/hostname".
                              type: object
                          type: object
                        backoff:
                          description: Backoff is a backoff strategy
                          properties:
                            cap:
                              description: |-
                                Cap is a limit on revised values of the duration parameter. If a
                                multiplication by the factor parameter would make the duration
                                exceed the cap then the duration is set to the cap
                              type: string
                            duration:
                              description: Duration is the amount to back off. Default
                                unit is seconds, but could also be a duration (e.g.
                                "2m", "1h")
                              type: string
                            factor:
                              anyOf:
                              - type: integer
                              - type: string
                              description: Factor is a factor to multiply the base
                                duration after each failed retry
                              x-kubernetes-int-or-string: true
                            maxDuration:
                              description: |-
                                MaxDuration is the maximum amount of time allowed for a workflow in the backoff strategy.
                                It is important to note that if the workflow template includes activeDeadlineSeconds, the pod's deadline is initially set with activeDeadlineSeconds.
                                However, when the workflow fails, the pod's deadline is then overridden by maxDuration.
                                This ensures that the workflow does not exceed the specified maximum duration when retries are involved.
                              type: string
                          type: object
                        expression:
                          description: |-
                            Expression is a condition expression for when a node will be retried. If it evaluates to false, the node will not
                            be retried and the retry strategy will be ignored
                          type: string
                        limit:
                          anyOf:
                          - type: integer
                          - type: string
                          description: |-
                            Limit is the maximum number of retry attempts when retrying a container. It does not include the original
                            container; the maximum number of total attempts will be `limit + 1`.
                          x-kubernetes-int-or-string: true
                        retryPolicy:
                          description: RetryPolicy is a policy of NodePhase statuses
                            that will be retried
                          enum:
                          - Always
                          - OnFailure
                          - OnError
                          - OnTransientError
                          type: string
                      type: object
                    schedulerName:
                      description: |-
                        If specified, the pod will be dispatched by specified scheduler.
                        Or it will be dispatched by workflow scope scheduler if specified.
                        If neither specified, the pod will be dispatched by default scheduler.
                      type: string
                    script:
                      description: Script runs a portion of code against an interpreter
                      properties:
                        args:
                          description: |-
                            Arguments to the entrypoint.
                            The container image's CMD is used if this is not provided.
                            Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
                            cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
                            to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
                            produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
                            of whether the variable exists or not. Cannot be updated.
                            More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        command:
                          description: |-
                            Entrypoint array. Not executed within a shell.
                            The container image's ENTRYPOINT is used if this is not provided.
                            Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
                            cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
                            to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
                            produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
                            of whether the variable exists or not. Cannot be updated.
                            More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        env:
                          description: |-
                            List of environment variables to set in the container.
                            Cannot be updated.
                          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 previously 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. Double $$ are reduced
                                  to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
                                  "$$(VAR_NAME)" will produce the string literal "$(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:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the ConfigMap
                                          or its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  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
                                    x-kubernetes-map-type: atomic
                                  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
                                    x-kubernetes-map-type: atomic
                                  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:
                                        default: ""
                                        description: |-
                                          Name of the referent.
                                          This field is effectively required, but due to backwards compatibility is
                                          allowed to be empty. Instances of this type with an empty value here are
                                          almost certainly wrong.
                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        type: string
                                      optional:
                                        description: Specify whether the Secret or
                                          its key must be defined
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                type: object
                            required:
                            - name
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - name
                          x-kubernetes-list-type: map
                        envFrom:
                          description: |-
                            List of sources to populate environment variables in the container.
                            The keys defined within a source must be a C_IDENTIFIER. All invalid keys
                            will be reported as an event when the container is starting. When a key exists in multiple
                            sources, the value associated with the last source will take precedence.
                            Values defined by an Env with a duplicate key will take precedence.
                            Cannot be updated.
                          items:
                            description: EnvFromSource represents the source of a
                              set of ConfigMaps or Secrets
                            properties:
                              configMapRef:
                                description: The ConfigMap to select from
                                properties:
                                  name:
                                    default: ""
                                    description: |-
                                      Name of the referent.
                                      This field is effectively required, but due to backwards compatibility is
                                      allowed to be empty. Instances of this type with an empty value here are
                                      almost certainly wrong.
                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    type: string
                                  optional:
                                    description: Specify whether the ConfigMap must
                                      be defined
                                    type: boolean
                                type: object
                                x-kubernetes-map-type: atomic
                              prefix:
                                description: Optional text to prepend to the name
                                  of each environment variable. Must be a C_IDENTIFIER.
                                type: string
                              secretRef:
                                description: The Secret to select from
                                properties:
                                  name:
                                    default: ""
                                    description: |-
                                      Name of the referent.
                                      This field is effectively required, but due to backwards compatibility is
                                      allowed to be empty. Instances of this type with an empty value here are
                                      almost certainly wrong.
                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    type: string
                                  optional:
                                    description: Specify whether the Secret must be
                                      defined
                                    type: boolean
                                type: object
                                x-kubernetes-map-type: atomic
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        image:
                          description: |-
                            Container image name.
                            More info: https://kubernetes.io/docs/concepts/containers/images
                            This field is optional to allow higher level config management to default or override
                            container images in workload controllers like Deployments and StatefulSets.
                          type: string
                        imagePullPolicy:
                          description: |-
                            Image pull policy.
                            One of Always, Never, IfNotPresent.
                            Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
                            Cannot be updated.
                            More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
                          type: string
                        lifecycle:
                          description: |-
                            Actions that the management system should take in response to container lifecycle events.
                            Cannot be updated.
                          properties:
                            postStart:
                              description: |-
                                PostStart is called immediately after a container is created. If the handler fails,
                                the container is terminated and restarted according to its restart policy.
                                Other management of the container blocks until the hook completes.
                                More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
                              properties:
                                exec:
                                  description: Exec specifies a command to execute
                                    in the container.
                                  properties:
                                    command:
                                      description: |-
                                        Command is the command line to execute inside the container, the working directory for the
                                        command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                        not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                        a shell, you need to explicitly call out to that shell.
                                        Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                httpGet:
                                  description: HTTPGet specifies an HTTP GET request
                                    to perform.
                                  properties:
                                    host:
                                      description: |-
                                        Host name to connect to, defaults to the pod IP. You probably want to set
                                        "Host" in httpHeaders instead.
                                      type: string
                                    httpHeaders:
                                      description: Custom headers to set in the request.
                                        HTTP allows repeated headers.
                                      items:
                                        description: HTTPHeader describes a custom
                                          header to be used in HTTP probes
                                        properties:
                                          name:
                                            description: |-
                                              The header field name.
                                              This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                            type: string
                                          value:
                                            description: The header field value
                                            type: string
                                        required:
                                        - name
                                        - value
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    path:
                                      description: Path to access on the HTTP server.
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      description: |-
                                        Name or number of the port to access on the container.
                                        Number must be in the range 1 to 65535.
                                        Name must be an IANA_SVC_NAME.
                                      x-kubernetes-int-or-string: true
                                    scheme:
                                      description: |-
                                        Scheme to use for connecting to the host.
                                        Defaults to HTTP.
                                      type: string
                                  required:
                                  - port
                                  type: object
                                sleep:
                                  description: Sleep represents a duration that the
                                    container should sleep.
                                  properties:
                                    seconds:
                                      description: Seconds is the number of seconds
                                        to sleep.
                                      format: int64
                                      type: integer
                                  required:
                                  - seconds
                                  type: object
                                tcpSocket:
                                  description: |-
                                    Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
                                    for backward compatibility. There is no validation of this field and
                                    lifecycle hooks will fail at runtime when it is specified.
                                  properties:
                                    host:
                                      description: 'Optional: Host name to connect
                                        to, defaults to the pod IP.'
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      description: |-
                                        Number or name of the port to access on the container.
                                        Number must be in the range 1 to 65535.
                                        Name must be an IANA_SVC_NAME.
                                      x-kubernetes-int-or-string: true
                                  required:
                                  - port
                                  type: object
                              type: object
                            preStop:
                              description: |-
                                PreStop is called immediately before a container is terminated due to an
                                API request or management event such as liveness/startup probe failure,
                                preemption, resource contention, etc. The handler is not called if the
                                container crashes or exits. The Pod's termination grace period countdown begins before the
                                PreStop hook is executed. Regardless of the outcome of the handler, the
                                container will eventually terminate within the Pod's termination grace
                                period (unless delayed by finalizers). Other management of the container blocks until the hook completes
                                or until the termination grace period is reached.
                                More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
                              properties:
                                exec:
                                  description: Exec specifies a command to execute
                                    in the container.
                                  properties:
                                    command:
                                      description: |-
                                        Command is the command line to execute inside the container, the working directory for the
                                        command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                        not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                        a shell, you need to explicitly call out to that shell.
                                        Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                      items:
                                        type: string
                                      type: array
                                      x-kubernetes-list-type: atomic
                                  type: object
                                httpGet:
                                  description: HTTPGet specifies an HTTP GET request
                                    to perform.
                                  properties:
                                    host:
                                      description: |-
                                        Host name to connect to, defaults to the pod IP. You probably want to set
                                        "Host" in httpHeaders instead.
                                      type: string
                                    httpHeaders:
                                      description: Custom headers to set in the request.
                                        HTTP allows repeated headers.
                                      items:
                                        description: HTTPHeader describes a custom
                                          header to be used in HTTP probes
                                        properties:
                                          name:
                                            description: |-
                                              The header field name.
                                              This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                            type: string
                                          value:
                                            description: The header field value
                                            type: string
                                        required:
                                        - name
                                        - value
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    path:
                                      description: Path to access on the HTTP server.
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      description: |-
                                        Name or number of the port to access on the container.
                                        Number must be in the range 1 to 65535.
                                        Name must be an IANA_SVC_NAME.
                                      x-kubernetes-int-or-string: true
                                    scheme:
                                      description: |-
                                        Scheme to use for connecting to the host.
                                        Defaults to HTTP.
                                      type: string
                                  required:
                                  - port
                                  type: object
                                sleep:
                                  description: Sleep represents a duration that the
                                    container should sleep.
                                  properties:
                                    seconds:
                                      description: Seconds is the number of seconds
                                        to sleep.
                                      format: int64
                                      type: integer
                                  required:
                                  - seconds
                                  type: object
                                tcpSocket:
                                  description: |-
                                    Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
                                    for backward compatibility. There is no validation of this field and
                                    lifecycle hooks will fail at runtime when it is specified.
                                  properties:
                                    host:
                                      description: 'Optional: Host name to connect
                                        to, defaults to the pod IP.'
                                      type: string
                                    port:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      description: |-
                                        Number or name of the port to access on the container.
                                        Number must be in the range 1 to 65535.
                                        Name must be an IANA_SVC_NAME.
                                      x-kubernetes-int-or-string: true
                                  required:
                                  - port
                                  type: object
                              type: object
                            stopSignal:
                              description: |-
                                StopSignal defines which signal will be sent to a container when it is being stopped.
                                If not specified, the default is defined by the container runtime in use.
                                StopSignal can only be set for Pods with a non-empty .spec.os.name
                              type: string
                          type: object
                        livenessProbe:
                          description: |-
                            Periodic probe of container liveness.
                            Container will be restarted if the probe fails.
                            Cannot be updated.
                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                          properties:
                            exec:
                              description: Exec specifies a command to execute in
                                the container.
                              properties:
                                command:
                                  description: |-
                                    Command is the command line to execute inside the container, the working directory for the
                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                    a shell, you need to explicitly call out to that shell.
                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              description: |-
                                Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                Defaults to 3. Minimum value is 1.
                              format: int32
                              type: integer
                            grpc:
                              description: GRPC specifies a GRPC HealthCheckRequest.
                              properties:
                                port:
                                  description: Port number of the gRPC service. Number
                                    must be in the range 1 to 65535.
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  description: |-
                                    Service is the name of the service to place in the gRPC HealthCheckRequest
                                    (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                    If this is not specified, the default behavior is defined by gRPC.
                                  type: string
                              required:
                              - port
                              type: object
                            httpGet:
                              description: HTTPGet specifies an HTTP GET request to
                                perform.
                              properties:
                                host:
                                  description: |-
                                    Host name to connect to, defaults to the pod IP. You probably want to set
                                    "Host" in httpHeaders instead.
                                  type: string
                                httpHeaders:
                                  description: Custom headers to set in the request.
                                    HTTP allows repeated headers.
                                  items:
                                    description: HTTPHeader describes a custom header
                                      to be used in HTTP probes
                                    properties:
                                      name:
                                        description: |-
                                          The header field name.
                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                        type: string
                                      value:
                                        description: The header field value
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  description: Path to access on the HTTP server.
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    Name or number of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  description: |-
                                    Scheme to use for connecting to the host.
                                    Defaults to HTTP.
                                  type: string
                              required:
                              - port
                              type: object
                            initialDelaySeconds:
                              description: |-
                                Number of seconds after the container has started before liveness probes are initiated.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                            periodSeconds:
                              description: |-
                                How often (in seconds) to perform the probe.
                                Default to 10 seconds. Minimum value is 1.
                              format: int32
                              type: integer
                            successThreshold:
                              description: |-
                                Minimum consecutive successes for the probe to be considered successful after having failed.
                                Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                              format: int32
                              type: integer
                            tcpSocket:
                              description: TCPSocket specifies a connection to a TCP
                                port.
                              properties:
                                host:
                                  description: 'Optional: Host name to connect to,
                                    defaults to the pod IP.'
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    Number or name of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                              required:
                              - port
                              type: object
                            terminationGracePeriodSeconds:
                              description: |-
                                Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
                                The grace period is the duration in seconds after the processes running in the pod are sent
                                a termination signal and the time when the processes are forcibly halted with a kill signal.
                                Set this value longer than the expected cleanup time for your process.
                                If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
                                value overrides the value provided by the pod spec.
                                Value must be non-negative integer. The value zero indicates stop immediately via
                                the kill signal (no opportunity to shut down).
                                This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
                                Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
                              format: int64
                              type: integer
                            timeoutSeconds:
                              description: |-
                                Number of seconds after which the probe times out.
                                Defaults to 1 second. Minimum value is 1.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                          type: object
                        name:
                          description: |-
                            Name of the container specified as a DNS_LABEL.
                            Each container in a pod must have a unique name (DNS_LABEL).
                            Cannot be updated.
                          type: string
                        ports:
                          description: |-
                            List of ports to expose from the container. Not specifying a port here
                            DOES NOT prevent that port from being exposed. Any port which is
                            listening on the default "0.0.0.0" address inside a container will be
                            accessible from the network.
                            Modifying this array with strategic merge patch may corrupt the data.
                            For more information See https://github.com/kubernetes/kubernetes/issues/108255.
                            Cannot be updated.
                          items:
                            description: ContainerPort represents a network port in
                              a single container.
                            properties:
                              containerPort:
                                description: |-
                                  Number of port to expose on the pod's IP address.
                                  This must be a valid port number, 0 < x < 65536.
                                format: int32
                                type: integer
                              hostIP:
                                description: What host IP to bind the external port
                                  to.
                                type: string
                              hostPort:
                                description: |-
                                  Number of port to expose on the host.
                                  If specified, this must be a valid port number, 0 < x < 65536.
                                  If HostNetwork is specified, this must match ContainerPort.
                                  Most containers do not need this.
                                format: int32
                                type: integer
                              name:
                                description: |-
                                  If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
                                  named port in a pod must have a unique name. Name for the port that can be
                                  referred to by services.
                                type: string
                              protocol:
                                default: TCP
                                description: |-
                                  Protocol for port. Must be UDP, TCP, or SCTP.
                                  Defaults to "TCP".
                                type: string
                            required:
                            - containerPort
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - containerPort
                          - protocol
                          x-kubernetes-list-type: map
                        readinessProbe:
                          description: |-
                            Periodic probe of container service readiness.
                            Container will be removed from service endpoints if the probe fails.
                            Cannot be updated.
                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                          properties:
                            exec:
                              description: Exec specifies a command to execute in
                                the container.
                              properties:
                                command:
                                  description: |-
                                    Command is the command line to execute inside the container, the working directory for the
                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                    a shell, you need to explicitly call out to that shell.
                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              description: |-
                                Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                Defaults to 3. Minimum value is 1.
                              format: int32
                              type: integer
                            grpc:
                              description: GRPC specifies a GRPC HealthCheckRequest.
                              properties:
                                port:
                                  description: Port number of the gRPC service. Number
                                    must be in the range 1 to 65535.
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  description: |-
                                    Service is the name of the service to place in the gRPC HealthCheckRequest
                                    (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                    If this is not specified, the default behavior is defined by gRPC.
                                  type: string
                              required:
                              - port
                              type: object
                            httpGet:
                              description: HTTPGet specifies an HTTP GET request to
                                perform.
                              properties:
                                host:
                                  description: |-
                                    Host name to connect to, defaults to the pod IP. You probably want to set
                                    "Host" in httpHeaders instead.
                                  type: string
                                httpHeaders:
                                  description: Custom headers to set in the request.
                                    HTTP allows repeated headers.
                                  items:
                                    description: HTTPHeader describes a custom header
                                      to be used in HTTP probes
                                    properties:
                                      name:
                                        description: |-
                                          The header field name.
                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                        type: string
                                      value:
                                        description: The header field value
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  description: Path to access on the HTTP server.
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    Name or number of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  description: |-
                                    Scheme to use for connecting to the host.
                                    Defaults to HTTP.
                                  type: string
                              required:
                              - port
                              type: object
                            initialDelaySeconds:
                              description: |-
                                Number of seconds after the container has started before liveness probes are initiated.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                            periodSeconds:
                              description: |-
                                How often (in seconds) to perform the probe.
                                Default to 10 seconds. Minimum value is 1.
                              format: int32
                              type: integer
                            successThreshold:
                              description: |-
                                Minimum consecutive successes for the probe to be considered successful after having failed.
                                Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                              format: int32
                              type: integer
                            tcpSocket:
                              description: TCPSocket specifies a connection to a TCP
                                port.
                              properties:
                                host:
                                  description: 'Optional: Host name to connect to,
                                    defaults to the pod IP.'
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    Number or name of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                              required:
                              - port
                              type: object
                            terminationGracePeriodSeconds:
                              description: |-
                                Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
                                The grace period is the duration in seconds after the processes running in the pod are sent
                                a termination signal and the time when the processes are forcibly halted with a kill signal.
                                Set this value longer than the expected cleanup time for your process.
                                If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
                                value overrides the value provided by the pod spec.
                                Value must be non-negative integer. The value zero indicates stop immediately via
                                the kill signal (no opportunity to shut down).
                                This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
                                Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
                              format: int64
                              type: integer
                            timeoutSeconds:
                              description: |-
                                Number of seconds after which the probe times out.
                                Defaults to 1 second. Minimum value is 1.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                          type: object
                        resizePolicy:
                          description: Resources resize policy for the container.
                          items:
                            description: ContainerResizePolicy represents resource
                              resize policy for the container.
                            properties:
                              resourceName:
                                description: |-
                                  Name of the resource to which this resource resize policy applies.
                                  Supported values: cpu, memory.
                                type: string
                              restartPolicy:
                                description: |-
                                  Restart policy to apply when specified resource is resized.
                                  If not specified, it defaults to NotRequired.
                                type: string
                            required:
                            - resourceName
                            - restartPolicy
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        resources:
                          description: |-
                            Compute Resources required by this container.
                            Cannot be updated.
                            More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                          properties:
                            claims:
                              description: |-
                                Claims lists the names of resources, defined in spec.resourceClaims,
                                that are used by this container.

                                This is an alpha field and requires enabling the
                                DynamicResourceAllocation feature gate.

                                This field is immutable. It can only be set for containers.
                              items:
                                description: ResourceClaim references one entry in
                                  PodSpec.ResourceClaims.
                                properties:
                                  name:
                                    description: |-
                                      Name must match the name of one entry in pod.spec.resourceClaims of
                                      the Pod where this field is used. It makes that resource available
                                      inside a container.
                                    type: string
                                  request:
                                    description: |-
                                      Request is the name chosen for a request in the referenced claim.
                                      If empty, everything from the claim is made available, otherwise
                                      only the result of this request.
                                    type: string
                                required:
                                - name
                                type: object
                              type: array
                              x-kubernetes-list-map-keys:
                              - name
                              x-kubernetes-list-type: map
                            limits:
                              additionalProperties:
                                anyOf:
                                - type: integer
                                - type: string
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                              description: |-
                                Limits describes the maximum amount of compute resources allowed.
                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                              type: object
                            requests:
                              additionalProperties:
                                anyOf:
                                - type: integer
                                - type: string
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                              description: |-
                                Requests describes the minimum amount of compute resources required.
                                If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                              type: object
                          type: object
                        restartPolicy:
                          description: |-
                            RestartPolicy defines the restart behavior of individual containers in a pod.
                            This field may only be set for init containers, and the only allowed value is "Always".
                            For non-init containers or when this field is not specified,
                            the restart behavior is defined by the Pod's restart policy and the container type.
                            Setting the RestartPolicy as "Always" for the init container will have the following effect:
                            this init container will be continually restarted on
                            exit until all regular containers have terminated. Once all regular
                            containers have completed, all init containers with restartPolicy "Always"
                            will be shut down. This lifecycle differs from normal init containers and
                            is often referred to as a "sidecar" container. Although this init
                            container still starts in the init container sequence, it does not wait
                            for the container to complete before proceeding to the next init
                            container. Instead, the next init container starts immediately after this
                            init container is started, or after any startupProbe has successfully
                            completed.
                          type: string
                        securityContext:
                          description: |-
                            SecurityContext defines the security options the container should be run with.
                            If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
                            More info: https://kubernetes.io/docs/tasks/configure-pod-container/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
                                Note that this field cannot be set when spec.os.name is windows.
                              type: boolean
                            appArmorProfile:
                              description: |-
                                appArmorProfile is the AppArmor options to use by this container. If set, this profile
                                overrides the pod's appArmorProfile.
                                Note that this field cannot be set when spec.os.name is windows.
                              properties:
                                localhostProfile:
                                  description: |-
                                    localhostProfile indicates a profile loaded on the node that should be used.
                                    The profile must be preconfigured on the node to work.
                                    Must match the loaded name of the profile.
                                    Must be set if and only if type is "Localhost".
                                  type: string
                                type:
                                  description: |-
                                    type indicates which kind of AppArmor profile will be applied.
                                    Valid options are:
                                      Localhost - a profile pre-loaded on the node.
                                      RuntimeDefault - the container runtime's default profile.
                                      Unconfined - no AppArmor enforcement.
                                  type: string
                              required:
                              - type
                              type: object
                            capabilities:
                              description: |-
                                The capabilities to add/drop when running containers.
                                Defaults to the default set of capabilities granted by the container runtime.
                                Note that this field cannot be set when spec.os.name is windows.
                              properties:
                                add:
                                  description: Added capabilities
                                  items:
                                    description: Capability represent POSIX capabilities
                                      type
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                drop:
                                  description: Removed capabilities
                                  items:
                                    description: Capability represent POSIX capabilities
                                      type
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            privileged:
                              description: |-
                                Run container in privileged mode.
                                Processes in privileged containers are essentially equivalent to root on the host.
                                Defaults to false.
                                Note that this field cannot be set when spec.os.name is windows.
                              type: boolean
                            procMount:
                              description: |-
                                procMount denotes the type of proc mount to use for the containers.
                                The default value is Default which uses the container runtime defaults for
                                readonly paths and masked paths.
                                This requires the ProcMountType feature flag to be enabled.
                                Note that this field cannot be set when spec.os.name is windows.
                              type: string
                            readOnlyRootFilesystem:
                              description: |-
                                Whether this container has a read-only root filesystem.
                                Default is false.
                                Note that this field cannot be set when spec.os.name is windows.
                              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.
                                Note that this field cannot be set when spec.os.name is windows.
                              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.
                                Note that this field cannot be set when spec.os.name is windows.
                              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.
                                Note that this field cannot be set when spec.os.name is windows.
                              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.
                                Note that this field cannot be set when spec.os.name is windows.
                              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 be set if type is "Localhost". Must NOT be set for any other type.
                                  type: string
                                type:
                                  description: |-
                                    type indicates which kind of seccomp profile will be applied.
                                    Valid options are:

                                    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.
                                Note that this field cannot be set when spec.os.name is linux.
                              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
                                hostProcess:
                                  description: |-
                                    HostProcess determines if a container should be run as a 'Host Process' container.
                                    All of a Pod's containers must have the same effective HostProcess value
                                    (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).
                                    In addition, if HostProcess is true then HostNetwork must also be set to true.
                                  type: boolean
                                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
                        source:
                          description: Source contains the source code of the script
                            to execute
                          type: string
                        startupProbe:
                          description: |-
                            StartupProbe indicates that the Pod has successfully initialized.
                            If specified, no other probes are executed until this completes successfully.
                            If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
                            This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
                            when it might take a long time to load data or warm a cache, than during steady-state operation.
                            This cannot be updated.
                            More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                          properties:
                            exec:
                              description: Exec specifies a command to execute in
                                the container.
                              properties:
                                command:
                                  description: |-
                                    Command is the command line to execute inside the container, the working directory for the
                                    command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                    not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                    a shell, you need to explicitly call out to that shell.
                                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              type: object
                            failureThreshold:
                              description: |-
                                Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                Defaults to 3. Minimum value is 1.
                              format: int32
                              type: integer
                            grpc:
                              description: GRPC specifies a GRPC HealthCheckRequest.
                              properties:
                                port:
                                  description: Port number of the gRPC service. Number
                                    must be in the range 1 to 65535.
                                  format: int32
                                  type: integer
                                service:
                                  default: ""
                                  description: |-
                                    Service is the name of the service to place in the gRPC HealthCheckRequest
                                    (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                    If this is not specified, the default behavior is defined by gRPC.
                                  type: string
                              required:
                              - port
                              type: object
                            httpGet:
                              description: HTTPGet specifies an HTTP GET request to
                                perform.
                              properties:
                                host:
                                  description: |-
                                    Host name to connect to, defaults to the pod IP. You probably want to set
                                    "Host" in httpHeaders instead.
                                  type: string
                                httpHeaders:
                                  description: Custom headers to set in the request.
                                    HTTP allows repeated headers.
                                  items:
                                    description: HTTPHeader describes a custom header
                                      to be used in HTTP probes
                                    properties:
                                      name:
                                        description: |-
                                          The header field name.
                                          This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                        type: string
                                      value:
                                        description: The header field value
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                  x-kubernetes-list-type: atomic
                                path:
                                  description: Path to access on the HTTP server.
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    Name or number of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  description: |-
                                    Scheme to use for connecting to the host.
                                    Defaults to HTTP.
                                  type: string
                              required:
                              - port
                              type: object
                            initialDelaySeconds:
                              description: |-
                                Number of seconds after the container has started before liveness probes are initiated.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                            periodSeconds:
                              description: |-
                                How often (in seconds) to perform the probe.
                                Default to 10 seconds. Minimum value is 1.
                              format: int32
                              type: integer
                            successThreshold:
                              description: |-
                                Minimum consecutive successes for the probe to be considered successful after having failed.
                                Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                              format: int32
                              type: integer
                            tcpSocket:
                              description: TCPSocket specifies a connection to a TCP
                                port.
                              properties:
                                host:
                                  description: 'Optional: Host name to connect to,
                                    defaults to the pod IP.'
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: |-
                                    Number or name of the port to access on the container.
                                    Number must be in the range 1 to 65535.
                                    Name must be an IANA_SVC_NAME.
                                  x-kubernetes-int-or-string: true
                              required:
                              - port
                              type: object
                            terminationGracePeriodSeconds:
                              description: |-
                                Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
                                The grace period is the duration in seconds after the processes running in the pod are sent
                                a termination signal and the time when the processes are forcibly halted with a kill signal.
                                Set this value longer than the expected cleanup time for your process.
                                If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
                                value overrides the value provided by the pod spec.
                                Value must be non-negative integer. The value zero indicates stop immediately via
                                the kill signal (no opportunity to shut down).
                                This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
                                Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
                              format: int64
                              type: integer
                            timeoutSeconds:
                              description: |-
                                Number of seconds after which the probe times out.
                                Defaults to 1 second. Minimum value is 1.
                                More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                              format: int32
                              type: integer
                          type: object
                        stdin:
                          description: |-
                            Whether this container should allocate a buffer for stdin in the container runtime. If this
                            is not set, reads from stdin in the container will always result in EOF.
                            Default is false.
                          type: boolean
                        stdinOnce:
                          description: |-
                            Whether the container runtime should close the stdin channel after it has been opened by
                            a single attach. When stdin is true the stdin stream will remain open across multiple attach
                            sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
                            first client attaches to stdin, and then remains open and accepts data until the client disconnects,
                            at which time stdin is closed and remains closed until the container is restarted. If this
                            flag is false, a container processes that reads from stdin will never receive an EOF.
                            Default is false
                          type: boolean
                        terminationMessagePath:
                          description: |-
                            Optional: Path at which the file to which the container's termination message
                            will be written is mounted into the container's filesystem.
                            Message written is intended to be brief final status, such as an assertion failure message.
                            Will be truncated by the node if greater than 4096 bytes. The total message length across
                            all containers will be limited to 12kb.
                            Defaults to /dev/termination-log.
                            Cannot be updated.
                          type: string
                        terminationMessagePolicy:
                          description: |-
                            Indicate how the termination message should be populated. File will use the contents of
                            terminationMessagePath to populate the container status message on both success and failure.
                            FallbackToLogsOnError will use the last chunk of container log output if the termination
                            message file is empty and the container exited with an error.
                            The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
                            Defaults to File.
                            Cannot be updated.
                          type: string
                        tty:
                          description: |-
                            Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
                            Default is false.
                          type: boolean
                        volumeDevices:
                          description: volumeDevices is the list of block devices
                            to be used by the container.
                          items:
                            description: volumeDevice describes a mapping of a raw
                              block device within a container.
                            properties:
                              devicePath:
                                description: devicePath is the path inside of the
                                  container that the device will be mapped to.
                                type: string
                              name:
                                description: name must match the name of a persistentVolumeClaim
                                  in the pod
                                type: string
                            required:
                            - devicePath
                            - name
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - devicePath
                          x-kubernetes-list-type: map
                        volumeMounts:
                          description: |-
                            Pod volumes to mount into the container's filesystem.
                            Cannot be updated.
                          items:
                            description: VolumeMount describes a mounting of a Volume
                              within a container.
                            properties:
                              mountPath:
                                description: |-
                                  Path within the container at which the volume should be mounted.  Must
                                  not contain ':'.
                                type: string
                              mountPropagation:
                                description: |-
                                  mountPropagation determines how mounts are propagated from the host
                                  to container and the other way around.
                                  When not set, MountPropagationNone is used.
                                  This field is beta in 1.10.
                                  When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
                                  (which defaults to None).
                                type: string
                              name:
                                description: This must match the Name of a Volume.
                                type: string
                              readOnly:
                                description: |-
                                  Mounted read-only if true, read-write otherwise (false or unspecified).
                                  Defaults to false.
                                type: boolean
                              recursiveReadOnly:
                                description: |-
                                  RecursiveReadOnly specifies whether read-only mounts should be handled
                                  recursively.

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

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

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

                                  If this field is not specified, it is treated as an equivalent of Disabled.
                                type: string
                              subPath:
                                description: |-
                                  Path within the volume from which the container's volume should be mounted.
                                  Defaults to "" (volume's root).
                                type: string
                              subPathExpr:
                                description: |-
                                  Expanded path within the volume from which the container's volume should be mounted.
                                  Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
                                  Defaults to "" (volume's root).
                                  SubPathExpr and SubPath are mutually exclusive.
                                type: string
                            required:
                            - mountPath
                            - name
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - mountPath
                          x-kubernetes-list-type: map
                        workingDir:
                          description: |-
                            Container's working directory.
                            If not specified, the container runtime's default will be used, which
                            might be configured in the container image.
                            Cannot be updated.
                          type: string
                      type: object
                    securityContext:
                      description: |-
                        SecurityContext holds pod-level security attributes and common container settings.
                        Optional: Defaults to empty.  See type description for default values of each field.
                      properties:
                        appArmorProfile:
                          description: |-
                            appArmorProfile is the AppArmor options to use by the containers in this pod.
                            Note that this field cannot be set when spec.os.name is windows.
                          properties:
                            localhostProfile:
                              description: |-
                                localhostProfile indicates a profile loaded on the node that should be used.
                                The profile must be preconfigured on the node to work.
                                Must match the loaded name of the profile.
                                Must be set if and only if type is "Localhost".
                              type: string
                            type:
                              description: |-
                                type indicates which kind of AppArmor profile will be applied.
                                Valid options are:
                                  Localhost - a profile pre-loaded on the node.
                                  RuntimeDefault - the container runtime's default profile.
                                  Unconfined - no AppArmor enforcement.
                              type: string
                          required:
                          - type
                          type: object
                        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:

                            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----

                            If unset, the Kubelet will not modify the ownership and permissions of any volume.
                            Note that this field cannot be set when spec.os.name is windows.
                          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.
                            Note that this field cannot be set when spec.os.name is windows.
                          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.
                            Note that this field cannot be set when spec.os.name is windows.
                          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.
                            Note that this field cannot be set when spec.os.name is windows.
                          format: int64
                          type: integer
                        seLinuxChangePolicy:
                          description: |-
                            seLinuxChangePolicy defines how the container's SELinux label is applied to all volumes used by the Pod.
                            It has no effect on nodes that do not support SELinux or to volumes does not support SELinux.
                            Valid values are "MountOption" and "Recursive".

                            "Recursive" means relabeling of all files on all Pod volumes by the container runtime.
                            This may be slow for large volumes, but allows mixing privileged and unprivileged Pods sharing the same volume on the same node.

                            "MountOption" mounts all eligible Pod volumes with `-o context` mount option.
                            This requires all Pods that share the same volume to use the same SELinux label.
                            It is not possible to share the same volume among privileged and unprivileged Pods.
                            Eligible volumes are in-tree FibreChannel and iSCSI volumes, and all CSI volumes
                            whose CSI driver announces SELinux support by setting spec.seLinuxMount: true in their
                            CSIDriver instance. Other volumes are always re-labelled recursively.
                            "MountOption" value is allowed only when SELinuxMount feature gate is enabled.

                            If not specified and SELinuxMount feature gate is enabled, "MountOption" is used.
                            If not specified and SELinuxMount feature gate is disabled, "MountOption" is used for ReadWriteOncePod volumes
                            and "Recursive" for all other volumes.

                            This field affects only Pods that have SELinux label set, either in PodSecurityContext or in SecurityContext of all containers.

                            All Pods that use the same volume should use the same seLinuxChangePolicy, otherwise some pods can get stuck in ContainerCreating state.
                            Note that this field cannot be set when spec.os.name is windows.
                          type: string
                        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.
                            Note that this field cannot be set when spec.os.name is windows.
                          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.
                            Note that this field cannot be set when spec.os.name is windows.
                          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 be set if type is "Localhost". Must NOT be set for any other type.
                              type: string
                            type:
                              description: |-
                                type indicates which kind of seccomp profile will be applied.
                                Valid options are:

                                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 and fsGroup (if specified).  If
                            the SupplementalGroupsPolicy feature is enabled, the
                            supplementalGroupsPolicy field determines whether these are in addition
                            to or instead of any group memberships defined in the container image.
                            If unspecified, no additional groups are added, though group memberships
                            defined in the container image may still be used, depending on the
                            supplementalGroupsPolicy field.
                            Note that this field cannot be set when spec.os.name is windows.
                          items:
                            format: int64
                            type: integer
                          type: array
                          x-kubernetes-list-type: atomic
                        supplementalGroupsPolicy:
                          description: |-
                            Defines how supplemental groups of the first container processes are calculated.
                            Valid values are "Merge" and "Strict". If not specified, "Merge" is used.
                            (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled
                            and the container runtime must implement support for this feature.
                            Note that this field cannot be set when spec.os.name is windows.
                          type: string
                        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.
                            Note that this field cannot be set when spec.os.name is windows.
                          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
                          x-kubernetes-list-type: atomic
                        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.
                            Note that this field cannot be set when spec.os.name is linux.
                          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
                            hostProcess:
                              description: |-
                                HostProcess determines if a container should be run as a 'Host Process' container.
                                All of a Pod's containers must have the same effective HostProcess value
                                (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).
                                In addition, if HostProcess is true then HostNetwork must also be set to true.
                              type: boolean
                            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
                    serviceAccountName:
                      description: ServiceAccountName to apply to workflow pods
                      type: string
                    sidecars:
                      description: |-
                        Sidecars is a list of containers which run alongside the main container
                        Sidecars are automatically killed when the main container completes
                      items:
                        description: UserContainer is a container specified by a user.
                        properties:
                          args:
                            description: |-
                              Arguments to the entrypoint.
                              The container image's CMD is used if this is not provided.
                              Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
                              cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
                              to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
                              produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
                              of whether the variable exists or not. Cannot be updated.
                              More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
                            items:
                              type: string
                            type: array
                            x-kubernetes-list-type: atomic
                          command:
                            description: |-
                              Entrypoint array. Not executed within a shell.
                              The container image's ENTRYPOINT is used if this is not provided.
                              Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
                              cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
                              to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
                              produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
                              of whether the variable exists or not. Cannot be updated.
                              More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
                            items:
                              type: string
                            type: array
                            x-kubernetes-list-type: atomic
                          env:
                            description: |-
                              List of environment variables to set in the container.
                              Cannot be updated.
                            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 previously 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. Double $$ are reduced
                                    to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
                                    "$$(VAR_NAME)" will produce the string literal "$(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:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the ConfigMap
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    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
                                      x-kubernetes-map-type: atomic
                                    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
                                      x-kubernetes-map-type: atomic
                                    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:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            or its key must be defined
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  type: object
                              required:
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - name
                            x-kubernetes-list-type: map
                          envFrom:
                            description: |-
                              List of sources to populate environment variables in the container.
                              The keys defined within a source must be a C_IDENTIFIER. All invalid keys
                              will be reported as an event when the container is starting. When a key exists in multiple
                              sources, the value associated with the last source will take precedence.
                              Values defined by an Env with a duplicate key will take precedence.
                              Cannot be updated.
                            items:
                              description: EnvFromSource represents the source of
                                a set of ConfigMaps or Secrets
                              properties:
                                configMapRef:
                                  description: The ConfigMap to select from
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                    optional:
                                      description: Specify whether the ConfigMap must
                                        be defined
                                      type: boolean
                                  type: object
                                  x-kubernetes-map-type: atomic
                                prefix:
                                  description: Optional text to prepend to the name
                                    of each environment variable. Must be a C_IDENTIFIER.
                                  type: string
                                secretRef:
                                  description: The Secret to select from
                                  properties:
                                    name:
                                      default: ""
                                      description: |-
                                        Name of the referent.
                                        This field is effectively required, but due to backwards compatibility is
                                        allowed to be empty. Instances of this type with an empty value here are
                                        almost certainly wrong.
                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      type: string
                                    optional:
                                      description: Specify whether the Secret must
                                        be defined
                                      type: boolean
                                  type: object
                                  x-kubernetes-map-type: atomic
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          image:
                            description: |-
                              Container image name.
                              More info: https://kubernetes.io/docs/concepts/containers/images
                              This field is optional to allow higher level config management to default or override
                              container images in workload controllers like Deployments and StatefulSets.
                            type: string
                          imagePullPolicy:
                            description: |-
                              Image pull policy.
                              One of Always, Never, IfNotPresent.
                              Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
                              Cannot be updated.
                              More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
                            type: string
                          lifecycle:
                            description: |-
                              Actions that the management system should take in response to container lifecycle events.
                              Cannot be updated.
                            properties:
                              postStart:
                                description: |-
                                  PostStart is called immediately after a container is created. If the handler fails,
                                  the container is terminated and restarted according to its restart policy.
                                  Other management of the container blocks until the hook completes.
                                  More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
                                properties:
                                  exec:
                                    description: Exec specifies a command to execute
                                      in the container.
                                    properties:
                                      command:
                                        description: |-
                                          Command is the command line to execute inside the container, the working directory for the
                                          command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                          not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                          a shell, you need to explicitly call out to that shell.
                                          Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                  httpGet:
                                    description: HTTPGet specifies an HTTP GET request
                                      to perform.
                                    properties:
                                      host:
                                        description: |-
                                          Host name to connect to, defaults to the pod IP. You probably want to set
                                          "Host" in httpHeaders instead.
                                        type: string
                                      httpHeaders:
                                        description: Custom headers to set in the
                                          request. HTTP allows repeated headers.
                                        items:
                                          description: HTTPHeader describes a custom
                                            header to be used in HTTP probes
                                          properties:
                                            name:
                                              description: |-
                                                The header field name.
                                                This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                              type: string
                                            value:
                                              description: The header field value
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      path:
                                        description: Path to access on the HTTP server.
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: |-
                                          Name or number of the port to access on the container.
                                          Number must be in the range 1 to 65535.
                                          Name must be an IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        description: |-
                                          Scheme to use for connecting to the host.
                                          Defaults to HTTP.
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  sleep:
                                    description: Sleep represents a duration that
                                      the container should sleep.
                                    properties:
                                      seconds:
                                        description: Seconds is the number of seconds
                                          to sleep.
                                        format: int64
                                        type: integer
                                    required:
                                    - seconds
                                    type: object
                                  tcpSocket:
                                    description: |-
                                      Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
                                      for backward compatibility. There is no validation of this field and
                                      lifecycle hooks will fail at runtime when it is specified.
                                    properties:
                                      host:
                                        description: 'Optional: Host name to connect
                                          to, defaults to the pod IP.'
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: |-
                                          Number or name of the port to access on the container.
                                          Number must be in the range 1 to 65535.
                                          Name must be an IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                    required:
                                    - port
                                    type: object
                                type: object
                              preStop:
                                description: |-
                                  PreStop is called immediately before a container is terminated due to an
                                  API request or management event such as liveness/startup probe failure,
                                  preemption, resource contention, etc. The handler is not called if the
                                  container crashes or exits. The Pod's termination grace period countdown begins before the
                                  PreStop hook is executed. Regardless of the outcome of the handler, the
                                  container will eventually terminate within the Pod's termination grace
                                  period (unless delayed by finalizers). Other management of the container blocks until the hook completes
                                  or until the termination grace period is reached.
                                  More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
                                properties:
                                  exec:
                                    description: Exec specifies a command to execute
                                      in the container.
                                    properties:
                                      command:
                                        description: |-
                                          Command is the command line to execute inside the container, the working directory for the
                                          command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                          not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                          a shell, you need to explicitly call out to that shell.
                                          Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                  httpGet:
                                    description: HTTPGet specifies an HTTP GET request
                                      to perform.
                                    properties:
                                      host:
                                        description: |-
                                          Host name to connect to, defaults to the pod IP. You probably want to set
                                          "Host" in httpHeaders instead.
                                        type: string
                                      httpHeaders:
                                        description: Custom headers to set in the
                                          request. HTTP allows repeated headers.
                                        items:
                                          description: HTTPHeader describes a custom
                                            header to be used in HTTP probes
                                          properties:
                                            name:
                                              description: |-
                                                The header field name.
                                                This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                              type: string
                                            value:
                                              description: The header field value
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      path:
                                        description: Path to access on the HTTP server.
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: |-
                                          Name or number of the port to access on the container.
                                          Number must be in the range 1 to 65535.
                                          Name must be an IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        description: |-
                                          Scheme to use for connecting to the host.
                                          Defaults to HTTP.
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  sleep:
                                    description: Sleep represents a duration that
                                      the container should sleep.
                                    properties:
                                      seconds:
                                        description: Seconds is the number of seconds
                                          to sleep.
                                        format: int64
                                        type: integer
                                    required:
                                    - seconds
                                    type: object
                                  tcpSocket:
                                    description: |-
                                      Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept
                                      for backward compatibility. There is no validation of this field and
                                      lifecycle hooks will fail at runtime when it is specified.
                                    properties:
                                      host:
                                        description: 'Optional: Host name to connect
                                          to, defaults to the pod IP.'
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: |-
                                          Number or name of the port to access on the container.
                                          Number must be in the range 1 to 65535.
                                          Name must be an IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                    required:
                                    - port
                                    type: object
                                type: object
                              stopSignal:
                                description: |-
                                  StopSignal defines which signal will be sent to a container when it is being stopped.
                                  If not specified, the default is defined by the container runtime in use.
                                  StopSignal can only be set for Pods with a non-empty .spec.os.name
                                type: string
                            type: object
                          livenessProbe:
                            description: |-
                              Periodic probe of container liveness.
                              Container will be restarted if the probe fails.
                              Cannot be updated.
                              More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                            properties:
                              exec:
                                description: Exec specifies a command to execute in
                                  the container.
                                properties:
                                  command:
                                    description: |-
                                      Command is the command line to execute inside the container, the working directory for the
                                      command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                      not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                      a shell, you need to explicitly call out to that shell.
                                      Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              failureThreshold:
                                description: |-
                                  Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                  Defaults to 3. Minimum value is 1.
                                format: int32
                                type: integer
                              grpc:
                                description: GRPC specifies a GRPC HealthCheckRequest.
                                properties:
                                  port:
                                    description: Port number of the gRPC service.
                                      Number must be in the range 1 to 65535.
                                    format: int32
                                    type: integer
                                  service:
                                    default: ""
                                    description: |-
                                      Service is the name of the service to place in the gRPC HealthCheckRequest
                                      (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                      If this is not specified, the default behavior is defined by gRPC.
                                    type: string
                                required:
                                - port
                                type: object
                              httpGet:
                                description: HTTPGet specifies an HTTP GET request
                                  to perform.
                                properties:
                                  host:
                                    description: |-
                                      Host name to connect to, defaults to the pod IP. You probably want to set
                                      "Host" in httpHeaders instead.
                                    type: string
                                  httpHeaders:
                                    description: Custom headers to set in the request.
                                      HTTP allows repeated headers.
                                    items:
                                      description: HTTPHeader describes a custom header
                                        to be used in HTTP probes
                                      properties:
                                        name:
                                          description: |-
                                            The header field name.
                                            This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                          type: string
                                        value:
                                          description: The header field value
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  path:
                                    description: Path to access on the HTTP server.
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    description: |-
                                      Name or number of the port to access on the container.
                                      Number must be in the range 1 to 65535.
                                      Name must be an IANA_SVC_NAME.
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    description: |-
                                      Scheme to use for connecting to the host.
                                      Defaults to HTTP.
                                    type: string
                                required:
                                - port
                                type: object
                              initialDelaySeconds:
                                description: |-
                                  Number of seconds after the container has started before liveness probes are initiated.
                                  More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                format: int32
                                type: integer
                              periodSeconds:
                                description: |-
                                  How often (in seconds) to perform the probe.
                                  Default to 10 seconds. Minimum value is 1.
                                format: int32
                                type: integer
                              successThreshold:
                                description: |-
                                  Minimum consecutive successes for the probe to be considered successful after having failed.
                                  Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                                format: int32
                                type: integer
                              tcpSocket:
                                description: TCPSocket specifies a connection to a
                                  TCP port.
                                properties:
                                  host:
                                    description: 'Optional: Host name to connect to,
                                      defaults to the pod IP.'
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    description: |-
                                      Number or name of the port to access on the container.
                                      Number must be in the range 1 to 65535.
                                      Name must be an IANA_SVC_NAME.
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                              terminationGracePeriodSeconds:
                                description: |-
                                  Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
                                  The grace period is the duration in seconds after the processes running in the pod are sent
                                  a termination signal and the time when the processes are forcibly halted with a kill signal.
                                  Set this value longer than the expected cleanup time for your process.
                                  If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
                                  value overrides the value provided by the pod spec.
                                  Value must be non-negative integer. The value zero indicates stop immediately via
                                  the kill signal (no opportunity to shut down).
                                  This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
                                  Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
                                format: int64
                                type: integer
                              timeoutSeconds:
                                description: |-
                                  Number of seconds after which the probe times out.
                                  Defaults to 1 second. Minimum value is 1.
                                  More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                format: int32
                                type: integer
                            type: object
                          mirrorVolumeMounts:
                            description: |-
                              MirrorVolumeMounts will mount the same volumes specified in the main container
                              to the container (including artifacts), at the same mountPaths. This enables
                              dind daemon to partially see the same filesystem as the main container in
                              order to use features such as docker volume binding
                            type: boolean
                          name:
                            description: |-
                              Name of the container specified as a DNS_LABEL.
                              Each container in a pod must have a unique name (DNS_LABEL).
                              Cannot be updated.
                            type: string
                          ports:
                            description: |-
                              List of ports to expose from the container. Not specifying a port here
                              DOES NOT prevent that port from being exposed. Any port which is
                              listening on the default "0.0.0.0" address inside a container will be
                              accessible from the network.
                              Modifying this array with strategic merge patch may corrupt the data.
                              For more information See https://github.com/kubernetes/kubernetes/issues/108255.
                              Cannot be updated.
                            items:
                              description: ContainerPort represents a network port
                                in a single container.
                              properties:
                                containerPort:
                                  description: |-
                                    Number of port to expose on the pod's IP address.
                                    This must be a valid port number, 0 < x < 65536.
                                  format: int32
                                  type: integer
                                hostIP:
                                  description: What host IP to bind the external port
                                    to.
                                  type: string
                                hostPort:
                                  description: |-
                                    Number of port to expose on the host.
                                    If specified, this must be a valid port number, 0 < x < 65536.
                                    If HostNetwork is specified, this must match ContainerPort.
                                    Most containers do not need this.
                                  format: int32
                                  type: integer
                                name:
                                  description: |-
                                    If specified, this must be an IANA_SVC_NAME and unique within the pod. Each
                                    named port in a pod must have a unique name. Name for the port that can be
                                    referred to by services.
                                  type: string
                                protocol:
                                  default: TCP
                                  description: |-
                                    Protocol for port. Must be UDP, TCP, or SCTP.
                                    Defaults to "TCP".
                                  type: string
                              required:
                              - containerPort
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - containerPort
                            - protocol
                            x-kubernetes-list-type: map
                          readinessProbe:
                            description: |-
                              Periodic probe of container service readiness.
                              Container will be removed from service endpoints if the probe fails.
                              Cannot be updated.
                              More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                            properties:
                              exec:
                                description: Exec specifies a command to execute in
                                  the container.
                                properties:
                                  command:
                                    description: |-
                                      Command is the command line to execute inside the container, the working directory for the
                                      command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                      not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                      a shell, you need to explicitly call out to that shell.
                                      Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              failureThreshold:
                                description: |-
                                  Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                  Defaults to 3. Minimum value is 1.
                                format: int32
                                type: integer
                              grpc:
                                description: GRPC specifies a GRPC HealthCheckRequest.
                                properties:
                                  port:
                                    description: Port number of the gRPC service.
                                      Number must be in the range 1 to 65535.
                                    format: int32
                                    type: integer
                                  service:
                                    default: ""
                                    description: |-
                                      Service is the name of the service to place in the gRPC HealthCheckRequest
                                      (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                      If this is not specified, the default behavior is defined by gRPC.
                                    type: string
                                required:
                                - port
                                type: object
                              httpGet:
                                description: HTTPGet specifies an HTTP GET request
                                  to perform.
                                properties:
                                  host:
                                    description: |-
                                      Host name to connect to, defaults to the pod IP. You probably want to set
                                      "Host" in httpHeaders instead.
                                    type: string
                                  httpHeaders:
                                    description: Custom headers to set in the request.
                                      HTTP allows repeated headers.
                                    items:
                                      description: HTTPHeader describes a custom header
                                        to be used in HTTP probes
                                      properties:
                                        name:
                                          description: |-
                                            The header field name.
                                            This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                          type: string
                                        value:
                                          description: The header field value
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  path:
                                    description: Path to access on the HTTP server.
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    description: |-
                                      Name or number of the port to access on the container.
                                      Number must be in the range 1 to 65535.
                                      Name must be an IANA_SVC_NAME.
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    description: |-
                                      Scheme to use for connecting to the host.
                                      Defaults to HTTP.
                                    type: string
                                required:
                                - port
                                type: object
                              initialDelaySeconds:
                                description: |-
                                  Number of seconds after the container has started before liveness probes are initiated.
                                  More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                format: int32
                                type: integer
                              periodSeconds:
                                description: |-
                                  How often (in seconds) to perform the probe.
                                  Default to 10 seconds. Minimum value is 1.
                                format: int32
                                type: integer
                              successThreshold:
                                description: |-
                                  Minimum consecutive successes for the probe to be considered successful after having failed.
                                  Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                                format: int32
                                type: integer
                              tcpSocket:
                                description: TCPSocket specifies a connection to a
                                  TCP port.
                                properties:
                                  host:
                                    description: 'Optional: Host name to connect to,
                                      defaults to the pod IP.'
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    description: |-
                                      Number or name of the port to access on the container.
                                      Number must be in the range 1 to 65535.
                                      Name must be an IANA_SVC_NAME.
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                              terminationGracePeriodSeconds:
                                description: |-
                                  Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
                                  The grace period is the duration in seconds after the processes running in the pod are sent
                                  a termination signal and the time when the processes are forcibly halted with a kill signal.
                                  Set this value longer than the expected cleanup time for your process.
                                  If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
                                  value overrides the value provided by the pod spec.
                                  Value must be non-negative integer. The value zero indicates stop immediately via
                                  the kill signal (no opportunity to shut down).
                                  This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
                                  Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
                                format: int64
                                type: integer
                              timeoutSeconds:
                                description: |-
                                  Number of seconds after which the probe times out.
                                  Defaults to 1 second. Minimum value is 1.
                                  More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                format: int32
                                type: integer
                            type: object
                          resizePolicy:
                            description: Resources resize policy for the container.
                            items:
                              description: ContainerResizePolicy represents resource
                                resize policy for the container.
                              properties:
                                resourceName:
                                  description: |-
                                    Name of the resource to which this resource resize policy applies.
                                    Supported values: cpu, memory.
                                  type: string
                                restartPolicy:
                                  description: |-
                                    Restart policy to apply when specified resource is resized.
                                    If not specified, it defaults to NotRequired.
                                  type: string
                              required:
                              - resourceName
                              - restartPolicy
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          resources:
                            description: |-
                              Compute Resources required by this container.
                              Cannot be updated.
                              More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                            properties:
                              claims:
                                description: |-
                                  Claims lists the names of resources, defined in spec.resourceClaims,
                                  that are used by this container.

                                  This is an alpha field and requires enabling the
                                  DynamicResourceAllocation feature gate.

                                  This field is immutable. It can only be set for containers.
                                items:
                                  description: ResourceClaim references one entry
                                    in PodSpec.ResourceClaims.
                                  properties:
                                    name:
                                      description: |-
                                        Name must match the name of one entry in pod.spec.resourceClaims of
                                        the Pod where this field is used. It makes that resource available
                                        inside a container.
                                      type: string
                                    request:
                                      description: |-
                                        Request is the name chosen for a request in the referenced claim.
                                        If empty, everything from the claim is made available, otherwise
                                        only the result of this request.
                                      type: string
                                  required:
                                  - name
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                - name
                                x-kubernetes-list-type: map
                              limits:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Limits describes the maximum amount of compute resources allowed.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                              requests:
                                additionalProperties:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  x-kubernetes-int-or-string: true
                                description: |-
                                  Requests describes the minimum amount of compute resources required.
                                  If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                  otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                                type: object
                            type: object
                          restartPolicy:
                            description: |-
                              RestartPolicy defines the restart behavior of individual containers in a pod.
                              This field may only be set for init containers, and the only allowed value is "Always".
                              For non-init containers or when this field is not specified,
                              the restart behavior is defined by the Pod's restart policy and the container type.
                              Setting the RestartPolicy as "Always" for the init container will have the following effect:
                              this init container will be continually restarted on
                              exit until all regular containers have terminated. Once all regular
                              containers have completed, all init containers with restartPolicy "Always"
                              will be shut down. This lifecycle differs from normal init containers and
                              is often referred to as a "sidecar" container. Although this init
                              container still starts in the init container sequence, it does not wait
                              for the container to complete before proceeding to the next init
                              container. Instead, the next init container starts immediately after this
                              init container is started, or after any startupProbe has successfully
                              completed.
                            type: string
                          securityContext:
                            description: |-
                              SecurityContext defines the security options the container should be run with.
                              If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.
                              More info: https://kubernetes.io/docs/tasks/configure-pod-container/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
                                  Note that this field cannot be set when spec.os.name is windows.
                                type: boolean
                              appArmorProfile:
                                description: |-
                                  appArmorProfile is the AppArmor options to use by this container. If set, this profile
                                  overrides the pod's appArmorProfile.
                                  Note that this field cannot be set when spec.os.name is windows.
                                properties:
                                  localhostProfile:
                                    description: |-
                                      localhostProfile indicates a profile loaded on the node that should be used.
                                      The profile must be preconfigured on the node to work.
                                      Must match the loaded name of the profile.
                                      Must be set if and only if type is "Localhost".
                                    type: string
                                  type:
                                    description: |-
                                      type indicates which kind of AppArmor profile will be applied.
                                      Valid options are:
                                        Localhost - a profile pre-loaded on the node.
                                        RuntimeDefault - the container runtime's default profile.
                                        Unconfined - no AppArmor enforcement.
                                    type: string
                                required:
                                - type
                                type: object
                              capabilities:
                                description: |-
                                  The capabilities to add/drop when running containers.
                                  Defaults to the default set of capabilities granted by the container runtime.
                                  Note that this field cannot be set when spec.os.name is windows.
                                properties:
                                  add:
                                    description: Added capabilities
                                    items:
                                      description: Capability represent POSIX capabilities
                                        type
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  drop:
                                    description: Removed capabilities
                                    items:
                                      description: Capability represent POSIX capabilities
                                        type
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              privileged:
                                description: |-
                                  Run container in privileged mode.
                                  Processes in privileged containers are essentially equivalent to root on the host.
                                  Defaults to false.
                                  Note that this field cannot be set when spec.os.name is windows.
                                type: boolean
                              procMount:
                                description: |-
                                  procMount denotes the type of proc mount to use for the containers.
                                  The default value is Default which uses the container runtime defaults for
                                  readonly paths and masked paths.
                                  This requires the ProcMountType feature flag to be enabled.
                                  Note that this field cannot be set when spec.os.name is windows.
                                type: string
                              readOnlyRootFilesystem:
                                description: |-
                                  Whether this container has a read-only root filesystem.
                                  Default is false.
                                  Note that this field cannot be set when spec.os.name is windows.
                                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.
                                  Note that this field cannot be set when spec.os.name is windows.
                                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.
                                  Note that this field cannot be set when spec.os.name is windows.
                                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.
                                  Note that this field cannot be set when spec.os.name is windows.
                                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.
                                  Note that this field cannot be set when spec.os.name is windows.
                                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 be set if type is "Localhost". Must NOT be set for any other type.
                                    type: string
                                  type:
                                    description: |-
                                      type indicates which kind of seccomp profile will be applied.
                                      Valid options are:

                                      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.
                                  Note that this field cannot be set when spec.os.name is linux.
                                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
                                  hostProcess:
                                    description: |-
                                      HostProcess determines if a container should be run as a 'Host Process' container.
                                      All of a Pod's containers must have the same effective HostProcess value
                                      (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).
                                      In addition, if HostProcess is true then HostNetwork must also be set to true.
                                    type: boolean
                                  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
                          startupProbe:
                            description: |-
                              StartupProbe indicates that the Pod has successfully initialized.
                              If specified, no other probes are executed until this completes successfully.
                              If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
                              This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
                              when it might take a long time to load data or warm a cache, than during steady-state operation.
                              This cannot be updated.
                              More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                            properties:
                              exec:
                                description: Exec specifies a command to execute in
                                  the container.
                                properties:
                                  command:
                                    description: |-
                                      Command is the command line to execute inside the container, the working directory for the
                                      command  is root ('/') in the container's filesystem. The command is simply exec'd, it is
                                      not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use
                                      a shell, you need to explicitly call out to that shell.
                                      Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              failureThreshold:
                                description: |-
                                  Minimum consecutive failures for the probe to be considered failed after having succeeded.
                                  Defaults to 3. Minimum value is 1.
                                format: int32
                                type: integer
                              grpc:
                                description: GRPC specifies a GRPC HealthCheckRequest.
                                properties:
                                  port:
                                    description: Port number of the gRPC service.
                                      Number must be in the range 1 to 65535.
                                    format: int32
                                    type: integer
                                  service:
                                    default: ""
                                    description: |-
                                      Service is the name of the service to place in the gRPC HealthCheckRequest
                                      (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).

                                      If this is not specified, the default behavior is defined by gRPC.
                                    type: string
                                required:
                                - port
                                type: object
                              httpGet:
                                description: HTTPGet specifies an HTTP GET request
                                  to perform.
                                properties:
                                  host:
                                    description: |-
                                      Host name to connect to, defaults to the pod IP. You probably want to set
                                      "Host" in httpHeaders instead.
                                    type: string
                                  httpHeaders:
                                    description: Custom headers to set in the request.
                                      HTTP allows repeated headers.
                                    items:
                                      description: HTTPHeader describes a custom header
                                        to be used in HTTP probes
                                      properties:
                                        name:
                                          description: |-
                                            The header field name.
                                            This will be canonicalized upon output, so case-variant names will be understood as the same header.
                                          type: string
                                        value:
                                          description: The header field value
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  path:
                                    description: Path to access on the HTTP server.
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    description: |-
                                      Name or number of the port to access on the container.
                                      Number must be in the range 1 to 65535.
                                      Name must be an IANA_SVC_NAME.
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    description: |-
                                      Scheme to use for connecting to the host.
                                      Defaults to HTTP.
                                    type: string
                                required:
                                - port
                                type: object
                              initialDelaySeconds:
                                description: |-
                                  Number of seconds after the container has started before liveness probes are initiated.
                                  More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                format: int32
                                type: integer
                              periodSeconds:
                                description: |-
                                  How often (in seconds) to perform the probe.
                                  Default to 10 seconds. Minimum value is 1.
                                format: int32
                                type: integer
                              successThreshold:
                                description: |-
                                  Minimum consecutive successes for the probe to be considered successful after having failed.
                                  Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
                                format: int32
                                type: integer
                              tcpSocket:
                                description: TCPSocket specifies a connection to a
                                  TCP port.
                                properties:
                                  host:
                                    description: 'Optional: Host name to connect to,
                                      defaults to the pod IP.'
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    description: |-
                                      Number or name of the port to access on the container.
                                      Number must be in the range 1 to 65535.
                                      Name must be an IANA_SVC_NAME.
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                              terminationGracePeriodSeconds:
                                description: |-
                                  Optional duration in seconds the pod needs to terminate gracefully upon probe failure.
                                  The grace period is the duration in seconds after the processes running in the pod are sent
                                  a termination signal and the time when the processes are forcibly halted with a kill signal.
                                  Set this value longer than the expected cleanup time for your process.
                                  If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this
                                  value overrides the value provided by the pod spec.
                                  Value must be non-negative integer. The value zero indicates stop immediately via
                                  the kill signal (no opportunity to shut down).
                                  This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.
                                  Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset.
                                format: int64
                                type: integer
                              timeoutSeconds:
                                description: |-
                                  Number of seconds after which the probe times out.
                                  Defaults to 1 second. Minimum value is 1.
                                  More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                format: int32
                                type: integer
                            type: object
                          stdin:
                            description: |-
                              Whether this container should allocate a buffer for stdin in the container runtime. If this
                              is not set, reads from stdin in the container will always result in EOF.
                              Default is false.
                            type: boolean
                          stdinOnce:
                            description: |-
                              Whether the container runtime should close the stdin channel after it has been opened by
                              a single attach. When stdin is true the stdin stream will remain open across multiple attach
                              sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the
                              first client attaches to stdin, and then remains open and accepts data until the client disconnects,
                              at which time stdin is closed and remains closed until the container is restarted. If this
                              flag is false, a container processes that reads from stdin will never receive an EOF.
                              Default is false
                            type: boolean
                          terminationMessagePath:
                            description: |-
                              Optional: Path at which the file to which the container's termination message
                              will be written is mounted into the container's filesystem.
                              Message written is intended to be brief final status, such as an assertion failure message.
                              Will be truncated by the node if greater than 4096 bytes. The total message length across
                              all containers will be limited to 12kb.
                              Defaults to /dev/termination-log.
                              Cannot be updated.
                            type: string
                          terminationMessagePolicy:
                            description: |-
                              Indicate how the termination message should be populated. File will use the contents of
                              terminationMessagePath to populate the container status message on both success and failure.
                              FallbackToLogsOnError will use the last chunk of container log output if the termination
                              message file is empty and the container exited with an error.
                              The log output is limited to 2048 bytes or 80 lines, whichever is smaller.
                              Defaults to File.
                              Cannot be updated.
                            type: string
                          tty:
                            description: |-
                              Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.
                              Default is false.
                            type: boolean
                          volumeDevices:
                            description: volumeDevices is the list of block devices
                              to be used by the container.
                            items:
                              description: volumeDevice describes a mapping of a raw
                                block device within a container.
                              properties:
                                devicePath:
                                  description: devicePath is the path inside of the
                                    container that the device will be mapped to.
                                  type: string
                                name:
                                  description: name must match the name of a persistentVolumeClaim
                                    in the pod
                                  type: string
                              required:
                              - devicePath
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - devicePath
                            x-kubernetes-list-type: map
                          volumeMounts:
                            description: |-
                              Pod volumes to mount into the container's filesystem.
                              Cannot be updated.
                            items:
                              description: VolumeMount describes a mounting of a Volume
                                within a container.
                              properties:
                                mountPath:
                                  description: |-
                                    Path within the container at which the volume should be mounted.  Must
                                    not contain ':'.
                                  type: string
                                mountPropagation:
                                  description: |-
                                    mountPropagation determines how mounts are propagated from the host
                                    to container and the other way around.
                                    When not set, MountPropagationNone is used.
                                    This field is beta in 1.10.
                                    When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified
                                    (which defaults to None).
                                  type: string
                                name:
                                  description: This must match the Name of a Volume.
                                  type: string
                                readOnly:
                                  description: |-
                                    Mounted read-only if true, read-write otherwise (false or unspecified).
                                    Defaults to false.
                                  type: boolean
                                recursiveReadOnly:
                                  description: |-
                                    RecursiveReadOnly specifies whether read-only mounts should be handled
                                    recursively.

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

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

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

                                    If this field is not specified, it is treated as an equivalent of Disabled.
                                  type: string
                                subPath:
                                  description: |-
                                    Path within the volume from which the container's volume should be mounted.
                                    Defaults to "" (volume's root).
                                  type: string
                                subPathExpr:
                                  description: |-
                                    Expanded path within the volume from which the container's volume should be mounted.
                                    Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.
                                    Defaults to "" (volume's root).
                                    SubPathExpr and SubPath are mutually exclusive.
                                  type: string
                              required:
                              - mountPath
                              - name
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - mountPath
                            x-kubernetes-list-type: map
                          workingDir:
                            description: |-
                              Container's working directory.
                              If not specified, the container runtime's default will be used, which
                              might be configured in the container image.
                              Cannot be updated.
                            type: string
                        required:
                        - name
                        type: object
                      type: array
                    steps:
                      description: Steps define a series of sequential/parallel workflow
                        steps
                      items:
                        description: |-
                          Note: the `json:"steps"` part exists to workaround kubebuilder limitations.
                          There isn't actually a "steps" key in the JSON serialization; this is an anonymous list.
                          See the custom Unmarshaller below and ./hack/manifests/crd.go
                        items:
                          description: |-
                            WorkflowStep is a reference to a template to execute in a series of step
                            Note: CEL validation cannot check withItems (Schemaless) or inline (PreserveUnknownFields) fields.
                          properties:
                            arguments:
                              description: Arguments hold arguments to the template
                              properties:
                                artifacts:
                                  description: Artifacts is the list of artifacts
                                    to pass to the template or workflow
                                  items:
                                    description: Artifact indicates an artifact to
                                      place at a specified path
                                    properties:
                                      archive:
                                        description: Archive controls how the artifact
                                          will be saved to the artifact repository.
                                        properties:
                                          none:
                                            description: |-
                                              NoneStrategy indicates to skip tar process and upload the files or directory tree as independent
                                              files. Note that if the artifact is a directory, the artifact driver must support the ability to
                                              save/load the directory appropriately.
                                            type: object
                                          tar:
                                            description: TarStrategy will tar and
                                              gzip the file or directory when saving
                                            properties:
                                              compressionLevel:
                                                description: |-
                                                  CompressionLevel specifies the gzip compression level to use for the artifact.
                                                  Defaults to gzip.DefaultCompression.
                                                format: int32
                                                type: integer
                                            type: object
                                          zip:
                                            description: ZipStrategy will unzip zipped
                                              input artifacts
                                            type: object
                                        type: object
                                      archiveLogs:
                                        description: ArchiveLogs indicates if the
                                          container logs should be archived
                                        type: boolean
                                      artifactGC:
                                        description: ArtifactGC describes the strategy
                                          to use when to deleting an artifact from
                                          completed or deleted workflows
                                        properties:
                                          podMetadata:
                                            description: PodMetadata is an optional
                                              field for specifying the Labels and
                                              Annotations that should be assigned
                                              to the Pod doing the deletion
                                            properties:
                                              annotations:
                                                additionalProperties:
                                                  type: string
                                                type: object
                                              labels:
                                                additionalProperties:
                                                  type: string
                                                type: object
                                            type: object
                                          serviceAccountName:
                                            description: ServiceAccountName is an
                                              optional field for specifying the Service
                                              Account that should be assigned to the
                                              Pod doing the deletion
                                            type: string
                                          strategy:
                                            description: Strategy is the strategy
                                              to use.
                                            enum:
                                            - ""
                                            - OnWorkflowCompletion
                                            - OnWorkflowDeletion
                                            - Never
                                            type: string
                                        type: object
                                      artifactory:
                                        description: Artifactory contains artifactory
                                          artifact location details
                                        properties:
                                          passwordSecret:
                                            description: PasswordSecret is the secret
                                              selector to the repository password
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          url:
                                            description: URL of the artifact
                                            type: string
                                          usernameSecret:
                                            description: UsernameSecret is the secret
                                              selector to the repository username
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        required:
                                        - url
                                        type: object
                                      azure:
                                        description: Azure contains Azure Storage
                                          artifact location details
                                        properties:
                                          accountKeySecret:
                                            description: AccountKeySecret is the secret
                                              selector to the Azure Blob Storage account
                                              access key
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          blob:
                                            description: Blob is the blob name (i.e.,
                                              path) in the container where the artifact
                                              resides
                                            type: string
                                          container:
                                            description: Container is the container
                                              where resources will be stored
                                            type: string
                                          endpoint:
                                            description: Endpoint is the service url
                                              associated with an account. It is most
                                              likely "https://<ACCOUNT_NAME>.blob.core.windows.net"
                                            type: string
                                          useSDKCreds:
                                            description: UseSDKCreds tells the driver
                                              to figure out credentials based on sdk
                                              defaults.
                                            type: boolean
                                        required:
                                        - blob
                                        - container
                                        - endpoint
                                        type: object
                                      deleted:
                                        description: Has this been deleted?
                                        type: boolean
                                      from:
                                        description: From allows an artifact to reference
                                          an artifact from a previous step
                                        type: string
                                      fromExpression:
                                        description: FromExpression, if defined, is
                                          evaluated to specify the value for the artifact
                                        type: string
                                      gcs:
                                        description: GCS contains GCS artifact location
                                          details
                                        properties:
                                          bucket:
                                            description: Bucket is the name of the
                                              bucket
                                            type: string
                                          key:
                                            description: Key is the path in the bucket
                                              where the artifact resides
                                            type: string
                                          serviceAccountKeySecret:
                                            description: ServiceAccountKeySecret is
                                              the secret selector to the bucket's
                                              service account key
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        required:
                                        - key
                                        type: object
                                      git:
                                        description: Git contains git artifact location
                                          details
                                        properties:
                                          branch:
                                            description: Branch is the branch to fetch
                                              when `SingleBranch` is enabled
                                            type: string
                                          depth:
                                            description: |-
                                              Depth specifies clones/fetches should be shallow and include the given
                                              number of commits from the branch tip
                                            format: int64
                                            type: integer
                                          disableSubmodules:
                                            description: DisableSubmodules disables
                                              submodules during git clone
                                            type: boolean
                                          fetch:
                                            description: Fetch specifies a number
                                              of refs that should be fetched before
                                              checkout
                                            items:
                                              type: string
                                            type: array
                                          insecureIgnoreHostKey:
                                            description: InsecureIgnoreHostKey disables
                                              SSH strict host key checking during
                                              git clone
                                            type: boolean
                                          insecureSkipTLS:
                                            description: InsecureSkipTLS disables
                                              server certificate verification resulting
                                              in insecure HTTPS connections
                                            type: boolean
                                          passwordSecret:
                                            description: PasswordSecret is the secret
                                              selector to the repository password
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          repo:
                                            description: Repo is the git repository
                                            type: string
                                          revision:
                                            description: Revision is the git commit,
                                              tag, branch to checkout
                                            type: string
                                          singleBranch:
                                            description: SingleBranch enables single
                                              branch clone, using the `branch` parameter
                                            type: boolean
                                          sshPrivateKeySecret:
                                            description: SSHPrivateKeySecret is the
                                              secret selector to the repository ssh
                                              private key
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          usernameSecret:
                                            description: UsernameSecret is the secret
                                              selector to the repository username
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        required:
                                        - repo
                                        type: object
                                      globalName:
                                        description: |-
                                          GlobalName exports an output artifact to the global scope, making it available as
                                          '{{workflow.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts
                                        type: string
                                      hdfs:
                                        description: HDFS contains HDFS artifact location
                                          details
                                        properties:
                                          addresses:
                                            description: Addresses is accessible addresses
                                              of HDFS name nodes
                                            items:
                                              type: string
                                            type: array
                                          dataTransferProtection:
                                            description: |-
                                              DataTransferProtection is the protection level for HDFS data transfer.
                                              It corresponds to the dfs.data.transfer.protection configuration in HDFS.
                                            type: string
                                          force:
                                            description: Force copies a file forcibly
                                              even if it exists
                                            type: boolean
                                          hdfsUser:
                                            description: |-
                                              HDFSUser is the user to access HDFS file system.
                                              It is ignored if either ccache or keytab is used.
                                            type: string
                                          krbCCacheSecret:
                                            description: |-
                                              KrbCCacheSecret is the secret selector for Kerberos ccache
                                              Either ccache or keytab can be set to use Kerberos.
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          krbConfigConfigMap:
                                            description: |-
                                              KrbConfig is the configmap selector for Kerberos config as string
                                              It must be set if either ccache or keytab is used.
                                            properties:
                                              key:
                                                description: The key to select.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the ConfigMap
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          krbKeytabSecret:
                                            description: |-
                                              KrbKeytabSecret is the secret selector for Kerberos keytab
                                              Either ccache or keytab can be set to use Kerberos.
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          krbRealm:
                                            description: |-
                                              KrbRealm is the Kerberos realm used with Kerberos keytab
                                              It must be set if keytab is used.
                                            type: string
                                          krbServicePrincipalName:
                                            description: |-
                                              KrbServicePrincipalName is the principal name of Kerberos service
                                              It must be set if either ccache or keytab is used.
                                            type: string
                                          krbUsername:
                                            description: |-
                                              KrbUsername is the Kerberos username used with Kerberos keytab
                                              It must be set if keytab is used.
                                            type: string
                                          path:
                                            description: Path is a file path in HDFS
                                            type: string
                                        required:
                                        - path
                                        type: object
                                      http:
                                        description: HTTP contains HTTP artifact location
                                          details
                                        properties:
                                          auth:
                                            description: Auth contains information
                                              for client authentication
                                            properties:
                                              basicAuth:
                                                description: BasicAuth describes the
                                                  secret selectors required for basic
                                                  authentication
                                                properties:
                                                  passwordSecret:
                                                    description: PasswordSecret is
                                                      the secret selector to the repository
                                                      password
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  usernameSecret:
                                                    description: UsernameSecret is
                                                      the secret selector to the repository
                                                      username
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                type: object
                                              clientCert:
                                                description: ClientCertAuth holds
                                                  necessary information for client
                                                  authentication via certificates
                                                properties:
                                                  clientCertSecret:
                                                    description: SecretKeySelector
                                                      selects a key of a Secret.
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  clientKeySecret:
                                                    description: SecretKeySelector
                                                      selects a key of a Secret.
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                type: object
                                              oauth2:
                                                description: OAuth2Auth holds all
                                                  information for client authentication
                                                  via OAuth2 tokens
                                                properties:
                                                  clientIDSecret:
                                                    description: SecretKeySelector
                                                      selects a key of a Secret.
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  clientSecretSecret:
                                                    description: SecretKeySelector
                                                      selects a key of a Secret.
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  endpointParams:
                                                    items:
                                                      description: EndpointParam is
                                                        for requesting optional fields
                                                        that should be sent in the
                                                        oauth request
                                                      properties:
                                                        key:
                                                          description: Name is the
                                                            header name
                                                          type: string
                                                        value:
                                                          description: Value is the
                                                            literal value to use for
                                                            the header
                                                          type: string
                                                      required:
                                                      - key
                                                      type: object
                                                    type: array
                                                  scopes:
                                                    items:
                                                      type: string
                                                    type: array
                                                  tokenURLSecret:
                                                    description: SecretKeySelector
                                                      selects a key of a Secret.
                                                    properties:
                                                      key:
                                                        description: The key of the
                                                          secret to select from.  Must
                                                          be a valid secret key.
                                                        type: string
                                                      name:
                                                        default: ""
                                                        description: |-
                                                          Name of the referent.
                                                          This field is effectively required, but due to backwards compatibility is
                                                          allowed to be empty. Instances of this type with an empty value here are
                                                          almost certainly wrong.
                                                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                        type: string
                                                      optional:
                                                        description: Specify whether
                                                          the Secret or its key must
                                                          be defined
                                                        type: boolean
                                                    required:
                                                    - key
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                type: object
                                            type: object
                                          headers:
                                            description: Headers are an optional list
                                              of headers to send with HTTP requests
                                              for artifacts
                                            items:
                                              description: Header indicate a key-value
                                                request header to be used when fetching
                                                artifacts over HTTP
                                              properties:
                                                name:
                                                  description: Name is the header
                                                    name
                                                  type: string
                                                value:
                                                  description: Value is the literal
                                                    value to use for the header
                                                  type: string
                                              required:
                                              - name
                                              - value
                                              type: object
                                            type: array
                                          url:
                                            description: URL of the artifact
                                            type: string
                                        required:
                                        - url
                                        type: object
                                      mode:
                                        description: |-
                                          mode bits to use on this file, must be a value between 0 and 0777.
                                          Set when loading input artifacts. It is recommended to set the mode value
                                          to ensure the artifact has the expected permissions in your container.
                                        format: int32
                                        maximum: 511
                                        minimum: 0
                                        type: integer
                                      name:
                                        description: name of the artifact. must be
                                          unique within a template's inputs/outputs.
                                        pattern: ^[-a-zA-Z0-9_{}.]+$
                                        type: string
                                      optional:
                                        description: Make Artifacts optional, if Artifacts
                                          doesn't generate or exist
                                        type: boolean
                                      oss:
                                        description: OSS contains OSS artifact location
                                          details
                                        properties:
                                          accessKeySecret:
                                            description: AccessKeySecret is the secret
                                              selector to the bucket's access key
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          bucket:
                                            description: Bucket is the name of the
                                              bucket
                                            type: string
                                          createBucketIfNotPresent:
                                            description: CreateBucketIfNotPresent
                                              tells the driver to attempt to create
                                              the OSS bucket for output artifacts,
                                              if it doesn't exist
                                            type: boolean
                                          endpoint:
                                            description: Endpoint is the hostname
                                              of the bucket endpoint
                                            type: string
                                          key:
                                            description: Key is the path in the bucket
                                              where the artifact resides
                                            type: string
                                          lifecycleRule:
                                            description: LifecycleRule specifies how
                                              to manage bucket's lifecycle
                                            properties:
                                              markDeletionAfterDays:
                                                description: MarkDeletionAfterDays
                                                  is the number of days before we
                                                  delete objects in the bucket
                                                format: int32
                                                type: integer
                                              markInfrequentAccessAfterDays:
                                                description: MarkInfrequentAccessAfterDays
                                                  is the number of days before we
                                                  convert the objects in the bucket
                                                  to Infrequent Access (IA) storage
                                                  type
                                                format: int32
                                                type: integer
                                            type: object
                                          secretKeySecret:
                                            description: SecretKeySecret is the secret
                                              selector to the bucket's secret key
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          securityToken:
                                            description: 'SecurityToken is the user''s
                                              temporary security token. For more details,
                                              check out: https://www.alibabacloud.com/help/doc-detail/100624.htm'
                                            type: string
                                          useSDKCreds:
                                            description: UseSDKCreds tells the driver
                                              to figure out credentials based on sdk
                                              defaults.
                                            type: boolean
                                        required:
                                        - key
                                        type: object
                                      path:
                                        description: Path is the container path to
                                          the artifact
                                        type: string
                                      plugin:
                                        description: Plugin contains plugin artifact
                                          location details
                                        properties:
                                          configuration:
                                            description: Configuration is the plugin
                                              defined configuration for the artifact
                                              driver plugin
                                            type: string
                                          connectionTimeoutSeconds:
                                            description: ConnectionTimeoutSeconds
                                              is the timeout for the artifact driver
                                              connection, overriding the driver's
                                              timeout
                                            format: int32
                                            type: integer
                                          key:
                                            description: Key is the path in the artifact
                                              repository where the artifact resides
                                            type: string
                                          name:
                                            description: Name is the name of the artifact
                                              driver plugin
                                            type: string
                                        required:
                                        - key
                                        type: object
                                      raw:
                                        description: Raw contains raw artifact location
                                          details
                                        properties:
                                          data:
                                            description: Data is the string contents
                                              of the artifact
                                            type: string
                                        required:
                                        - data
                                        type: object
                                      recurseMode:
                                        description: If mode is set, apply the permission
                                          recursively into the artifact if it is a
                                          folder
                                        type: boolean
                                      s3:
                                        description: S3 contains S3 artifact location
                                          details
                                        properties:
                                          accessKeySecret:
                                            description: AccessKeySecret is the secret
                                              selector to the bucket's access key
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          bucket:
                                            description: Bucket is the name of the
                                              bucket
                                            type: string
                                          caSecret:
                                            description: CASecret specifies the secret
                                              that contains the CA, used to verify
                                              the TLS connection
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          createBucketIfNotPresent:
                                            description: CreateBucketIfNotPresent
                                              tells the driver to attempt to create
                                              the S3 bucket for output artifacts,
                                              if it doesn't exist. Setting Enabled
                                              Encryption will apply either SSE-S3
                                              to the bucket if KmsKeyId is not set
                                              or SSE-KMS if it is.
                                            properties:
                                              objectLocking:
                                                description: ObjectLocking Enable
                                                  object locking
                                                type: boolean
                                            type: object
                                          encryptionOptions:
                                            description: S3EncryptionOptions used
                                              to determine encryption options during
                                              s3 operations
                                            properties:
                                              enableEncryption:
                                                description: EnableEncryption tells
                                                  the driver to encrypt objects if
                                                  set to true. If kmsKeyId and serverSideCustomerKeySecret
                                                  are not set, SSE-S3 will be used
                                                type: boolean
                                              kmsEncryptionContext:
                                                description: KmsEncryptionContext
                                                  is a json blob that contains an
                                                  encryption context. See https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
                                                  for more information
                                                type: string
                                              kmsKeyId:
                                                description: KMSKeyId tells the driver
                                                  to encrypt the object using the
                                                  specified KMS Key.
                                                type: string
                                              serverSideCustomerKeySecret:
                                                description: ServerSideCustomerKeySecret
                                                  tells the driver to encrypt the
                                                  output artifacts using SSE-C with
                                                  the specified secret.
                                                properties:
                                                  key:
                                                    description: The key of the secret
                                                      to select from.  Must be a valid
                                                      secret key.
                                                    type: string
                                                  name:
                                                    default: ""
                                                    description: |-
                                                      Name of the referent.
                                                      This field is effectively required, but due to backwards compatibility is
                                                      allowed to be empty. Instances of this type with an empty value here are
                                                      almost certainly wrong.
                                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                    type: string
                                                  optional:
                                                    description: Specify whether the
                                                      Secret or its key must be defined
                                                    type: boolean
                                                required:
                                                - key
                                                type: object
                                                x-kubernetes-map-type: atomic
                                            type: object
                                          endpoint:
                                            description: Endpoint is the hostname
                                              of the bucket endpoint
                                            type: string
                                          insecure:
                                            description: Insecure will connect to
                                              the service with TLS
                                            type: boolean
                                          key:
                                            description: Key is the key in the bucket
                                              where the artifact resides
                                            type: string
                                          region:
                                            description: Region contains the optional
                                              bucket region
                                            type: string
                                          roleARN:
                                            description: RoleARN is the Amazon Resource
                                              Name (ARN) of the role to assume.
                                            type: string
                                          secretKeySecret:
                                            description: SecretKeySecret is the secret
                                              selector to the bucket's secret key
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          sessionTokenSecret:
                                            description: SessionTokenSecret is used
                                              for ephemeral credentials like an IAM
                                              assume role or S3 access grant
                                            properties:
                                              key:
                                                description: The key of the secret
                                                  to select from.  Must be a valid
                                                  secret key.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the Secret
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          useSDKCreds:
                                            description: UseSDKCreds tells the driver
                                              to figure out credentials based on sdk
                                              defaults.
                                            type: boolean
                                        type: object
                                      subPath:
                                        description: SubPath allows an artifact to
                                          be sourced from a subpath within the specified
                                          source
                                        type: string
                                    required:
                                    - name
                                    type: object
                                    x-kubernetes-validations:
                                    - message: at most one artifact location can be
                                        specified
                                      rule: '(has(self.s3) ? 1 : 0) + (has(self.git)
                                        ? 1 : 0) + (has(self.http) ? 1 : 0) + (has(self.artifactory)
                                        ? 1 : 0) + (has(self.hdfs) ? 1 : 0) + (has(self.raw)
                                        ? 1 : 0) + (has(self.oss) ? 1 : 0) + (has(self.gcs)
                                        ? 1 : 0) + (has(self.azure) ? 1 : 0) + (has(self.plugin)
                                        ? 1 : 0) <= 1'
                                  type: array
                                parameters:
                                  description: Parameters is the list of parameters
                                    to pass to the template or workflow
                                  items:
                                    description: Parameter indicate a passed string
                                      parameter to a service template with an optional
                                      default value
                                    properties:
                                      default:
                                        description: Default is the default value
                                          to use for an input parameter if a value
                                          was not supplied
                                        type: string
                                      description:
                                        description: Description is the parameter
                                          description
                                        type: string
                                      enum:
                                        description: Enum holds a list of string values
                                          to choose from, for the actual value of
                                          the parameter
                                        items:
                                          description: |-
                                            * It's JSON type is just string.
                                            * It will unmarshall int64, int32, float64, float32, boolean, a plain string and represents it as string.
                                            * It will marshall back to string - marshalling is not symmetric.
                                          type: string
                                        minItems: 1
                                        type: array
                                      globalName:
                                        description: |-
                                          GlobalName exports an output parameter to the global scope, making it available as
                                          '{{workflow.outputs.parameters.XXXX}} and in workflow.status.outputs.parameters
                                        type: string
                                      name:
                                        description: Name is the parameter name
                                        pattern: ^[-a-zA-Z0-9_]+$
                                        type: string
                                      value:
                                        description: |-
                                          Value is the literal value to use for the parameter.
                                          If specified in the context of an input parameter, any passed values take precedence over the specified value
                                        type: string
                                      valueFrom:
                                        description: ValueFrom is the source for the
                                          output parameter's value
                                        properties:
                                          configMapKeyRef:
                                            description: ConfigMapKeyRef is configmap
                                              selector for input parameter configuration
                                            properties:
                                              key:
                                                description: The key to select.
                                                type: string
                                              name:
                                                default: ""
                                                description: |-
                                                  Name of the referent.
                                                  This field is effectively required, but due to backwards compatibility is
                                                  allowed to be empty. Instances of this type with an empty value here are
                                                  almost certainly wrong.
                                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                type: string
                                              optional:
                                                description: Specify whether the ConfigMap
                                                  or its key must be defined
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          default:
                                            description: Default specifies a value
                                              to be used if retrieving the value from
                                              the specified source fails
                                            type: string
                                          event:
                                            description: Selector (https://github.com/expr-lang/expr)
                                              that is evaluated against the event
                                              to get the value of the parameter. E.g.
                                              `payload.message`
                                            type: string
                                          expression:
                                            description: Expression, if defined, is
                                              evaluated to specify the value for the
                                              parameter
                                            type: string
                                          jqFilter:
                                            description: JQFilter expression against
                                              the resource object in resource templates
                                            type: string
                                          jsonPath:
                                            description: JSONPath of a resource to
                                              retrieve an output parameter value from
                                              in resource templates
                                            type: string
                                          parameter:
                                            description: |-
                                              Parameter reference to a step or dag task in which to retrieve an output parameter value from
                                              (e.g. '{{steps.mystep.outputs.myparam}}')
                                            type: string
                                          path:
                                            description: Path in the container to
                                              retrieve an output parameter value from
                                              in container templates
                                            type: string
                                          supplied:
                                            description: Supplied value to be filled
                                              in directly, either through the CLI,
                                              API, etc.
                                            type: object
                                        type: object
                                    required:
                                    - name
                                    type: object
                                  type: array
                              type: object
                            continueOn:
                              description: |-
                                ContinueOn makes argo to proceed with the following step even if this step fails.
                                Errors and Failed states can be specified
                              properties:
                                error:
                                  type: boolean
                                failed:
                                  type: boolean
                              type: object
                            hooks:
                              additionalProperties:
                                properties:
                                  arguments:
                                    description: Arguments hold arguments to the template
                                    properties:
                                      artifacts:
                                        description: Artifacts is the list of artifacts
                                          to pass to the template or workflow
                                        items:
                                          description: Artifact indicates an artifact
                                            to place at a specified path
                                          properties:
                                            archive:
                                              description: Archive controls how the
                                                artifact will be saved to the artifact
                                                repository.
                                              properties:
                                                none:
                                                  description: |-
                                                    NoneStrategy indicates to skip tar process and upload the files or directory tree as independent
                                                    files. Note that if the artifact is a directory, the artifact driver must support the ability to
                                                    save/load the directory appropriately.
                                                  type: object
                                                tar:
                                                  description: TarStrategy will tar
                                                    and gzip the file or directory
                                                    when saving
                                                  properties:
                                                    compressionLevel:
                                                      description: |-
                                                        CompressionLevel specifies the gzip compression level to use for the artifact.
                                                        Defaults to gzip.DefaultCompression.
                                                      format: int32
                                                      type: integer
                                                  type: object
                                                zip:
                                                  description: ZipStrategy will unzip
                                                    zipped input artifacts
                                                  type: object
                                              type: object
                                            archiveLogs:
                                              description: ArchiveLogs indicates if
                                                the container logs should be archived
                                              type: boolean
                                            artifactGC:
                                              description: ArtifactGC describes the
                                                strategy to use when to deleting an
                                                artifact from completed or deleted
                                                workflows
                                              properties:
                                                podMetadata:
                                                  description: PodMetadata is an optional
                                                    field for specifying the Labels
                                                    and Annotations that should be
                                                    assigned to the Pod doing the
                                                    deletion
                                                  properties:
                                                    annotations:
                                                      additionalProperties:
                                                        type: string
                                                      type: object
                                                    labels:
                                                      additionalProperties:
                                                        type: string
                                                      type: object
                                                  type: object
                                                serviceAccountName:
                                                  description: ServiceAccountName
                                                    is an optional field for specifying
                                                    the Service Account that should
                                                    be assigned to the Pod doing the
                                                    deletion
                                                  type: string
                                                strategy:
                                                  description: Strategy is the strategy
                                                    to use.
                                                  enum:
                                                  - ""
                                                  - OnWorkflowCompletion
                                                  - OnWorkflowDeletion
                                                  - Never
                                                  type: string
                                              type: object
                                            artifactory:
                                              description: Artifactory contains artifactory
                                                artifact location details
                                              properties:
                                                passwordSecret:
                                                  description: PasswordSecret is the
                                                    secret selector to the repository
                                                    password
                                                  properties:
                                                    key:
                                                      description: The key of the
                                                        secret to select from.  Must
                                                        be a valid secret key.
                                                      type: string
                                                    name:
                                                      default: ""
                                                      description: |-
                                                        Name of the referent.
                                                        This field is effectively required, but due to backwards compatibility is
                                                        allowed to be empty. Instances of this type with an empty value here are
                                                        almost certainly wrong.
                                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                      type: string
                                                    optional:
                                                      description: Specify whether
                                                        the Secret or its key must
                                                        be defined
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                url:
                                                  description: URL of the artifact
                                                  type: string
                                                usernameSecret:
                                                  description: UsernameSecret is the
                                                    secret selector to the repository
                                                    username
                                                  properties:
                                                    key:
                                                      description: The key of the
                                                        secret to select from.  Must
                                                        be a valid secret key.
                                                      type: string
                                                    name:
                                                      default: ""
                                                      description: |-
                                                        Name of the referent.
                                                        This field is effectively required, but due to backwards compatibility is
                                                        allowed to be empty. Instances of this type with an empty value here are
                                                        almost certainly wrong.
                                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                      type: string
                                                    optional:
                                                      description: Specify whether
                                                        the Secret or its key must
                                                        be defined
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                              required:
                                              - url
                                              type: object
                                            azure:
                                              description: Azure contains Azure Storage
                                                artifact location details
                                              properties:
                                                accountKeySecret:
                                                  description: AccountKeySecret is
                                                    the secret selector to the Azure
                                                    Blob Storage account access key
                                                  properties:
                                                    key:
                                                      description: The key of the
                                                        secret to select from.  Must
                                                        be a valid secret key.
                                                      type: string
                                                    name:
                                                      default: ""
                                                      description: |-
                                                        Name of the referent.
                                                        This field is effectively required, but due to backwards compatibility is
                                                        allowed to be empty. Instances of this type with an empty value here are
                                                        almost certainly wrong.
                                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                      type: string
                                                    optional:
                                                      description: Specify whether
                                                        the Secret or its key must
                                                        be defined
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                blob:
                                                  description: Blob is the blob name
                                                    (i.e., path) in the container
                                                    where the artifact resides
                                                  type: string
                                                container:
                                                  description: Container is the container
                                                    where resources will be stored
                                                  type: string
                                                endpoint:
                                                  description: Endpoint is the service
                                                    url associated with an account.
                                                    It is most likely "https://<ACCOUNT_NAME>.blob.core.windows.net"
                                                  type: string
                                                useSDKCreds:
                                                  description: UseSDKCreds tells the
                                                    driver to figure out credentials
                                                    based on sdk defaults.
                                                  type: boolean
                                              required:
                                              - blob
                                              - container
                                              - endpoint
                                              type: object
                                            deleted:
                                              description: Has this been deleted?
                                              type: boolean
                                            from:
                                              description: From allows an artifact
                                                to reference an artifact from a previous
                                                step
                                              type: string
                                            fromExpression:
                                              description: FromExpression, if defined,
                                                is evaluated to specify the value
                                                for the artifact
                                              type: string
                                            gcs:
                                              description: GCS contains GCS artifact
                                                location details
                                              properties:
                                                bucket:
                                                  description: Bucket is the name
                                                    of the bucket
                                                  type: string
                                                key:
                                                  description: Key is the path in
                                                    the bucket where the artifact
                                                    resides
                                                  type: string
                                                serviceAccountKeySecret:
                                                  description: ServiceAccountKeySecret
                                                    is the secret selector to the
                                                    bucket's service account key
                                                  properties:
                                                    key:
                                                      description: The key of the
                                                        secret to select from.  Must
                                                        be a valid secret key.
                                                      type: string
                                                    name:
                                                      default: ""
                                                      description: |-
                                                        Name of the referent.
                                                        This field is effectively required, but due to backwards compatibility is
                                                        allowed to be empty. Instances of this type with an empty value here are
                                                        almost certainly wrong.
                                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                      type: string
                                                    optional:
                                                      description: Specify whether
                                                        the Secret or its key must
                                                        be defined
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                              required:
                                              - key
                                              type: object
                                            git:
                                              description: Git contains git artifact
                                                location details
                                              properties:
                                                branch:
                                                  description: Branch is the branch
                                                    to fetch when `SingleBranch` is
                                                    enabled
                                                  type: string
                                                depth:
                                                  description: |-
                                                    Depth specifies clones/fetches should be shallow and include the given
                                                    number of commits from the branch tip
                                                  format: int64
                                                  type: integer
                                                disableSubmodules:
                                                  description: DisableSubmodules disables
                                                    submodules during git clone
                                                  type: boolean
                                                fetch:
                                                  description: Fetch specifies a number
                                                    of refs that should be fetched
                                                    before checkout
                                                  items:
                                                    type: string
                                                  type: array
                                                insecureIgnoreHostKey:
                                                  description: InsecureIgnoreHostKey
                                                    disables SSH strict host key checking
                                                    during git clone
                                                  type: boolean
                                                insecureSkipTLS:
                                                  description: InsecureSkipTLS disables
                                                    server certificate verification
                                                    resulting in insecure HTTPS connections
                                                  type: boolean
                                                passwordSecret:
                                                  description: PasswordSecret is the
                                                    secret selector to the repository
                                                    password
                                                  properties:
                                                    key:
                                                      description: The key of the
                                                        secret to select from.  Must
                                                        be a valid secret key.
                                                      type: string
                                                    name:
                                                      default: ""
                                                      description: |-
                                                        Name of the referent.
                                                        This field is effectively required, but due to backwards compatibility is
                                                        allowed to be empty. Instances of this type with an empty value here are
                                                        almost certainly wrong.
                                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                      type: string
                                                    optional:
                                                      description: Specify whether
                                                        the Secret or its key must
                                                        be defined
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                repo:
                                                  description: Repo is the git repository
                                                  type: string
                                                revision:
                                                  description: Revision is the git
                                                    commit, tag, branch to checkout
                                                  type: string
                                                singleBranch:
                                                  description: SingleBranch enables
                                                    single branch clone, using the
                                                    `branch` parameter
                                                  type: boolean
                                                sshPrivateKeySecret:
                                                  description: SSHPrivateKeySecret
                                                    is the secret selector to the
                                                    repository ssh private key
                                                  properties:
                                                    key:
                                                      description: The key of the
                                                        secret to select from.  Must
                                                        be a valid secret key.
                                                      type: string
                                                    name:
                                                      default: ""
                                                      description: |-
                                                        Name of the referent.
                                                        This field is effectively required, but due to backwards compatibility is
                                                        allowed to be empty. Instances of this type with an empty value here are
                                                        almost certainly wrong.
                                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                      type: string
                                                    optional:
                                                      description: Specify whether
                                                        the Secret or its key must
                                                        be defined
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                usernameSecret:
                                                  description: UsernameSecret is the
                                                    secret selector to the repository
                                                    username
                                                  properties:
                                                    key:
                                                      description: The key of the
                                                        secret to select from.  Must
                                                        be a valid secret key.
                                                      type: string
                                                    name:
                                                      default: ""
                                                      description: |-
                                                        Name of the referent.
                                                        This field is effectively required, but due to backwards compatibility is
                                                        allowed to be empty. Instances of this type with an empty value here are
                                                        almost certainly wrong.
                                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                      type: string
                                                    optional:
                                                      description: Specify whether
                                                        the Secret or its key must
                                                        be defined
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                              required:
                                              - repo
                                              type: object
                                            globalName:
                                              description: |-
                                                GlobalName exports an output artifact to the global scope, making it available as
                                                '{{workflow.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts
                                              type: string
                                            hdfs:
                                              description: HDFS contains HDFS artifact
                                                location details
                                              properties:
                                                addresses:
                                                  description: Addresses is accessible
                                                    addresses of HDFS name nodes
                                                  items:
                                                    type: string
                                                  type: array
                                                dataTransferProtection:
                                                  description: |-
                                                    DataTransferProtection is the protection level for HDFS data transfer.
                                                    It corresponds to the dfs.data.transfer.protection configuration in HDFS.
                                                  type: string
                                                force:
                                                  description: Force copies a file
                                                    forcibly even if it exists
                                                  type: boolean
                                                hdfsUser:
                                                  description: |-
                                                    HDFSUser is the user to access HDFS file system.
                                                    It is ignored if either ccache or keytab is used.
                                                  type: string
                                                krbCCacheSecret:
                                                  description: |-
                                                    KrbCCacheSecret is the secret selector for Kerberos ccache
                                                    Either ccache or keytab can be set to use Kerberos.
                                                  properties:
                                                    key:
                                                      description: The key of the
                                                        secret to select from.  Must
                                                        be a valid secret key.
                                                      type: string
                                                    name:
                                                      default: ""
                                                      description: |-
                                                        Name of the referent.
                                                        This field is effectively required, but due to backwards compatibility is
                                                        allowed to be empty. Instances of this type with an empty value here are
                                                        almost certainly wrong.
                                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                      type: string
                                                    optional:
                                                      description: Specify whether
                                                        the Secret or its key must
                                                        be defined
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                krbConfigConfigMap:
                                                  description: |-
                                                    KrbConfig is the configmap selector for Kerberos config as string
                                                    It must be set if either ccache or keytab is used.
                                                  properties:
                                                    key:
                                                      description: The key to select.
                                                      type: string
                                                    name:
                                                      default: ""
                                                      description: |-
                                                        Name of the referent.
                                                        This field is effectively required, but due to backwards compatibility is
                                                        allowed to be empty. Instances of this type with an empty value here are
                                                        almost certainly wrong.
                                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                      type: string
                                                    optional:
                                                      description: Specify whether
                                                        the ConfigMap or its key must
                                                        be defined
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                krbKeytabSecret:
                                                  description: |-
                                                    KrbKeytabSecret is the secret selector for Kerberos keytab
                                                    Either ccache or keytab can be set to use Kerberos.
                                                  properties:
                                                    key:
                                                      description: The key of the
                                                        secret to select from.  Must
                                                        be a valid secret key.
                                                      type: string
                                                    name:
                                                      default: ""
                                                      description: |-
                                                        Name of the referent.
                                                        This field is effectively required, but due to backwards compatibility is
                                                        allowed to be empty. Instances of this type with an empty value here are
                                                        almost certainly wrong.
                                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                      type: string
                                                    optional:
                                                      description: Specify whether
                                                        the Secret or its key must
                                                        be defined
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                krbRealm:
                                                  description: |-
                                                    KrbRealm is the Kerberos realm used with Kerberos keytab
                                                    It must be set if keytab is used.
                                                  type: string
                                                krbServicePrincipalName:
                                                  description: |-
                                                    KrbServicePrincipalName is the principal name of Kerberos service
                                                    It must be set if either ccache or keytab is used.
                                                  type: string
                                                krbUsername:
                                                  description: |-
                                                    KrbUsername is the Kerberos username used with Kerberos keytab
                                                    It must be set if keytab is used.
                                                  type: string
                                                path:
                                                  description: Path is a file path
                                                    in HDFS
                                                  type: string
                                              required:
                                              - path
                                              type: object
                                            http:
                                              description: HTTP contains HTTP artifact
                                                location details
                                              properties:
                                                auth:
                                                  description: Auth contains information
                                                    for client authentication
                                                  properties:
                                                    basicAuth:
                                                      description: BasicAuth describes
                                                        the secret selectors required
                                                        for basic authentication
                                                      properties:
                                                        passwordSecret:
                                                          description: PasswordSecret
                                                            is the secret selector
                                                            to the repository password
                                                          properties:
                                                            key:
                                                              description: The key
                                                                of the secret to select
                                                                from.  Must be a valid
                                                                secret key.
                                                              type: string
                                                            name:
                                                              default: ""
                                                              description: |-
                                                                Name of the referent.
                                                                This field is effectively required, but due to backwards compatibility is
                                                                allowed to be empty. Instances of this type with an empty value here are
                                                                almost certainly wrong.
                                                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                              type: string
                                                            optional:
                                                              description: Specify
                                                                whether the Secret
                                                                or its key must be
                                                                defined
                                                              type: boolean
                                                          required:
                                                          - key
                                                          type: object
                                                          x-kubernetes-map-type: atomic
                                                        usernameSecret:
                                                          description: UsernameSecret
                                                            is the secret selector
                                                            to the repository username
                                                          properties:
                                                            key:
                                                              description: The key
                                                                of the secret to select
                                                                from.  Must be a valid
                                                                secret key.
                                                              type: string
                                                            name:
                                                              default: ""
                                                              description: |-
                                                                Name of the referent.
                                                                This field is effectively required, but due to backwards compatibility is
                                                                allowed to be empty. Instances of this type with an empty value here are
                                                                almost certainly wrong.
                                                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                              type: string
                                                            optional:
                                                              description: Specify
                                                                whether the Secret
                                                                or its key must be
                                                                defined
                                                              type: boolean
                                                          required:
                                                          - key
                                                          type: object
                                                          x-kubernetes-map-type: atomic
                                                      type: object
                                                    clientCert:
                                                      description: ClientCertAuth
                                                        holds necessary information
                                                        for client authentication
                                                        via certificates
                                                      properties:
                                                        clientCertSecret:
                                                          description: SecretKeySelector
                                                            selects a key of a Secret.
                                                          properties:
                                                            key:
                                                              description: The key
                                                                of the secret to select
                                                                from.  Must be a valid
                                                                secret key.
                                                              type: string
                                                            name:
                                                              default: ""
                                                              description: |-
                                                                Name of the referent.
                                                                This field is effectively required, but due to backwards compatibility is
                                                                allowed to be empty. Instances of this type with an empty value here are
                                                                almost certainly wrong.
                                                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                              type: string
                                                            optional:
                                                              description: Specify
                                                                whether the Secret
                                                                or its key must be
                                                                defined
                                                              type: boolean
                                                          required:
                                                          - key
                                                          type: object
                                                          x-kubernetes-map-type: atomic
                                                        clientKeySecret:
                                                          description: SecretKeySelector
                                                            selects a key of a Secret.
                                                          properties:
                                                            key:
                                                              description: The key
                                                                of the secret to select
                                                                from.  Must be a valid
                                                                secret key.
                                                              type: string
                                                            name:
                                                              default: ""
                                                              description: |-
                                                                Name of the referent.
                                                                This field is effectively required, but due to backwards compatibility is
                                                                allowed to be empty. Instances of this type with an empty value here are
                                                                almost certainly wrong.
                                                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                              type: string
                                                            optional:
                                                              description: Specify
                                                                whether the Secret
                                                                or its key must be
                                                                defined
                                                              type: boolean
                                                          required:
                                                          - key
                                                          type: object
                                                          x-kubernetes-map-type: atomic
                                                      type: object
                                                    oauth2:
                                                      description: OAuth2Auth holds
                                                        all information for client
                                                        authentication via OAuth2
                                                        tokens
                                                      properties:
                                                        clientIDSecret:
                                                          description: SecretKeySelector
                                                            selects a key of a Secret.
                                                          properties:
                                                            key:
                                                              description: The key
                                                                of the secret to select
                                                                from.  Must be a valid
                                                                secret key.
                                                              type: string
                                                            name:
                                                              default: ""
                                                              description: |-
                                                                Name of the referent.
                                                                This field is effectively required, but due to backwards compatibility is
                                                                allowed to be empty. Instances of this type with an empty value here are
                                                                almost certainly wrong.
                                                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                              type: string
                                                            optional:
                                                              description: Specify
                                                                whether the Secret
                                                                or its key must be
                                                                defined
                                                              type: boolean
                                                          required:
                                                          - key
                                                          type: object
                                                          x-kubernetes-map-type: atomic
                                                        clientSecretSecret:
                                                          description: SecretKeySelector
                                                            selects a key of a Secret.
                                                          properties:
                                                            key:
                                                              description: The key
                                                                of the secret to select
                                                                from.  Must be a valid
                                                                secret key.
                                                              type: string
                                                            name:
                                                              default: ""
                                                              description: |-
                                                                Name of the referent.
                                                                This field is effectively required, but due to backwards compatibility is
                                                                allowed to be empty. Instances of this type with an empty value here are
                                                                almost certainly wrong.
                                                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                              type: string
                                                            optional:
                                                              description: Specify
                                                                whether the Secret
                                                                or its key must be
                                                                defined
                                                              type: boolean
                                                          required:
                                                          - key
                                                          type: object
                                                          x-kubernetes-map-type: atomic
                                                        endpointParams:
                                                          items:
                                                            description: EndpointParam
                                                              is for requesting optional
                                                              fields that should be
                                                              sent in the oauth request
                                                            properties:
                                                              key:
                                                                description: Name
                                                                  is the header name
                                                                type: string
                                                              value:
                                                                description: Value
                                                                  is the literal value
                                                                  to use for the header
                                                                type: string
                                                            required:
                                                            - key
                                                            type: object
                                                          type: array
                                                        scopes:
                                                          items:
                                                            type: string
                                                          type: array
                                                        tokenURLSecret:
                                                          description: SecretKeySelector
                                                            selects a key of a Secret.
                                                          properties:
                                                            key:
                                                              description: The key
                                                                of the secret to select
                                                                from.  Must be a valid
                                                                secret key.
                                                              type: string
                                                            name:
                                                              default: ""
                                                              description: |-
                                                                Name of the referent.
                                                                This field is effectively required, but due to backwards compatibility is
                                                                allowed to be empty. Instances of this type with an empty value here are
                                                                almost certainly wrong.
                                                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                              type: string
                                                            optional:
                                                              description: Specify
                                                                whether the Secret
                                                                or its key must be
                                                                defined
                                                              type: boolean
                                                          required:
                                                          - key
                                                          type: object
                                                          x-kubernetes-map-type: atomic
                                                      type: object
                                                  type: object
                                                headers:
                                                  description: Headers are an optional
                                                    list of headers to send with HTTP
                                                    requests for artifacts
                                                  items:
                                                    description: Header indicate a
                                                      key-value request header to
                                                      be used when fetching artifacts
                                                      over HTTP
                                                    properties:
                                                      name:
                                                        description: Name is the header
                                                          name
                                                        type: string
                                                      value:
                                                        description: Value is the
                                                          literal value to use for
                                                          the header
                                                        type: string
                                                    required:
                                                    - name
                                                    - value
                                                    type: object
                                                  type: array
                                                url:
                                                  description: URL of the artifact
                                                  type: string
                                              required:
                                              - url
                                              type: object
                                            mode:
                                              description: |-
                                                mode bits to use on this file, must be a value between 0 and 0777.
                                                Set when loading input artifacts. It is recommended to set the mode value
                                                to ensure the artifact has the expected permissions in your container.
                                              format: int32
                                              maximum: 511
                                              minimum: 0
                                              type: integer
                                            name:
                                              description: name of the artifact. must
                                                be unique within a template's inputs/outputs.
                                              pattern: ^[-a-zA-Z0-9_{}.]+$
                                              type: string
                                            optional:
                                              description: Make Artifacts optional,
                                                if Artifacts doesn't generate or exist
                                              type: boolean
                                            oss:
                                              description: OSS contains OSS artifact
                                                location details
                                              properties:
                                                accessKeySecret:
                                                  description: AccessKeySecret is
                                                    the secret selector to the bucket's
                                                    access key
                                                  properties:
                                                    key:
                                                      description: The key of the
                                                        secret to select from.  Must
                                                        be a valid secret key.
                                                      type: string
                                                    name:
                                                      default: ""
                                                      description: |-
                                                        Name of the referent.
                                                        This field is effectively required, but due to backwards compatibility is
                                                        allowed to be empty. Instances of this type with an empty value here are
                                                        almost certainly wrong.
                                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                      type: string
                                                    optional:
                                                      description: Specify whether
                                                        the Secret or its key must
                                                        be defined
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                bucket:
                                                  description: Bucket is the name
                                                    of the bucket
                                                  type: string
                                                createBucketIfNotPresent:
                                                  description: CreateBucketIfNotPresent
                                                    tells the driver to attempt to
                                                    create the OSS bucket for output
                                                    artifacts, if it doesn't exist
                                                  type: boolean
                                                endpoint:
                                                  description: Endpoint is the hostname
                                                    of the bucket endpoint
                                                  type: string
                                                key:
                                                  description: Key is the path in
                                                    the bucket where the artifact
                                                    resides
                                                  type: string
                                                lifecycleRule:
                                                  description: LifecycleRule specifies
                                                    how to manage bucket's lifecycle
                                                  properties:
                                                    markDeletionAfterDays:
                                                      description: MarkDeletionAfterDays
                                                        is the number of days before
                                                        we delete objects in the bucket
                                                      format: int32
                                                      type: integer
                                                    markInfrequentAccessAfterDays:
                                                      description: MarkInfrequentAccessAfterDays
                                                        is the number of days before
                                                        we convert the objects in
                                                        the bucket to Infrequent Access
                                                        (IA) storage type
                                                      format: int32
                                                      type: integer
                                                  type: object
                                                secretKeySecret:
                                                  description: SecretKeySecret is
                                                    the secret selector to the bucket's
                                                    secret key
                                                  properties:
                                                    key:
                                                      description: The key of the
                                                        secret to select from.  Must
                                                        be a valid secret key.
                                                      type: string
                                                    name:
                                                      default: ""
                                                      description: |-
                                                        Name of the referent.
                                                        This field is effectively required, but due to backwards compatibility is
                                                        allowed to be empty. Instances of this type with an empty value here are
                                                        almost certainly wrong.
                                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                      type: string
                                                    optional:
                                                      description: Specify whether
                                                        the Secret or its key must
                                                        be defined
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                securityToken:
                                                  description: 'SecurityToken is the
                                                    user''s temporary security token.
                                                    For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm'
                                                  type: string
                                                useSDKCreds:
                                                  description: UseSDKCreds tells the
                                                    driver to figure out credentials
                                                    based on sdk defaults.
                                                  type: boolean
                                              required:
                                              - key
                                              type: object
                                            path:
                                              description: Path is the container path
                                                to the artifact
                                              type: string
                                            plugin:
                                              description: Plugin contains plugin
                                                artifact location details
                                              properties:
                                                configuration:
                                                  description: Configuration is the
                                                    plugin defined configuration for
                                                    the artifact driver plugin
                                                  type: string
                                                connectionTimeoutSeconds:
                                                  description: ConnectionTimeoutSeconds
                                                    is the timeout for the artifact
                                                    driver connection, overriding
                                                    the driver's timeout
                                                  format: int32
                                                  type: integer
                                                key:
                                                  description: Key is the path in
                                                    the artifact repository where
                                                    the artifact resides
                                                  type: string
                                                name:
                                                  description: Name is the name of
                                                    the artifact driver plugin
                                                  type: string
                                              required:
                                              - key
                                              type: object
                                            raw:
                                              description: Raw contains raw artifact
                                                location details
                                              properties:
                                                data:
                                                  description: Data is the string
                                                    contents of the artifact
                                                  type: string
                                              required:
                                              - data
                                              type: object
                                            recurseMode:
                                              description: If mode is set, apply the
                                                permission recursively into the artifact
                                                if it is a folder
                                              type: boolean
                                            s3:
                                              description: S3 contains S3 artifact
                                                location details
                                              properties:
                                                accessKeySecret:
                                                  description: AccessKeySecret is
                                                    the secret selector to the bucket's
                                                    access key
                                                  properties:
                                                    key:
                                                      description: The key of the
                                                        secret to select from.  Must
                                                        be a valid secret key.
                                                      type: string
                                                    name:
                                                      default: ""
                                                      description: |-
                                                        Name of the referent.
                                                        This field is effectively required, but due to backwards compatibility is
                                                        allowed to be empty. Instances of this type with an empty value here are
                                                        almost certainly wrong.
                                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                      type: string
                                                    optional:
                                                      description: Specify whether
                                                        the Secret or its key must
                                                        be defined
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                bucket:
                                                  description: Bucket is the name
                                                    of the bucket
                                                  type: string
                                                caSecret:
                                                  description: CASecret specifies
                                                    the secret that contains the CA,
                                                    used to verify the TLS connection
                                                  properties:
                                                    key:
                                                      description: The key of the
                                                        secret to select from.  Must
                                                        be a valid secret key.
                                                      type: string
                                                    name:
                                                      default: ""
                                                      description: |-
                                                        Name of the referent.
                                                        This field is effectively required, but due to backwards compatibility is
                                                        allowed to be empty. Instances of this type with an empty value here are
                                                        almost certainly wrong.
                                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                      type: string
                                                    optional:
                                                      description: Specify whether
                                                        the Secret or its key must
                                                        be defined
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                createBucketIfNotPresent:
                                                  description: CreateBucketIfNotPresent
                                                    tells the driver to attempt to
                                                    create the S3 bucket for output
                                                    artifacts, if it doesn't exist.
                                                    Setting Enabled Encryption will
                                                    apply either SSE-S3 to the bucket
                                                    if KmsKeyId is not set or SSE-KMS
                                                    if it is.
                                                  properties:
                                                    objectLocking:
                                                      description: ObjectLocking Enable
                                                        object locking
                                                      type: boolean
                                                  type: object
                                                encryptionOptions:
                                                  description: S3EncryptionOptions
                                                    used to determine encryption options
                                                    during s3 operations
                                                  properties:
                                                    enableEncryption:
                                                      description: EnableEncryption
                                                        tells the driver to encrypt
                                                        objects if set to true. If
                                                        kmsKeyId and serverSideCustomerKeySecret
                                                        are not set, SSE-S3 will be
                                                        used
                                                      type: boolean
                                                    kmsEncryptionContext:
                                                      description: KmsEncryptionContext
                                                        is a json blob that contains
                                                        an encryption context. See
                                                        https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context
                                                        for more information
                                                      type: string
                                                    kmsKeyId:
                                                      description: KMSKeyId tells
                                                        the driver to encrypt the
                                                        object using the specified
                                                        KMS Key.
                                                      type: string
                                                    serverSideCustomerKeySecret:
                                                      description: ServerSideCustomerKeySecret
                                                        tells the driver to encrypt
                                                        the output artifacts using
                                                        SSE-C with the specified secret.
                                                      properties:
                                                        key:
                                                          description: The key of
                                                            the secret to select from.  Must
                                                            be a valid secret key.
                                                          type: string
                                                        name:
                                                          default: ""
                                                          description: |-
                                                            Name of the referent.
                                                            This field is effectively required, but due to backwards compatibility is
                                                            allowed to be empty. Instances of this type with an empty value here are
                                                            almost certainly wrong.
                                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                          type: string
                                                        optional:
                                                          description: Specify whether
                                                            the Secret or its key
                                                            must be defined
                                                          type: boolean
                                                      required:
                                                      - key
                                                      type: object
                                                      x-kubernetes-map-type: atomic
                                                  type: object
                                                endpoint:
                                                  description: Endpoint is the hostname
                                                    of the bucket endpoint
                                                  type: string
                                                insecure:
                                                  description: Insecure will connect
                                                    to the service with TLS
                                                  type: boolean
                                                key:
                                                  description: Key is the key in the
                                                    bucket where the artifact resides
                                                  type: string
                                                region:
                                                  description: Region contains the
                                                    optional bucket region
                                                  type: string
                                                roleARN:
                                                  description: RoleARN is the Amazon
                                                    Resource Name (ARN) of the role
                                                    to assume.
                                                  type: string
                                                secretKeySecret:
                                                  description: SecretKeySecret is
                                                    the secret selector to the bucket's
                                                    secret key
                                                  properties:
                                                    key:
                                                      description: The key of the
                                                        secret to select from.  Must
                                                        be a valid secret key.
                                                      type: string
                                                    name:
                                                      default: ""
                                                      description: |-
                                                        Name of the referent.
                                                        This field is effectively required, but due to backwards compatibility is
                                                        allowed to be empty. Instances of this type with an empty value here are
                                                        almost certainly wrong.
                                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                      type: string
                                                    optional:
                                                      description: Specify whether
                                                        the Secret or its key must
                                                        be defined
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                sessionTokenSecret:
                                                  description: SessionTokenSecret
                                                    is used for ephemeral credentials
                                                    like an IAM assume role or S3
                                                    access grant
                                                  properties:
                                                    key:
                                                      description: The key of the
                                                        secret to select from.  Must
                                                        be a valid secret key.
                                                      type: string
                                                    name:
                                                      default: ""
                                                      description: |-
                                                        Name of the referent.
                                                        This field is effectively required, but due to backwards compatibility is
                                                        allowed to be empty. Instances of this type with an empty value here are
                                                        almost certainly wrong.
                                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                      type: string
                                                    optional:
                                                      description: Specify whether
                                                        the Secret or its key must
                                                        be defined
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                useSDKCreds:
                                                  description: UseSDKCreds tells the
                                                    driver to figure out credentials
                                                    based on sdk defaults.
                                                  type: boolean
                                              type: object
                                            subPath:
                                              description: SubPath allows an artifact
                                                to be sourced from a subpath within
                                                the specified source
                                              type: string
                                          required:
                                          - name
                                          type: object
                                          x-kubernetes-validations:
                                          - message: at most one artifact location
                                              can be specified
                                            rule: '(has(self.s3) ? 1 : 0) + (has(self.git)
                                              ? 1 : 0) + (has(self.http) ? 1 : 0)
                                              + (has(self.artifactory) ? 1 : 0) +
                                              (has(self.hdfs) ? 1 : 0) + (has(self.raw)
                                              ? 1 : 0) + (has(self.oss) ? 1 : 0) +
                                              (has(self.gcs) ? 1 : 0) + (has(self.azure)
                                              ? 1 : 0) + (has(self.plugin) ? 1 : 0)
                                              <= 1'
                                        type: array
                                      parameters:
                                        description: Parameters is the list of parameters
                                          to pass to the template or workflow
                                        items:
                                          description: Parameter indicate a passed
                                            string parameter to a service template
                                            with an optional default value
                                          properties:
                                            default:
                                              description: Default is the default
                                                value to use for an input parameter
                                                if a value was not supplied
                                              type: string
                                            description:
                                              description: Description is the parameter
                                                description
                                              type: string
                                            enum:
                                              description: Enum holds a list of string
                                                values to choose from, for the actual
                                                value of the parameter
                                              items:
                                                description: |-
                                                  * It's JSON type is just string.
                                                  * It will unmarshall int64, int32, float64, float32, boolean, a plain string and represents it as string.
                                                  * It will marshall back to string - marshalling is not symmetric.
                                                type: string
                                              minItems: 1
                                              type: array
                                            globalName:
                                              description: |-
                                                GlobalName exports an output parameter to the global scope, making it available as
                                                '{{workflow.outputs.parameters.XXXX}} and in workflow.status.outputs.parameters
                                              type: string
                                            name:
                                              description: Name is the parameter name
                                              pattern: ^[-a-zA-Z0-9_]+$
                                              type: string
                                            value:
                                              description: |-
                                                Value is the literal value to use for the parameter.
                                                If specified in the context of an input parameter, any passed values take precedence over the specified value
                                              type: string
                                            valueFrom:
                                              description: ValueFrom is the source
                                                for the output parameter's value
                                              properties:
                                                configMapKeyRef:
                                                  description: ConfigMapKeyRef is
                                                    configmap selector for input parameter
                                                    configuration
                                                  properties:
                                                    key:
                                                      description: The key to select.
                                                      type: string
                                                    name:
                                                      default: ""
                                                      description: |-
                                                        Name of the referent.
                                                        This field is effectively required, but due to backwards compatibility is
                                                        allowed to be empty. Instances of this type with an empty value here are
                                                        almost certainly wrong.
                                                        More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                      type: string
                                                    optional:
                                                      description: Specify whether
                                                        the ConfigMap or its key must
                                                        be defined
                                                      type: boolean
                                                  required:
                                                  - key
                                                  type: object
                                                  x-kubernetes-map-type: atomic
                                                default:
                                                  description: Default specifies a
                                                    value to be used if retrieving
                                                    the value from the specified source
                                                    fails
                                                  type: string
                                                event:
                                                  description: Selector (https://github.com/expr-lang/expr)
                                                    that is evaluated against the
                                                    event to get the value of the
                                                    parameter. E.g. `payload.message`
                                                  type: string
                                                expression:
                                                  description: Expression, if defined,
                                                    is evaluated to specify the value
                                                    for the parameter
                                                  type: string
                                                jqFilter:
                                                  description: JQFilter expression
                                                    against the resource object in
                                                    resource templates
                                                  type: string
                                                jsonPath:
                                                  description: JSONPath of a resource
                                                    to retrieve an output parameter
                                                    value from in resource templates
                                                  type: string
                                                parameter:
                                                  description: |-
                                                    Parameter reference to a step or dag task in which to retrieve an output parameter value from
                                                    (e.g. '{{steps.mystep.outputs.myparam}}')
                                                  type: string
                                                path:
                                                  description: Path in the container
                                                    to retrieve an output parameter
                                                    value from in container templates
                                                  type: string
                                                supplied:
                                                  description: Supplied value to be
                                                    filled in directly, either through
                                                    the CLI, API, etc.
                                                  type: object
                                              type: object
                                          required:
                                          - name
                                          type: object
                                        type: array
                                    type: object
                                  expression:
                                    description: |-
                                      Expression is a condition expression for when a node will be retried. If it evaluates to false, the node will not
                                      be retried and the retry strategy will be ignored
                                    type: string
                                  template:
                                    description: Template is the name of the template
                                      to execute by the hook
                                    type: string
                                  templateRef:
                                    description: TemplateRef is the reference to the
                                      template resource to execute by the hook
                                    properties:
                                      clusterScope:
                                        description: ClusterScope indicates the referred
                                          template is cluster scoped (i.e. a ClusterWorkflowTemplate).
                                        type: boolean
                                      name:
                                        description: Name is the resource name of
                                          the template.
                                        type: string
                                      template:
                                        description: Template is the name of referred
                                          template in the resource.
                                        type: string
                                    type: object
                                type: object
                              description: |-
                                Hooks holds the lifecycle hook which is invoked at lifecycle of
                                step, irrespective of the success, failure, or error status of the primary step
                              type: object
                            inline:
                              description: |-
                                Inline is the template. Template must be empty if this is declared (and vice-versa).
                                Note: This struct is defined recursively, since the inline template can potentially contain
                                steps/DAGs that also has an "inline" field. Kubernetes doesn't allow recursive types, so we
                                need "x-kubernetes-preserve-unknown-fields: true" in the validation schema.
                              x-kubernetes-preserve-unknown-fields: true
                            name:
                              description: Name of the step
                              maxLength: 128
                              pattern: ^[a-zA-Z0-9][-a-zA-Z0-9]*$
                              type: string
                            onExit:
                              description: |-
                                OnExit is a template reference which is invoked at the end of the
                                template, irrespective of the success, failure, or error of the
                                primary template.
                                DEPRECATED: Use Hooks[exit].Template instead.
                              type: string
                            template:
                              description: Template is the name of the template to
                                execute as the step
                              type: string
                            templateRef:
                              description: TemplateRef is the reference to the template
                                resource to execute as the step.
                              properties:
                                clusterScope:
                                  description: ClusterScope indicates the referred
                                    template is cluster scoped (i.e. a ClusterWorkflowTemplate).
                                  type: boolean
                                name:
                                  description: Name is the resource name of the template.
                                  type: string
                                template:
                                  description: Template is the name of referred template
                                    in the resource.
                                  type: string
                              type: object
                            when:
                              description: When is an expression in which the step
                                should conditionally execute
                              type: string
                            withItems:
                              description: |-
                                WithItems expands a step into multiple parallel steps from the items in the list
                                Note: The structure of WithItems is free-form, so we need
                                "x-kubernetes-preserve-unknown-fields: true" in the validation schema.
                              x-kubernetes-preserve-unknown-fields: true
                            withParam:
                              description: |-
                                WithParam expands a step into multiple parallel steps from the value in the parameter,
                                which is expected to be a JSON list.
                              type: string
                            withSequence:
                              description: WithSequence expands a step into a numeric
                                sequence
                              properties:
                                count:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: 'Count is number of elements in the
                                    sequence (default: 0). Not to be used with end'
                                  x-kubernetes-int-or-string: true
                                end:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: 'Number at which to end the sequence
                                    (default: 0). Not to be used with Count'
                                  x-kubernetes-int-or-string: true
                                format:
                                  description: Format is a printf format string to
                                    format the value in the sequence
                                  type: string
                                start:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: 'Number at which to start the sequence
                                    (default: 0)'
                                  x-kubernetes-int-or-string: true
                              type: object
                              x-kubernetes-validations:
                              - message: only one of count or end can be defined
                                rule: '!(has(self.count) && has(self.end))'
                          type: object
                        type: array
                      minItems: 1
                      type: array
                    suspend:
                      description: Suspend template subtype which can suspend a workflow
                        when reaching the step
                      properties:
                        duration:
                          description: |-
                            Duration is the seconds to wait before automatically resuming a template. Must be a string. Default unit is seconds.
                            Could also be a Duration, e.g.: "2m", "6h"
                          type: string
                      type: object
                    synchronization:
                      description: Synchronization holds synchronization lock configuration
                        for this template
                      properties:
                        mutexes:
                          description: 'v3.6 and after: Mutexes holds the list of
                            Mutex lock details'
                          items:
                            description: Mutex holds Mutex configuration
                            properties:
                              database:
                                description: Database specifies this is database controlled
                                  if this is set true
                                type: boolean
                              name:
                                description: name of the mutex
                                type: string
                              namespace:
                                description: 'Namespace is the namespace of the mutex,
                                  default: [namespace of workflow]'
                                type: string
                            type: object
                          type: array
                        semaphores:
                          description: 'v3.6 and after: Semaphores holds the list
                            of Semaphores configuration'
                          items:
                            description: SemaphoreRef is a reference of Semaphore
                            properties:
                              configMapKeyRef:
                                description: ConfigMapKeyRef is a configmap selector
                                  for Semaphore configuration
                                properties:
                                  key:
                                    description: The key to select.
                                    type: string
                                  name:
                                    default: ""
                                    description: |-
                                      Name of the referent.
                                      This field is effectively required, but due to backwards compatibility is
                                      allowed to be empty. Instances of this type with an empty value here are
                                      almost certainly wrong.
                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    type: string
                                  optional:
                                    description: Specify whether the ConfigMap or
                                      its key must be defined
                                    type: boolean
                                required:
                                - key
                                type: object
                                x-kubernetes-map-type: atomic
                              database:
                                description: SyncDatabaseRef is a database reference
                                  for Semaphore configuration
                                properties:
                                  key:
                                    type: string
                                required:
                                - key
                                type: object
                              namespace:
                                description: 'Namespace is the namespace of the configmap,
                                  default: [namespace of workflow]'
                                type: string
                            type: object
                          type: array
                      type: object
                    timeout:
                      description: |-
                        Timeout allows to set the total node execution timeout duration counting from the node's start time.
                        This duration also includes time in which the node spends in Pending state. This duration may not be applied to Step or DAG templates.
                      type: string
                    tolerations:
                      description: Tolerations to apply to workflow pods.
                      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
                    volumes:
                      description: Volumes is a list of volumes that can be mounted
                        by containers in a template.
                      items:
                        description: Volume represents a named volume in a pod that
                          may be accessed by any container in the pod.
                        properties:
                          awsElasticBlockStore:
                            description: |-
                              awsElasticBlockStore represents an AWS Disk resource that is attached to a
                              kubelet's host machine and then exposed to the pod.
                              Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree
                              awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver.
                              More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                            properties:
                              fsType:
                                description: |-
                                  fsType is the filesystem type of the volume that you want to mount.
                                  Tip: Ensure that the filesystem type is supported by the host operating system.
                                  Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                  More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                type: string
                              partition:
                                description: |-
                                  partition is the partition in the volume that you want to mount.
                                  If omitted, the default is to mount by volume name.
                                  Examples: For volume /dev/sda1, you specify the partition as "1".
                                  Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
                                format: int32
                                type: integer
                              readOnly:
                                description: |-
                                  readOnly value true will force the readOnly setting in VolumeMounts.
                                  More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                type: boolean
                              volumeID:
                                description: |-
                                  volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
                                  More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                                type: string
                            required:
                            - volumeID
                            type: object
                          azureDisk:
                            description: |-
                              azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
                              Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type
                              are redirected to the disk.csi.azure.com CSI driver.
                            properties:
                              cachingMode:
                                description: 'cachingMode is the Host Caching mode:
                                  None, Read Only, Read Write.'
                                type: string
                              diskName:
                                description: diskName is the Name of the data disk
                                  in the blob storage
                                type: string
                              diskURI:
                                description: diskURI is the URI of data disk in the
                                  blob storage
                                type: string
                              fsType:
                                default: ext4
                                description: |-
                                  fsType is Filesystem type to mount.
                                  Must be a filesystem type supported by the host operating system.
                                  Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                type: string
                              kind:
                                description: 'kind expected values are Shared: multiple
                                  blob disks per storage account  Dedicated: single
                                  blob disk per storage account  Managed: azure managed
                                  data disk (only in managed availability set). defaults
                                  to shared'
                                type: string
                              readOnly:
                                default: false
                                description: |-
                                  readOnly Defaults to false (read/write). ReadOnly here will force
                                  the ReadOnly setting in VolumeMounts.
                                type: boolean
                            required:
                            - diskName
                            - diskURI
                            type: object
                          azureFile:
                            description: |-
                              azureFile represents an Azure File Service mount on the host and bind mount to the pod.
                              Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type
                              are redirected to the file.csi.azure.com CSI driver.
                            properties:
                              readOnly:
                                description: |-
                                  readOnly defaults to false (read/write). ReadOnly here will force
                                  the ReadOnly setting in VolumeMounts.
                                type: boolean
                              secretName:
                                description: secretName is the  name of secret that
                                  contains Azure Storage Account Name and Key
                                type: string
                              shareName:
                                description: shareName is the azure share Name
                                type: string
                            required:
                            - secretName
                            - shareName
                            type: object
                          cephfs:
                            description: |-
                              cephFS represents a Ceph FS mount on the host that shares a pod's lifetime.
                              Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.
                            properties:
                              monitors:
                                description: |-
                                  monitors is Required: Monitors is a collection of Ceph monitors
                                  More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              path:
                                description: 'path is Optional: Used as the mounted
                                  root, rather than the full Ceph tree, default is
                                  /'
                                type: string
                              readOnly:
                                description: |-
                                  readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                                  the ReadOnly setting in VolumeMounts.
                                  More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                type: boolean
                              secretFile:
                                description: |-
                                  secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
                                  More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                type: string
                              secretRef:
                                description: |-
                                  secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
                                  More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                properties:
                                  name:
                                    default: ""
                                    description: |-
                                      Name of the referent.
                                      This field is effectively required, but due to backwards compatibility is
                                      allowed to be empty. Instances of this type with an empty value here are
                                      almost certainly wrong.
                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    type: string
                                type: object
                                x-kubernetes-map-type: atomic
                              user:
                                description: |-
                                  user is optional: User is the rados user name, default is admin
                                  More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                                type: string
                            required:
                            - monitors
                            type: object
                          cinder:
                            description: |-
                              cinder represents a cinder volume attached and mounted on kubelets host machine.
                              Deprecated: Cinder is deprecated. All operations for the in-tree cinder type
                              are redirected to the cinder.csi.openstack.org CSI driver.
                              More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                            properties:
                              fsType:
                                description: |-
                                  fsType is the filesystem type to mount.
                                  Must be a filesystem type supported by the host operating system.
                                  Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                  More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                type: string
                              readOnly:
                                description: |-
                                  readOnly defaults to false (read/write). ReadOnly here will force
                                  the ReadOnly setting in VolumeMounts.
                                  More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                type: boolean
                              secretRef:
                                description: |-
                                  secretRef is optional: points to a secret object containing parameters used to connect
                                  to OpenStack.
                                properties:
                                  name:
                                    default: ""
                                    description: |-
                                      Name of the referent.
                                      This field is effectively required, but due to backwards compatibility is
                                      allowed to be empty. Instances of this type with an empty value here are
                                      almost certainly wrong.
                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    type: string
                                type: object
                                x-kubernetes-map-type: atomic
                              volumeID:
                                description: |-
                                  volumeID used to identify the volume in cinder.
                                  More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                                type: string
                            required:
                            - volumeID
                            type: object
                          configMap:
                            description: configMap represents a configMap that should
                              populate this volume
                            properties:
                              defaultMode:
                                description: |-
                                  defaultMode is optional: mode bits used to set permissions on created files by default.
                                  Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                  Defaults to 0644.
                                  Directories within the path are not affected by this setting.
                                  This might be in conflict with other options that affect the file
                                  mode, like fsGroup, and the result can be other mode bits set.
                                format: int32
                                type: integer
                              items:
                                description: |-
                                  items if unspecified, each key-value pair in the Data field of the referenced
                                  ConfigMap will be projected into the volume as a file whose name is the
                                  key and content is the value. If specified, the listed keys will be
                                  projected into the specified paths, and unlisted keys will not be
                                  present. If a key is specified which is not present in the ConfigMap,
                                  the volume setup will error unless it is marked optional. Paths must be
                                  relative and may not contain the '..' path or start with '..'.
                                items:
                                  description: Maps a string key to a path within
                                    a volume.
                                  properties:
                                    key:
                                      description: key is the key to project.
                                      type: string
                                    mode:
                                      description: |-
                                        mode is Optional: mode bits used to set permissions on this file.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                        If not specified, the volume defaultMode will be used.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    path:
                                      description: |-
                                        path is the relative path of the file to map the key to.
                                        May not be an absolute path.
                                        May not contain the path element '..'.
                                        May not start with the string '..'.
                                      type: string
                                  required:
                                  - key
                                  - path
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              name:
                                default: ""
                                description: |-
                                  Name of the referent.
                                  This field is effectively required, but due to backwards compatibility is
                                  allowed to be empty. Instances of this type with an empty value here are
                                  almost certainly wrong.
                                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                type: string
                              optional:
                                description: optional specify whether the ConfigMap
                                  or its keys must be defined
                                type: boolean
                            type: object
                            x-kubernetes-map-type: atomic
                          csi:
                            description: csi (Container Storage Interface) represents
                              ephemeral storage that is handled by certain external
                              CSI drivers.
                            properties:
                              driver:
                                description: |-
                                  driver is the name of the CSI driver that handles this volume.
                                  Consult with your admin for the correct name as registered in the cluster.
                                type: string
                              fsType:
                                description: |-
                                  fsType to mount. Ex. "ext4", "xfs", "ntfs".
                                  If not provided, the empty value is passed to the associated CSI driver
                                  which will determine the default filesystem to apply.
                                type: string
                              nodePublishSecretRef:
                                description: |-
                                  nodePublishSecretRef is a reference to the secret object containing
                                  sensitive information to pass to the CSI driver to complete the CSI
                                  NodePublishVolume and NodeUnpublishVolume calls.
                                  This field is optional, and  may be empty if no secret is required. If the
                                  secret object contains more than one secret, all secret references are passed.
                                properties:
                                  name:
                                    default: ""
                                    description: |-
                                      Name of the referent.
                                      This field is effectively required, but due to backwards compatibility is
                                      allowed to be empty. Instances of this type with an empty value here are
                                      almost certainly wrong.
                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    type: string
                                type: object
                                x-kubernetes-map-type: atomic
                              readOnly:
                                description: |-
                                  readOnly specifies a read-only configuration for the volume.
                                  Defaults to false (read/write).
                                type: boolean
                              volumeAttributes:
                                additionalProperties:
                                  type: string
                                description: |-
                                  volumeAttributes stores driver-specific properties that are passed to the CSI
                                  driver. Consult your driver's documentation for supported values.
                                type: object
                            required:
                            - driver
                            type: object
                          downwardAPI:
                            description: downwardAPI represents downward API about
                              the pod that should populate this volume
                            properties:
                              defaultMode:
                                description: |-
                                  Optional: mode bits to use on created files by default. Must be a
                                  Optional: mode bits used to set permissions on created files by default.
                                  Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                  Defaults to 0644.
                                  Directories within the path are not affected by this setting.
                                  This might be in conflict with other options that affect the file
                                  mode, like fsGroup, and the result can be other mode bits set.
                                format: int32
                                type: integer
                              items:
                                description: Items is a list of downward API volume
                                  file
                                items:
                                  description: DownwardAPIVolumeFile represents information
                                    to create the file containing the pod field
                                  properties:
                                    fieldRef:
                                      description: 'Required: Selects a field of the
                                        pod: only annotations, labels, name, namespace
                                        and uid are supported.'
                                      properties:
                                        apiVersion:
                                          description: Version of the schema the FieldPath
                                            is written in terms of, defaults to "v1".
                                          type: string
                                        fieldPath:
                                          description: Path of the field to select
                                            in the specified API version.
                                          type: string
                                      required:
                                      - fieldPath
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    mode:
                                      description: |-
                                        Optional: mode bits used to set permissions on this file, must be an octal value
                                        between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                        If not specified, the volume defaultMode will be used.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    path:
                                      description: 'Required: Path is  the relative
                                        path name of the file to be created. Must
                                        not be absolute or contain the ''..'' path.
                                        Must be utf-8 encoded. The first item of the
                                        relative path must not start with ''..'''
                                      type: string
                                    resourceFieldRef:
                                      description: |-
                                        Selects a resource of the container: only resources limits and requests
                                        (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                      properties:
                                        containerName:
                                          description: 'Container name: required for
                                            volumes, optional for env vars'
                                          type: string
                                        divisor:
                                          anyOf:
                                          - type: integer
                                          - type: string
                                          description: Specifies the output format
                                            of the exposed resources, defaults to
                                            "1"
                                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                          x-kubernetes-int-or-string: true
                                        resource:
                                          description: 'Required: resource to select'
                                          type: string
                                      required:
                                      - resource
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  required:
                                  - path
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                            type: object
                          emptyDir:
                            description: |-
                              emptyDir represents a temporary directory that shares a pod's lifetime.
                              More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                            properties:
                              medium:
                                description: |-
                                  medium represents what type of storage medium should back this directory.
                                  The default is "" which means to use the node's default medium.
                                  Must be an empty string (default) or Memory.
                                  More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                type: string
                              sizeLimit:
                                anyOf:
                                - type: integer
                                - type: string
                                description: |-
                                  sizeLimit is the total amount of local storage required for this EmptyDir volume.
                                  The size limit is also applicable for memory medium.
                                  The maximum usage on memory medium EmptyDir would be the minimum value between
                                  the SizeLimit specified here and the sum of memory limits of all containers in a pod.
                                  The default is nil which means that the limit is undefined.
                                  More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                            type: object
                          ephemeral:
                            description: |-
                              ephemeral represents a volume that is handled by a cluster storage driver.
                              The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
                              and deleted when the pod is removed.

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

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

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

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

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

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

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

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

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

                                        Alpha, gated by the ClusterTrustBundleProjection feature gate.

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

                                        Kubelet performs aggressive normalization of the PEM contents written
                                        into the pod filesystem.  Esoteric PEM features such as inter-block
                                        comments and block headers are stripped.  Certificates are deduplicated.
                                        The ordering of certificates within the file is arbitrary, and Kubelet
                                        may change the order over time.
                                      properties:
                                        labelSelector:
                                          description: |-
                                            Select all ClusterTrustBundles that match this label selector.  Only has
                                            effect if signerName is set.  Mutually-exclusive with name.  If unset,
                                            interpreted as "match nothing".  If set but empty, interpreted as "match
                                            everything".
                                          properties:
                                            matchExpressions:
                                              description: matchExpressions is a list
                                                of label selector requirements. The
                                                requirements are ANDed.
                                              items:
                                                description: |-
                                                  A label selector requirement is a selector that contains values, a key, and an operator that
                                                  relates the key and values.
                                                properties:
                                                  key:
                                                    description: key is the label
                                                      key that the selector applies
                                                      to.
                                                    type: string
                                                  operator:
                                                    description: |-
                                                      operator represents a key's relationship to a set of values.
                                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                                    type: string
                                                  values:
                                                    description: |-
                                                      values is an array of string values. If the operator is In or NotIn,
                                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                      the values array must be empty. This array is replaced during a strategic
                                                      merge patch.
                                                    items:
                                                      type: string
                                                    type: array
                                                    x-kubernetes-list-type: atomic
                                                required:
                                                - key
                                                - operator
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            matchLabels:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                                              type: object
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        name:
                                          description: |-
                                            Select a single ClusterTrustBundle by object name.  Mutually-exclusive
                                            with signerName and labelSelector.
                                          type: string
                                        optional:
                                          description: |-
                                            If true, don't block pod startup if the referenced ClusterTrustBundle(s)
                                            aren't available.  If using name, then the named ClusterTrustBundle is
                                            allowed not to exist.  If using signerName, then the combination of
                                            signerName and labelSelector is allowed to match zero
                                            ClusterTrustBundles.
                                          type: boolean
                                        path:
                                          description: Relative path from the volume
                                            root to write the bundle.
                                          type: string
                                        signerName:
                                          description: |-
                                            Select all ClusterTrustBundles that match this signer name.
                                            Mutually-exclusive with name.  The contents of all selected
                                            ClusterTrustBundles will be unified and deduplicated.
                                          type: string
                                      required:
                                      - path
                                      type: object
                                    configMap:
                                      description: configMap information about the
                                        configMap data to project
                                      properties:
                                        items:
                                          description: |-
                                            items if unspecified, each key-value pair in the Data field of the referenced
                                            ConfigMap will be projected into the volume as a file whose name is the
                                            key and content is the value. If specified, the listed keys will be
                                            projected into the specified paths, and unlisted keys will not be
                                            present. If a key is specified which is not present in the ConfigMap,
                                            the volume setup will error unless it is marked optional. Paths must be
                                            relative and may not contain the '..' path or start with '..'.
                                          items:
                                            description: Maps a string key to a path
                                              within a volume.
                                            properties:
                                              key:
                                                description: key is the key to project.
                                                type: string
                                              mode:
                                                description: |-
                                                  mode is Optional: mode bits used to set permissions on this file.
                                                  Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                  If not specified, the volume defaultMode will be used.
                                                  This might be in conflict with other options that affect the file
                                                  mode, like fsGroup, and the result can be other mode bits set.
                                                format: int32
                                                type: integer
                                              path:
                                                description: |-
                                                  path is the relative path of the file to map the key to.
                                                  May not be an absolute path.
                                                  May not contain the path element '..'.
                                                  May not start with the string '..'.
                                                type: string
                                            required:
                                            - key
                                            - path
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: optional specify whether the
                                            ConfigMap or its keys must be defined
                                          type: boolean
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    downwardAPI:
                                      description: downwardAPI information about the
                                        downwardAPI data to project
                                      properties:
                                        items:
                                          description: Items is a list of DownwardAPIVolume
                                            file
                                          items:
                                            description: DownwardAPIVolumeFile represents
                                              information to create the file containing
                                              the pod field
                                            properties:
                                              fieldRef:
                                                description: 'Required: Selects a
                                                  field of the pod: only annotations,
                                                  labels, name, namespace and uid
                                                  are supported.'
                                                properties:
                                                  apiVersion:
                                                    description: Version of the schema
                                                      the FieldPath is written in
                                                      terms of, defaults to "v1".
                                                    type: string
                                                  fieldPath:
                                                    description: Path of the field
                                                      to select in the specified API
                                                      version.
                                                    type: string
                                                required:
                                                - fieldPath
                                                type: object
                                                x-kubernetes-map-type: atomic
                                              mode:
                                                description: |-
                                                  Optional: mode bits used to set permissions on this file, must be an octal value
                                                  between 0000 and 0777 or a decimal value between 0 and 511.
                                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                  If not specified, the volume defaultMode will be used.
                                                  This might be in conflict with other options that affect the file
                                                  mode, like fsGroup, and the result can be other mode bits set.
                                                format: int32
                                                type: integer
                                              path:
                                                description: 'Required: Path is  the
                                                  relative path name of the file to
                                                  be created. Must not be absolute
                                                  or contain the ''..'' path. Must
                                                  be utf-8 encoded. The first item
                                                  of the relative path must not start
                                                  with ''..'''
                                                type: string
                                              resourceFieldRef:
                                                description: |-
                                                  Selects a resource of the container: only resources limits and requests
                                                  (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                                properties:
                                                  containerName:
                                                    description: 'Container name:
                                                      required for volumes, optional
                                                      for env vars'
                                                    type: string
                                                  divisor:
                                                    anyOf:
                                                    - type: integer
                                                    - type: string
                                                    description: Specifies the output
                                                      format of the exposed resources,
                                                      defaults to "1"
                                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                    x-kubernetes-int-or-string: true
                                                  resource:
                                                    description: 'Required: resource
                                                      to select'
                                                    type: string
                                                required:
                                                - resource
                                                type: object
                                                x-kubernetes-map-type: atomic
                                            required:
                                            - path
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      type: object
                                    secret:
                                      description: secret information about the secret
                                        data to project
                                      properties:
                                        items:
                                          description: |-
                                            items if unspecified, each key-value pair in the Data field of the referenced
                                            Secret will be projected into the volume as a file whose name is the
                                            key and content is the value. If specified, the listed keys will be
                                            projected into the specified paths, and unlisted keys will not be
                                            present. If a key is specified which is not present in the Secret,
                                            the volume setup will error unless it is marked optional. Paths must be
                                            relative and may not contain the '..' path or start with '..'.
                                          items:
                                            description: Maps a string key to a path
                                              within a volume.
                                            properties:
                                              key:
                                                description: key is the key to project.
                                                type: string
                                              mode:
                                                description: |-
                                                  mode is Optional: mode bits used to set permissions on this file.
                                                  Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                                  If not specified, the volume defaultMode will be used.
                                                  This might be in conflict with other options that affect the file
                                                  mode, like fsGroup, and the result can be other mode bits set.
                                                format: int32
                                                type: integer
                                              path:
                                                description: |-
                                                  path is the relative path of the file to map the key to.
                                                  May not be an absolute path.
                                                  May not contain the path element '..'.
                                                  May not start with the string '..'.
                                                type: string
                                            required:
                                            - key
                                            - path
                                            type: object
                                          type: array
                                          x-kubernetes-list-type: atomic
                                        name:
                                          default: ""
                                          description: |-
                                            Name of the referent.
                                            This field is effectively required, but due to backwards compatibility is
                                            allowed to be empty. Instances of this type with an empty value here are
                                            almost certainly wrong.
                                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          type: string
                                        optional:
                                          description: optional field specify whether
                                            the Secret or its key must be defined
                                          type: boolean
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    serviceAccountToken:
                                      description: serviceAccountToken is information
                                        about the serviceAccountToken data to project
                                      properties:
                                        audience:
                                          description: |-
                                            audience is the intended audience of the token. A recipient of a token
                                            must identify itself with an identifier specified in the audience of the
                                            token, and otherwise should reject the token. The audience defaults to the
                                            identifier of the apiserver.
                                          type: string
                                        expirationSeconds:
                                          description: |-
                                            expirationSeconds is the requested duration of validity of the service
                                            account token. As the token approaches expiration, the kubelet volume
                                            plugin will proactively rotate the service account token. The kubelet will
                                            start trying to rotate the token if the token is older than 80 percent of
                                            its time to live or if the token is older than 24 hours.Defaults to 1 hour
                                            and must be at least 10 minutes.
                                          format: int64
                                          type: integer
                                        path:
                                          description: |-
                                            path is the path relative to the mount point of the file to project the
                                            token into.
                                          type: string
                                      required:
                                      - path
                                      type: object
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                            type: object
                          quobyte:
                            description: |-
                              quobyte represents a Quobyte mount on the host that shares a pod's lifetime.
                              Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.
                            properties:
                              group:
                                description: |-
                                  group to map volume access to
                                  Default is no group
                                type: string
                              readOnly:
                                description: |-
                                  readOnly here will force the Quobyte volume to be mounted with read-only permissions.
                                  Defaults to false.
                                type: boolean
                              registry:
                                description: |-
                                  registry represents a single or multiple Quobyte Registry services
                                  specified as a string as host:port pair (multiple entries are separated with commas)
                                  which acts as the central registry for volumes
                                type: string
                              tenant:
                                description: |-
                                  tenant owning the given Quobyte volume in the Backend
                                  Used with dynamically provisioned Quobyte volumes, value is set by the plugin
                                type: string
                              user:
                                description: |-
                                  user to map volume access to
                                  Defaults to serivceaccount user
                                type: string
                              volume:
                                description: volume is a string that references an
                                  already created Quobyte volume by name.
                                type: string
                            required:
                            - registry
                            - volume
                            type: object
                          rbd:
                            description: |-
                              rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
                              Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.
                              More info: https://examples.k8s.io/volumes/rbd/README.md
                            properties:
                              fsType:
                                description: |-
                                  fsType is the filesystem type of the volume that you want to mount.
                                  Tip: Ensure that the filesystem type is supported by the host operating system.
                                  Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                  More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
                                type: string
                              image:
                                description: |-
                                  image is the rados image name.
                                  More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                type: string
                              keyring:
                                default: /etc/ceph/keyring
                                description: |-
                                  keyring is the path to key ring for RBDUser.
                                  Default is /etc/ceph/keyring.
                                  More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                type: string
                              monitors:
                                description: |-
                                  monitors is a collection of Ceph monitors.
                                  More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              pool:
                                default: rbd
                                description: |-
                                  pool is the rados pool name.
                                  Default is rbd.
                                  More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                type: string
                              readOnly:
                                description: |-
                                  readOnly here will force the ReadOnly setting in VolumeMounts.
                                  Defaults to false.
                                  More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                type: boolean
                              secretRef:
                                description: |-
                                  secretRef is name of the authentication secret for RBDUser. If provided
                                  overrides keyring.
                                  Default is nil.
                                  More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                properties:
                                  name:
                                    default: ""
                                    description: |-
                                      Name of the referent.
                                      This field is effectively required, but due to backwards compatibility is
                                      allowed to be empty. Instances of this type with an empty value here are
                                      almost certainly wrong.
                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    type: string
                                type: object
                                x-kubernetes-map-type: atomic
                              user:
                                default: admin
                                description: |-
                                  user is the rados user name.
                                  Default is admin.
                                  More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                                type: string
                            required:
                            - image
                            - monitors
                            type: object
                          scaleIO:
                            description: |-
                              scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
                              Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.
                            properties:
                              fsType:
                                default: xfs
                                description: |-
                                  fsType is the filesystem type to mount.
                                  Must be a filesystem type supported by the host operating system.
                                  Ex. "ext4", "xfs", "ntfs".
                                  Default is "xfs".
                                type: string
                              gateway:
                                description: gateway is the host address of the ScaleIO
                                  API Gateway.
                                type: string
                              protectionDomain:
                                description: protectionDomain is the name of the ScaleIO
                                  Protection Domain for the configured storage.
                                type: string
                              readOnly:
                                description: |-
                                  readOnly Defaults to false (read/write). ReadOnly here will force
                                  the ReadOnly setting in VolumeMounts.
                                type: boolean
                              secretRef:
                                description: |-
                                  secretRef references to the secret for ScaleIO user and other
                                  sensitive information. If this is not provided, Login operation will fail.
                                properties:
                                  name:
                                    default: ""
                                    description: |-
                                      Name of the referent.
                                      This field is effectively required, but due to backwards compatibility is
                                      allowed to be empty. Instances of this type with an empty value here are
                                      almost certainly wrong.
                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    type: string
                                type: object
                                x-kubernetes-map-type: atomic
                              sslEnabled:
                                description: sslEnabled Flag enable/disable SSL communication
                                  with Gateway, default false
                                type: boolean
                              storageMode:
                                default: ThinProvisioned
                                description: |-
                                  storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
                                  Default is ThinProvisioned.
                                type: string
                              storagePool:
                                description: storagePool is the ScaleIO Storage Pool
                                  associated with the protection domain.
                                type: string
                              system:
                                description: system is the name of the storage system
                                  as configured in ScaleIO.
                                type: string
                              volumeName:
                                description: |-
                                  volumeName is the name of a volume already created in the ScaleIO system
                                  that is associated with this volume source.
                                type: string
                            required:
                            - gateway
                            - secretRef
                            - system
                            type: object
                          secret:
                            description: |-
                              secret represents a secret that should populate this volume.
                              More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                            properties:
                              defaultMode:
                                description: |-
                                  defaultMode is Optional: mode bits used to set permissions on created files by default.
                                  Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                  YAML accepts both octal and decimal values, JSON requires decimal values
                                  for mode bits. Defaults to 0644.
                                  Directories within the path are not affected by this setting.
                                  This might be in conflict with other options that affect the file
                                  mode, like fsGroup, and the result can be other mode bits set.
                                format: int32
                                type: integer
                              items:
                                description: |-
                                  items If unspecified, each key-value pair in the Data field of the referenced
                                  Secret will be projected into the volume as a file whose name is the
                                  key and content is the value. If specified, the listed keys will be
                                  projected into the specified paths, and unlisted keys will not be
                                  present. If a key is specified which is not present in the Secret,
                                  the volume setup will error unless it is marked optional. Paths must be
                                  relative and may not contain the '..' path or start with '..'.
                                items:
                                  description: Maps a string key to a path within
                                    a volume.
                                  properties:
                                    key:
                                      description: key is the key to project.
                                      type: string
                                    mode:
                                      description: |-
                                        mode is Optional: mode bits used to set permissions on this file.
                                        Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                        YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                        If not specified, the volume defaultMode will be used.
                                        This might be in conflict with other options that affect the file
                                        mode, like fsGroup, and the result can be other mode bits set.
                                      format: int32
                                      type: integer
                                    path:
                                      description: |-
                                        path is the relative path of the file to map the key to.
                                        May not be an absolute path.
                                        May not contain the path element '..'.
                                        May not start with the string '..'.
                                      type: string
                                  required:
                                  - key
                                  - path
                                  type: object
                                type: array
                                x-kubernetes-list-type: atomic
                              optional:
                                description: optional field specify whether the Secret
                                  or its keys must be defined
                                type: boolean
                              secretName:
                                description: |-
                                  secretName is the name of the secret in the pod's namespace to use.
                                  More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                                type: string
                            type: object
                          storageos:
                            description: |-
                              storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
                              Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported.
                            properties:
                              fsType:
                                description: |-
                                  fsType is the filesystem type to mount.
                                  Must be a filesystem type supported by the host operating system.
                                  Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                type: string
                              readOnly:
                                description: |-
                                  readOnly defaults to false (read/write). ReadOnly here will force
                                  the ReadOnly setting in VolumeMounts.
                                type: boolean
                              secretRef:
                                description: |-
                                  secretRef specifies the secret to use for obtaining the StorageOS API
                                  credentials.  If not specified, default values will be attempted.
                                properties:
                                  name:
                                    default: ""
                                    description: |-
                                      Name of the referent.
                                      This field is effectively required, but due to backwards compatibility is
                                      allowed to be empty. Instances of this type with an empty value here are
                                      almost certainly wrong.
                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    type: string
                                type: object
                                x-kubernetes-map-type: atomic
                              volumeName:
                                description: |-
                                  volumeName is the human-readable name of the StorageOS volume.  Volume
                                  names are only unique within a namespace.
                                type: string
                              volumeNamespace:
                                description: |-
                                  volumeNamespace specifies the scope of the volume within StorageOS.  If no
                                  namespace is specified then the Pod's namespace will be used.  This allows the
                                  Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
                                  Set VolumeName to any name to override the default behaviour.
                                  Set to "default" if you are not using namespaces within StorageOS.
                                  Namespaces that do not pre-exist within StorageOS will be created.
                                type: string
                            type: object
                          vsphereVolume:
                            description: |-
                              vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine.
                              Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type
                              are redirected to the csi.vsphere.vmware.com CSI driver.
                            properties:
                              fsType:
                                description: |-
                                  fsType is filesystem type to mount.
                                  Must be a filesystem type supported by the host operating system.
                                  Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                                type: string
                              storagePolicyID:
                                description: storagePolicyID is the storage Policy
                                  Based Management (SPBM) profile ID associated with
                                  the StoragePolicyName.
                                type: string
                              storagePolicyName:
                                description: storagePolicyName is the storage Policy
                                  Based Management (SPBM) profile name.
                                type: string
                              volumePath:
                                description: volumePath is the path that identifies
                                  vSphere volume vmdk
                                type: string
                            required:
                            - volumePath
                            type: object
                        required:
                        - name
                        type: object
                      type: array
                  type: object
                maxItems: 200
                type: array
                x-kubernetes-validations:
                - message: template must have at most one template type
                  rule: 'self.all(t, (has(t.container) ? 1 : 0) + (has(t.script) ?
                    1 : 0) + (has(t.dag) ? 1 : 0) + (has(t.steps) ? 1 : 0) + (has(t.resource)
                    ? 1 : 0) + (has(t.suspend) ? 1 : 0) + (has(t.containerSet) ? 1
                    : 0) + (has(t.data) ? 1 : 0) + (has(t.http) ? 1 : 0) + (has(t.plugin)
                    ? 1 : 0) <= 1)'
                - message: timeout cannot be applied to steps or dag templates
                  rule: self.all(t, !(has(t.timeout) && t.timeout != "" && (has(t.steps)
                    || has(t.dag))))
                - message: activeDeadlineSeconds is only valid for leaf templates
                  rule: self.all(t, !(has(t.activeDeadlineSeconds) && (has(t.steps)
                    || has(t.dag))))
              tolerations:
                description: Tolerations to apply to workflow pods.
                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
              ttlStrategy:
                description: |-
                  TTLStrategy limits the lifetime of a Workflow that has finished execution depending on if it
                  Succeeded or Failed. If this struct is set, once the Workflow finishes, it will be
                  deleted after the time to live expires. If this field is unset,
                  the controller config map will hold the default values.
                properties:
                  secondsAfterCompletion:
                    description: SecondsAfterCompletion is the number of seconds to
                      live after completion
                    format: int32
                    type: integer
                  secondsAfterFailure:
                    description: SecondsAfterFailure is the number of seconds to live
                      after failure
                    format: int32
                    type: integer
                  secondsAfterSuccess:
                    description: SecondsAfterSuccess is the number of seconds to live
                      after success
                    format: int32
                    type: integer
                type: object
              volumeClaimGC:
                description: VolumeClaimGC describes the strategy to use when deleting
                  volumes from completed workflows
                properties:
                  strategy:
                    description: Strategy is the strategy to use. One of "OnWorkflowCompletion",
                      "OnWorkflowSuccess". Defaults to "OnWorkflowSuccess"
                    type: string
                type: object
              volumeClaimTemplates:
                description: |-
                  VolumeClaimTemplates is a list of claims that containers are allowed to reference.
                  The Workflow controller will create the claims at the beginning of the workflow
                  and delete the claims upon completion of the workflow
                items:
                  description: PersistentVolumeClaim is a user's request for and claim
                    to a persistent volume
                  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:
                      description: |-
                        Standard object's metadata.
                        More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          type: object
                        finalizers:
                          items:
                            type: string
                          type: array
                        generateName:
                          type: string
                        labels:
                          additionalProperties:
                            type: string
                          type: object
                        name:
                          type: string
                        namespace:
                          type: string
                      type: object
                    spec:
                      description: |-
                        spec defines the desired characteristics of a volume requested by a pod author.
                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                      properties:
                        accessModes:
                          description: |-
                            accessModes contains the desired access modes the volume should have.
                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        dataSource:
                          description: |-
                            dataSource field can be used to specify either:
                            * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
                            * An existing PVC (PersistentVolumeClaim)
                            If the provisioner or an external controller can support the specified data source,
                            it will create a new volume based on the contents of the specified data source.
                            When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,
                            and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.
                            If the namespace is specified, then dataSourceRef will not be copied to dataSource.
                          properties:
                            apiGroup:
                              description: |-
                                APIGroup is the group for the resource being referenced.
                                If APIGroup is not specified, the specified Kind must be in the core API group.
                                For any other third-party types, APIGroup is required.
                              type: string
                            kind:
                              description: Kind is the type of resource being referenced
                              type: string
                            name:
                              description: Name is the name of resource being referenced
                              type: string
                          required:
                          - kind
                          - name
                          type: object
                          x-kubernetes-map-type: atomic
                        dataSourceRef:
                          description: |-
                            dataSourceRef specifies the object from which to populate the volume with data, if a non-empty
                            volume is desired. This may be any object from a non-empty API group (non
                            core object) or a PersistentVolumeClaim object.
                            When this field is specified, volume binding will only succeed if the type of
                            the specified object matches some installed volume populator or dynamic
                            provisioner.
                            This field will replace the functionality of the dataSource field and as such
                            if both fields are non-empty, they must have the same value. For backwards
                            compatibility, when namespace isn't specified in dataSourceRef,
                            both fields (dataSource and dataSourceRef) will be set to the same
                            value automatically if one of them is empty and the other is non-empty.
                            When namespace is specified in dataSourceRef,
                            dataSource isn't set to the same value and must be empty.
                            There are three important differences between dataSource and dataSourceRef:
                            * While dataSource only allows two specific types of objects, dataSourceRef
                              allows any non-core object, as well as PersistentVolumeClaim objects.
                            * While dataSource ignores disallowed values (dropping them), dataSourceRef
                              preserves all values, and generates an error if a disallowed value is
                              specified.
                            * While dataSource only allows local objects, dataSourceRef allows objects
                              in any namespaces.
                            (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.
                            (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                          properties:
                            apiGroup:
                              description: |-
                                APIGroup is the group for the resource being referenced.
                                If APIGroup is not specified, the specified Kind must be in the core API group.
                                For any other third-party types, APIGroup is required.
                              type: string
                            kind:
                              description: Kind is the type of resource being referenced
                              type: string
                            name:
                              description: Name is the name of resource being referenced
                              type: string
                            namespace:
                              description: |-
                                Namespace is the namespace of resource being referenced
                                Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.
                                (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                              type: string
                          required:
                          - kind
                          - name
                          type: object
                        resources:
                          description: |-
                            resources represents the minimum resources the volume should have.
                            If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements
                            that are lower than previous value but must still be higher than capacity recorded in the
                            status field of the claim.
                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
                          properties:
                            limits:
                              additionalProperties:
                                anyOf:
                                - type: integer
                                - type: string
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                              description: |-
                                Limits describes the maximum amount of compute resources allowed.
                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                              type: object
                            requests:
                              additionalProperties:
                                anyOf:
                                - type: integer
                                - type: string
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                              description: |-
                                Requests describes the minimum amount of compute resources required.
                                If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
                                otherwise to an implementation-defined value. Requests cannot exceed Limits.
                                More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
                              type: object
                          type: object
                        selector:
                          description: selector is a label query over volumes to consider
                            for binding.
                          properties:
                            matchExpressions:
                              description: matchExpressions is a list of label selector
                                requirements. The requirements are ANDed.
                              items:
                                description: |-
                                  A label selector requirement is a selector that contains values, a key, and an operator that
                                  relates the key and values.
                                properties:
                                  key:
                                    description: key is the label key that the selector
                                      applies to.
                                    type: string
                                  operator:
                                    description: |-
                                      operator represents a key's relationship to a set of values.
                                      Valid operators are In, NotIn, Exists and DoesNotExist.
                                    type: string
                                  values:
                                    description: |-
                                      values is an array of string values. If the operator is In or NotIn,
                                      the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                      the values array must be empty. This array is replaced during a strategic
                                      merge patch.
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                required:
                                - key
                                - operator
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            matchLabels:
                              additionalProperties:
                                type: string
                              description: |-
                                matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                map is equivalent to an element of matchExpressions, whose key field is "key", the
                                operator is "In", and the values array contains only "value". The requirements are ANDed.
                              type: object
                          type: object
                          x-kubernetes-map-type: atomic
                        storageClassName:
                          description: |-
                            storageClassName is the name of the StorageClass required by the claim.
                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1
                          type: string
                        volumeAttributesClassName:
                          description: |-
                            volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.
                            If specified, the CSI driver will create or update the volume with the attributes defined
                            in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,
                            it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass
                            will be applied to the claim but it's not allowed to reset this field to empty string once it is set.
                            If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass
                            will be set by the persistentvolume controller if it exists.
                            If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be
                            set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource
                            exists.
                            More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/
                            (Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default).
                          type: string
                        volumeMode:
                          description: |-
                            volumeMode defines what type of volume is required by the claim.
                            Value of Filesystem is implied when not included in claim spec.
                          type: string
                        volumeName:
                          description: volumeName is the binding reference to the
                            PersistentVolume backing this claim.
                          type: string
                      type: object
                    status:
                      description: |-
                        status represents the current information/status of a persistent volume claim.
                        Read-only.
                        More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                      properties:
                        accessModes:
                          description: |-
                            accessModes contains the actual access modes the volume backing the PVC has.
                            More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        allocatedResourceStatuses:
                          additionalProperties:
                            description: |-
                              When a controller receives persistentvolume claim update with ClaimResourceStatus for a resource
                              that it does not recognizes, then it should ignore that update and let other controllers
                              handle it.
                            type: string
                          description: "allocatedResourceStatuses stores status of
                            resource being resized for the given PVC.\nKey names follow
                            standard Kubernetes label syntax. Valid values are either:\n\t*
                            Un-prefixed keys:\n\t\t- storage - the capacity of the
                            volume.\n\t* Custom resources must use implementation-defined
                            prefixed names such as \"example.com/my-custom-resource\"\nApart
                            from above values - keys that are unprefixed or have kubernetes.io
                            prefix are considered\nreserved and hence may not be used.\n\nClaimResourceStatus
                            can be in any of following states:\n\t- ControllerResizeInProgress:\n\t\tState
                            set when resize controller starts resizing the volume
                            in control-plane.\n\t- ControllerResizeFailed:\n\t\tState
                            set when resize has failed in resize controller with a
                            terminal error.\n\t- NodeResizePending:\n\t\tState set
                            when resize controller has finished resizing the volume
                            but further resizing of\n\t\tvolume is needed on the node.\n\t-
                            NodeResizeInProgress:\n\t\tState set when kubelet starts
                            resizing the volume.\n\t- NodeResizeFailed:\n\t\tState
                            set when resizing has failed in kubelet with a terminal
                            error. Transient errors don't set\n\t\tNodeResizeFailed.\nFor
                            example: if expanding a PVC for more capacity - this field
                            can be one of the following states:\n\t- pvc.status.allocatedResourceStatus['storage']
                            = \"ControllerResizeInProgress\"\n     - pvc.status.allocatedResourceStatus['storage']
                            = \"ControllerResizeFailed\"\n     - pvc.status.allocatedResourceStatus['storage']
                            = \"NodeResizePending\"\n     - pvc.status.allocatedResourceStatus['storage']
                            = \"NodeResizeInProgress\"\n     - pvc.status.allocatedResourceStatus['storage']
                            = \"NodeResizeFailed\"\nWhen this field is not set, it
                            means that no resize operation is in progress for the
                            given PVC.\n\nA controller that receives PVC update with
                            previously unknown resourceName or ClaimResourceStatus\nshould
                            ignore the update for the purpose it was designed. For
                            example - a controller that\nonly is responsible for resizing
                            capacity of the volume, should ignore PVC updates that
                            change other valid\nresources associated with PVC.\n\nThis
                            is an alpha field and requires enabling RecoverVolumeExpansionFailure
                            feature."
                          type: object
                          x-kubernetes-map-type: granular
                        allocatedResources:
                          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: "allocatedResources tracks the resources allocated
                            to a PVC including its capacity.\nKey names follow standard
                            Kubernetes label syntax. Valid values are either:\n\t*
                            Un-prefixed keys:\n\t\t- storage - the capacity of the
                            volume.\n\t* Custom resources must use implementation-defined
                            prefixed names such as \"example.com/my-custom-resource\"\nApart
                            from above values - keys that are unprefixed or have kubernetes.io
                            prefix are considered\nreserved and hence may not be used.\n\nCapacity
                            reported here may be larger than the actual capacity when
                            a volume expansion operation\nis requested.\nFor storage
                            quota, the larger value from allocatedResources and PVC.spec.resources
                            is used.\nIf allocatedResources is not set, PVC.spec.resources
                            alone is used for quota calculation.\nIf a volume expansion
                            capacity request is lowered, allocatedResources is only\nlowered
                            if there are no expansion operations in progress and if
                            the actual volume capacity\nis equal or lower than the
                            requested capacity.\n\nA controller that receives PVC
                            update with previously unknown resourceName\nshould ignore
                            the update for the purpose it was designed. For example
                            - a controller that\nonly is responsible for resizing
                            capacity of the volume, should ignore PVC updates that
                            change other valid\nresources associated with PVC.\n\nThis
                            is an alpha field and requires enabling RecoverVolumeExpansionFailure
                            feature."
                          type: object
                        capacity:
                          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: capacity represents the actual resources of
                            the underlying volume.
                          type: object
                        conditions:
                          description: |-
                            conditions is the current Condition of persistent volume claim. If underlying persistent volume is being
                            resized then the Condition will be set to 'Resizing'.
                          items:
                            description: PersistentVolumeClaimCondition contains details
                              about state of pvc
                            properties:
                              lastProbeTime:
                                description: lastProbeTime is the time we probed the
                                  condition.
                                format: date-time
                                type: string
                              lastTransitionTime:
                                description: lastTransitionTime is the time the condition
                                  transitioned from one status to another.
                                format: date-time
                                type: string
                              message:
                                description: message is the human-readable message
                                  indicating details about last transition.
                                type: string
                              reason:
                                description: |-
                                  reason is a unique, this should be a short, machine understandable string that gives the reason
                                  for condition's last transition. If it reports "Resizing" that means the underlying
                                  persistent volume is being resized.
                                type: string
                              status:
                                description: |-
                                  Status is the status of the condition.
                                  Can be True, False, Unknown.
                                  More info: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#:~:text=state%20of%20pvc-,conditions.status,-(string)%2C%20required
                                type: string
                              type:
                                description: |-
                                  Type is the type of the condition.
                                  More info: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/persistent-volume-claim-v1/#:~:text=set%20to%20%27ResizeStarted%27.-,PersistentVolumeClaimCondition,-contains%20details%20about
                                type: string
                            required:
                            - status
                            - type
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                          - type
                          x-kubernetes-list-type: map
                        currentVolumeAttributesClassName:
                          description: |-
                            currentVolumeAttributesClassName is the current name of the VolumeAttributesClass the PVC is using.
                            When unset, there is no VolumeAttributeClass applied to this PersistentVolumeClaim
                            This is a beta field and requires enabling VolumeAttributesClass feature (off by default).
                          type: string
                        modifyVolumeStatus:
                          description: |-
                            ModifyVolumeStatus represents the status object of ControllerModifyVolume operation.
                            When this is unset, there is no ModifyVolume operation being attempted.
                            This is a beta field and requires enabling VolumeAttributesClass feature (off by default).
                          properties:
                            status:
                              description: "status is the status of the ControllerModifyVolume
                                operation. It can be in any of following states:\n
                                - Pending\n   Pending indicates that the PersistentVolumeClaim
                                cannot be modified due to unmet requirements, such
                                as\n   the specified VolumeAttributesClass not existing.\n
                                - InProgress\n   InProgress indicates that the volume
                                is being modified.\n - Infeasible\n  Infeasible indicates
                                that the request has been rejected as invalid by the
                                CSI driver. To\n\t  resolve the error, a valid VolumeAttributesClass
                                needs to be specified.\nNote: New statuses can be
                                added in the future. Consumers should check for unknown
                                statuses and fail appropriately."
                              type: string
                            targetVolumeAttributesClassName:
                              description: targetVolumeAttributesClassName is the
                                name of the VolumeAttributesClass the PVC currently
                                being reconciled
                              type: string
                          required:
                          - status
                          type: object
                        phase:
                          description: phase represents the current phase of PersistentVolumeClaim.
                          type: string
                      type: object
                  type: object
                type: array
              volumes:
                description: Volumes is a list of volumes that can be mounted by containers
                  in a workflow.
                items:
                  description: Volume represents a named volume in a pod that may
                    be accessed by any container in the pod.
                  properties:
                    awsElasticBlockStore:
                      description: |-
                        awsElasticBlockStore represents an AWS Disk resource that is attached to a
                        kubelet's host machine and then exposed to the pod.
                        Deprecated: AWSElasticBlockStore is deprecated. All operations for the in-tree
                        awsElasticBlockStore type are redirected to the ebs.csi.aws.com CSI driver.
                        More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                      properties:
                        fsType:
                          description: |-
                            fsType is the filesystem type of the volume that you want to mount.
                            Tip: Ensure that the filesystem type is supported by the host operating system.
                            Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                            More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                          type: string
                        partition:
                          description: |-
                            partition is the partition in the volume that you want to mount.
                            If omitted, the default is to mount by volume name.
                            Examples: For volume /dev/sda1, you specify the partition as "1".
                            Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).
                          format: int32
                          type: integer
                        readOnly:
                          description: |-
                            readOnly value true will force the readOnly setting in VolumeMounts.
                            More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                          type: boolean
                        volumeID:
                          description: |-
                            volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).
                            More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
                          type: string
                      required:
                      - volumeID
                      type: object
                    azureDisk:
                      description: |-
                        azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod.
                        Deprecated: AzureDisk is deprecated. All operations for the in-tree azureDisk type
                        are redirected to the disk.csi.azure.com CSI driver.
                      properties:
                        cachingMode:
                          description: 'cachingMode is the Host Caching mode: None,
                            Read Only, Read Write.'
                          type: string
                        diskName:
                          description: diskName is the Name of the data disk in the
                            blob storage
                          type: string
                        diskURI:
                          description: diskURI is the URI of data disk in the blob
                            storage
                          type: string
                        fsType:
                          default: ext4
                          description: |-
                            fsType is Filesystem type to mount.
                            Must be a filesystem type supported by the host operating system.
                            Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                          type: string
                        kind:
                          description: 'kind expected values are Shared: multiple
                            blob disks per storage account  Dedicated: single blob
                            disk per storage account  Managed: azure managed data
                            disk (only in managed availability set). defaults to shared'
                          type: string
                        readOnly:
                          default: false
                          description: |-
                            readOnly Defaults to false (read/write). ReadOnly here will force
                            the ReadOnly setting in VolumeMounts.
                          type: boolean
                      required:
                      - diskName
                      - diskURI
                      type: object
                    azureFile:
                      description: |-
                        azureFile represents an Azure File Service mount on the host and bind mount to the pod.
                        Deprecated: AzureFile is deprecated. All operations for the in-tree azureFile type
                        are redirected to the file.csi.azure.com CSI driver.
                      properties:
                        readOnly:
                          description: |-
                            readOnly defaults to false (read/write). ReadOnly here will force
                            the ReadOnly setting in VolumeMounts.
                          type: boolean
                        secretName:
                          description: secretName is the  name of secret that contains
                            Azure Storage Account Name and Key
                          type: string
                        shareName:
                          description: shareName is the azure share Name
                          type: string
                      required:
                      - secretName
                      - shareName
                      type: object
                    cephfs:
                      description: |-
                        cephFS represents a Ceph FS mount on the host that shares a pod's lifetime.
                        Deprecated: CephFS is deprecated and the in-tree cephfs type is no longer supported.
                      properties:
                        monitors:
                          description: |-
                            monitors is Required: Monitors is a collection of Ceph monitors
                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        path:
                          description: 'path is Optional: Used as the mounted root,
                            rather than the full Ceph tree, default is /'
                          type: string
                        readOnly:
                          description: |-
                            readOnly is Optional: Defaults to false (read/write). ReadOnly here will force
                            the ReadOnly setting in VolumeMounts.
                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                          type: boolean
                        secretFile:
                          description: |-
                            secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret
                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                          type: string
                        secretRef:
                          description: |-
                            secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.
                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                          properties:
                            name:
                              default: ""
                              description: |-
                                Name of the referent.
                                This field is effectively required, but due to backwards compatibility is
                                allowed to be empty. Instances of this type with an empty value here are
                                almost certainly wrong.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                        user:
                          description: |-
                            user is optional: User is the rados user name, default is admin
                            More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it
                          type: string
                      required:
                      - monitors
                      type: object
                    cinder:
                      description: |-
                        cinder represents a cinder volume attached and mounted on kubelets host machine.
                        Deprecated: Cinder is deprecated. All operations for the in-tree cinder type
                        are redirected to the cinder.csi.openstack.org CSI driver.
                        More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                      properties:
                        fsType:
                          description: |-
                            fsType is the filesystem type to mount.
                            Must be a filesystem type supported by the host operating system.
                            Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                          type: string
                        readOnly:
                          description: |-
                            readOnly defaults to false (read/write). ReadOnly here will force
                            the ReadOnly setting in VolumeMounts.
                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                          type: boolean
                        secretRef:
                          description: |-
                            secretRef is optional: points to a secret object containing parameters used to connect
                            to OpenStack.
                          properties:
                            name:
                              default: ""
                              description: |-
                                Name of the referent.
                                This field is effectively required, but due to backwards compatibility is
                                allowed to be empty. Instances of this type with an empty value here are
                                almost certainly wrong.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                        volumeID:
                          description: |-
                            volumeID used to identify the volume in cinder.
                            More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                          type: string
                      required:
                      - volumeID
                      type: object
                    configMap:
                      description: configMap represents a configMap that should populate
                        this volume
                      properties:
                        defaultMode:
                          description: |-
                            defaultMode is optional: mode bits used to set permissions on created files by default.
                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                            Defaults to 0644.
                            Directories within the path are not affected by this setting.
                            This might be in conflict with other options that affect the file
                            mode, like fsGroup, and the result can be other mode bits set.
                          format: int32
                          type: integer
                        items:
                          description: |-
                            items if unspecified, each key-value pair in the Data field of the referenced
                            ConfigMap will be projected into the volume as a file whose name is the
                            key and content is the value. If specified, the listed keys will be
                            projected into the specified paths, and unlisted keys will not be
                            present. If a key is specified which is not present in the ConfigMap,
                            the volume setup will error unless it is marked optional. Paths must be
                            relative and may not contain the '..' path or start with '..'.
                          items:
                            description: Maps a string key to a path within a volume.
                            properties:
                              key:
                                description: key is the key to project.
                                type: string
                              mode:
                                description: |-
                                  mode is Optional: mode bits used to set permissions on this file.
                                  Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                  If not specified, the volume defaultMode will be used.
                                  This might be in conflict with other options that affect the file
                                  mode, like fsGroup, and the result can be other mode bits set.
                                format: int32
                                type: integer
                              path:
                                description: |-
                                  path is the relative path of the file to map the key to.
                                  May not be an absolute path.
                                  May not contain the path element '..'.
                                  May not start with the string '..'.
                                type: string
                            required:
                            - key
                            - path
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        name:
                          default: ""
                          description: |-
                            Name of the referent.
                            This field is effectively required, but due to backwards compatibility is
                            allowed to be empty. Instances of this type with an empty value here are
                            almost certainly wrong.
                            More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                          type: string
                        optional:
                          description: optional specify whether the ConfigMap or its
                            keys must be defined
                          type: boolean
                      type: object
                      x-kubernetes-map-type: atomic
                    csi:
                      description: csi (Container Storage Interface) represents ephemeral
                        storage that is handled by certain external CSI drivers.
                      properties:
                        driver:
                          description: |-
                            driver is the name of the CSI driver that handles this volume.
                            Consult with your admin for the correct name as registered in the cluster.
                          type: string
                        fsType:
                          description: |-
                            fsType to mount. Ex. "ext4", "xfs", "ntfs".
                            If not provided, the empty value is passed to the associated CSI driver
                            which will determine the default filesystem to apply.
                          type: string
                        nodePublishSecretRef:
                          description: |-
                            nodePublishSecretRef is a reference to the secret object containing
                            sensitive information to pass to the CSI driver to complete the CSI
                            NodePublishVolume and NodeUnpublishVolume calls.
                            This field is optional, and  may be empty if no secret is required. If the
                            secret object contains more than one secret, all secret references are passed.
                          properties:
                            name:
                              default: ""
                              description: |-
                                Name of the referent.
                                This field is effectively required, but due to backwards compatibility is
                                allowed to be empty. Instances of this type with an empty value here are
                                almost certainly wrong.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                        readOnly:
                          description: |-
                            readOnly specifies a read-only configuration for the volume.
                            Defaults to false (read/write).
                          type: boolean
                        volumeAttributes:
                          additionalProperties:
                            type: string
                          description: |-
                            volumeAttributes stores driver-specific properties that are passed to the CSI
                            driver. Consult your driver's documentation for supported values.
                          type: object
                      required:
                      - driver
                      type: object
                    downwardAPI:
                      description: downwardAPI represents downward API about the pod
                        that should populate this volume
                      properties:
                        defaultMode:
                          description: |-
                            Optional: mode bits to use on created files by default. Must be a
                            Optional: mode bits used to set permissions on created files by default.
                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                            Defaults to 0644.
                            Directories within the path are not affected by this setting.
                            This might be in conflict with other options that affect the file
                            mode, like fsGroup, and the result can be other mode bits set.
                          format: int32
                          type: integer
                        items:
                          description: Items is a list of downward API volume file
                          items:
                            description: DownwardAPIVolumeFile represents information
                              to create the file containing the pod field
                            properties:
                              fieldRef:
                                description: 'Required: Selects a field of the pod:
                                  only annotations, labels, name, namespace and uid
                                  are supported.'
                                properties:
                                  apiVersion:
                                    description: Version of the schema the FieldPath
                                      is written in terms of, defaults to "v1".
                                    type: string
                                  fieldPath:
                                    description: Path of the field to select in the
                                      specified API version.
                                    type: string
                                required:
                                - fieldPath
                                type: object
                                x-kubernetes-map-type: atomic
                              mode:
                                description: |-
                                  Optional: mode bits used to set permissions on this file, must be an octal value
                                  between 0000 and 0777 or a decimal value between 0 and 511.
                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                  If not specified, the volume defaultMode will be used.
                                  This might be in conflict with other options that affect the file
                                  mode, like fsGroup, and the result can be other mode bits set.
                                format: int32
                                type: integer
                              path:
                                description: 'Required: Path is  the relative path
                                  name of the file to be created. Must not be absolute
                                  or contain the ''..'' path. Must be utf-8 encoded.
                                  The first item of the relative path must not start
                                  with ''..'''
                                type: string
                              resourceFieldRef:
                                description: |-
                                  Selects a resource of the container: only resources limits and requests
                                  (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                properties:
                                  containerName:
                                    description: 'Container name: required for volumes,
                                      optional for env vars'
                                    type: string
                                  divisor:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    description: Specifies the output format of the
                                      exposed resources, defaults to "1"
                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                    x-kubernetes-int-or-string: true
                                  resource:
                                    description: 'Required: resource to select'
                                    type: string
                                required:
                                - resource
                                type: object
                                x-kubernetes-map-type: atomic
                            required:
                            - path
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                      type: object
                    emptyDir:
                      description: |-
                        emptyDir represents a temporary directory that shares a pod's lifetime.
                        More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                      properties:
                        medium:
                          description: |-
                            medium represents what type of storage medium should back this directory.
                            The default is "" which means to use the node's default medium.
                            Must be an empty string (default) or Memory.
                            More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                          type: string
                        sizeLimit:
                          anyOf:
                          - type: integer
                          - type: string
                          description: |-
                            sizeLimit is the total amount of local storage required for this EmptyDir volume.
                            The size limit is also applicable for memory medium.
                            The maximum usage on memory medium EmptyDir would be the minimum value between
                            the SizeLimit specified here and the sum of memory limits of all containers in a pod.
                            The default is nil which means that the limit is undefined.
                            More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                          x-kubernetes-int-or-string: true
                      type: object
                    ephemeral:
                      description: |-
                        ephemeral represents a volume that is handled by a cluster storage driver.
                        The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,
                        and deleted when the pod is removed.

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

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

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

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

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

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

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

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

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

                                  Alpha, gated by the ClusterTrustBundleProjection feature gate.

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

                                  Kubelet performs aggressive normalization of the PEM contents written
                                  into the pod filesystem.  Esoteric PEM features such as inter-block
                                  comments and block headers are stripped.  Certificates are deduplicated.
                                  The ordering of certificates within the file is arbitrary, and Kubelet
                                  may change the order over time.
                                properties:
                                  labelSelector:
                                    description: |-
                                      Select all ClusterTrustBundles that match this label selector.  Only has
                                      effect if signerName is set.  Mutually-exclusive with name.  If unset,
                                      interpreted as "match nothing".  If set but empty, interpreted as "match
                                      everything".
                                    properties:
                                      matchExpressions:
                                        description: matchExpressions is a list of
                                          label selector requirements. The requirements
                                          are ANDed.
                                        items:
                                          description: |-
                                            A label selector requirement is a selector that contains values, a key, and an operator that
                                            relates the key and values.
                                          properties:
                                            key:
                                              description: key is the label key that
                                                the selector applies to.
                                              type: string
                                            operator:
                                              description: |-
                                                operator represents a key's relationship to a set of values.
                                                Valid operators are In, NotIn, Exists and DoesNotExist.
                                              type: string
                                            values:
                                              description: |-
                                                values is an array of string values. If the operator is In or NotIn,
                                                the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                                the values array must be empty. This array is replaced during a strategic
                                                merge patch.
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        description: |-
                                          matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                                          map is equivalent to an element of matchExpressions, whose key field is "key", the
                                          operator is "In", and the values array contains only "value". The requirements are ANDed.
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  name:
                                    description: |-
                                      Select a single ClusterTrustBundle by object name.  Mutually-exclusive
                                      with signerName and labelSelector.
                                    type: string
                                  optional:
                                    description: |-
                                      If true, don't block pod startup if the referenced ClusterTrustBundle(s)
                                      aren't available.  If using name, then the named ClusterTrustBundle is
                                      allowed not to exist.  If using signerName, then the combination of
                                      signerName and labelSelector is allowed to match zero
                                      ClusterTrustBundles.
                                    type: boolean
                                  path:
                                    description: Relative path from the volume root
                                      to write the bundle.
                                    type: string
                                  signerName:
                                    description: |-
                                      Select all ClusterTrustBundles that match this signer name.
                                      Mutually-exclusive with name.  The contents of all selected
                                      ClusterTrustBundles will be unified and deduplicated.
                                    type: string
                                required:
                                - path
                                type: object
                              configMap:
                                description: configMap information about the configMap
                                  data to project
                                properties:
                                  items:
                                    description: |-
                                      items if unspecified, each key-value pair in the Data field of the referenced
                                      ConfigMap will be projected into the volume as a file whose name is the
                                      key and content is the value. If specified, the listed keys will be
                                      projected into the specified paths, and unlisted keys will not be
                                      present. If a key is specified which is not present in the ConfigMap,
                                      the volume setup will error unless it is marked optional. Paths must be
                                      relative and may not contain the '..' path or start with '..'.
                                    items:
                                      description: Maps a string key to a path within
                                        a volume.
                                      properties:
                                        key:
                                          description: key is the key to project.
                                          type: string
                                        mode:
                                          description: |-
                                            mode is Optional: mode bits used to set permissions on this file.
                                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                            If not specified, the volume defaultMode will be used.
                                            This might be in conflict with other options that affect the file
                                            mode, like fsGroup, and the result can be other mode bits set.
                                          format: int32
                                          type: integer
                                        path:
                                          description: |-
                                            path is the relative path of the file to map the key to.
                                            May not be an absolute path.
                                            May not contain the path element '..'.
                                            May not start with the string '..'.
                                          type: string
                                      required:
                                      - key
                                      - path
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  name:
                                    default: ""
                                    description: |-
                                      Name of the referent.
                                      This field is effectively required, but due to backwards compatibility is
                                      allowed to be empty. Instances of this type with an empty value here are
                                      almost certainly wrong.
                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    type: string
                                  optional:
                                    description: optional specify whether the ConfigMap
                                      or its keys must be defined
                                    type: boolean
                                type: object
                                x-kubernetes-map-type: atomic
                              downwardAPI:
                                description: downwardAPI information about the downwardAPI
                                  data to project
                                properties:
                                  items:
                                    description: Items is a list of DownwardAPIVolume
                                      file
                                    items:
                                      description: DownwardAPIVolumeFile represents
                                        information to create the file containing
                                        the pod field
                                      properties:
                                        fieldRef:
                                          description: 'Required: Selects a field
                                            of the pod: only annotations, labels,
                                            name, namespace and uid are supported.'
                                          properties:
                                            apiVersion:
                                              description: Version of the schema the
                                                FieldPath is written in terms of,
                                                defaults to "v1".
                                              type: string
                                            fieldPath:
                                              description: Path of the field to select
                                                in the specified API version.
                                              type: string
                                          required:
                                          - fieldPath
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        mode:
                                          description: |-
                                            Optional: mode bits used to set permissions on this file, must be an octal value
                                            between 0000 and 0777 or a decimal value between 0 and 511.
                                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                            If not specified, the volume defaultMode will be used.
                                            This might be in conflict with other options that affect the file
                                            mode, like fsGroup, and the result can be other mode bits set.
                                          format: int32
                                          type: integer
                                        path:
                                          description: 'Required: Path is  the relative
                                            path name of the file to be created. Must
                                            not be absolute or contain the ''..''
                                            path. Must be utf-8 encoded. The first
                                            item of the relative path must not start
                                            with ''..'''
                                          type: string
                                        resourceFieldRef:
                                          description: |-
                                            Selects a resource of the container: only resources limits and requests
                                            (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.
                                          properties:
                                            containerName:
                                              description: 'Container name: required
                                                for volumes, optional for env vars'
                                              type: string
                                            divisor:
                                              anyOf:
                                              - type: integer
                                              - type: string
                                              description: Specifies the output format
                                                of the exposed resources, defaults
                                                to "1"
                                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                              x-kubernetes-int-or-string: true
                                            resource:
                                              description: 'Required: resource to
                                                select'
                                              type: string
                                          required:
                                          - resource
                                          type: object
                                          x-kubernetes-map-type: atomic
                                      required:
                                      - path
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              secret:
                                description: secret information about the secret data
                                  to project
                                properties:
                                  items:
                                    description: |-
                                      items if unspecified, each key-value pair in the Data field of the referenced
                                      Secret will be projected into the volume as a file whose name is the
                                      key and content is the value. If specified, the listed keys will be
                                      projected into the specified paths, and unlisted keys will not be
                                      present. If a key is specified which is not present in the Secret,
                                      the volume setup will error unless it is marked optional. Paths must be
                                      relative and may not contain the '..' path or start with '..'.
                                    items:
                                      description: Maps a string key to a path within
                                        a volume.
                                      properties:
                                        key:
                                          description: key is the key to project.
                                          type: string
                                        mode:
                                          description: |-
                                            mode is Optional: mode bits used to set permissions on this file.
                                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                            YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                            If not specified, the volume defaultMode will be used.
                                            This might be in conflict with other options that affect the file
                                            mode, like fsGroup, and the result can be other mode bits set.
                                          format: int32
                                          type: integer
                                        path:
                                          description: |-
                                            path is the relative path of the file to map the key to.
                                            May not be an absolute path.
                                            May not contain the path element '..'.
                                            May not start with the string '..'.
                                          type: string
                                      required:
                                      - key
                                      - path
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  name:
                                    default: ""
                                    description: |-
                                      Name of the referent.
                                      This field is effectively required, but due to backwards compatibility is
                                      allowed to be empty. Instances of this type with an empty value here are
                                      almost certainly wrong.
                                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                    type: string
                                  optional:
                                    description: optional field specify whether the
                                      Secret or its key must be defined
                                    type: boolean
                                type: object
                                x-kubernetes-map-type: atomic
                              serviceAccountToken:
                                description: serviceAccountToken is information about
                                  the serviceAccountToken data to project
                                properties:
                                  audience:
                                    description: |-
                                      audience is the intended audience of the token. A recipient of a token
                                      must identify itself with an identifier specified in the audience of the
                                      token, and otherwise should reject the token. The audience defaults to the
                                      identifier of the apiserver.
                                    type: string
                                  expirationSeconds:
                                    description: |-
                                      expirationSeconds is the requested duration of validity of the service
                                      account token. As the token approaches expiration, the kubelet volume
                                      plugin will proactively rotate the service account token. The kubelet will
                                      start trying to rotate the token if the token is older than 80 percent of
                                      its time to live or if the token is older than 24 hours.Defaults to 1 hour
                                      and must be at least 10 minutes.
                                    format: int64
                                    type: integer
                                  path:
                                    description: |-
                                      path is the path relative to the mount point of the file to project the
                                      token into.
                                    type: string
                                required:
                                - path
                                type: object
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                      type: object
                    quobyte:
                      description: |-
                        quobyte represents a Quobyte mount on the host that shares a pod's lifetime.
                        Deprecated: Quobyte is deprecated and the in-tree quobyte type is no longer supported.
                      properties:
                        group:
                          description: |-
                            group to map volume access to
                            Default is no group
                          type: string
                        readOnly:
                          description: |-
                            readOnly here will force the Quobyte volume to be mounted with read-only permissions.
                            Defaults to false.
                          type: boolean
                        registry:
                          description: |-
                            registry represents a single or multiple Quobyte Registry services
                            specified as a string as host:port pair (multiple entries are separated with commas)
                            which acts as the central registry for volumes
                          type: string
                        tenant:
                          description: |-
                            tenant owning the given Quobyte volume in the Backend
                            Used with dynamically provisioned Quobyte volumes, value is set by the plugin
                          type: string
                        user:
                          description: |-
                            user to map volume access to
                            Defaults to serivceaccount user
                          type: string
                        volume:
                          description: volume is a string that references an already
                            created Quobyte volume by name.
                          type: string
                      required:
                      - registry
                      - volume
                      type: object
                    rbd:
                      description: |-
                        rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.
                        Deprecated: RBD is deprecated and the in-tree rbd type is no longer supported.
                        More info: https://examples.k8s.io/volumes/rbd/README.md
                      properties:
                        fsType:
                          description: |-
                            fsType is the filesystem type of the volume that you want to mount.
                            Tip: Ensure that the filesystem type is supported by the host operating system.
                            Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                            More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
                          type: string
                        image:
                          description: |-
                            image is the rados image name.
                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                          type: string
                        keyring:
                          default: /etc/ceph/keyring
                          description: |-
                            keyring is the path to key ring for RBDUser.
                            Default is /etc/ceph/keyring.
                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                          type: string
                        monitors:
                          description: |-
                            monitors is a collection of Ceph monitors.
                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        pool:
                          default: rbd
                          description: |-
                            pool is the rados pool name.
                            Default is rbd.
                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                          type: string
                        readOnly:
                          description: |-
                            readOnly here will force the ReadOnly setting in VolumeMounts.
                            Defaults to false.
                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                          type: boolean
                        secretRef:
                          description: |-
                            secretRef is name of the authentication secret for RBDUser. If provided
                            overrides keyring.
                            Default is nil.
                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                          properties:
                            name:
                              default: ""
                              description: |-
                                Name of the referent.
                                This field is effectively required, but due to backwards compatibility is
                                allowed to be empty. Instances of this type with an empty value here are
                                almost certainly wrong.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                        user:
                          default: admin
                          description: |-
                            user is the rados user name.
                            Default is admin.
                            More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
                          type: string
                      required:
                      - image
                      - monitors
                      type: object
                    scaleIO:
                      description: |-
                        scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes.
                        Deprecated: ScaleIO is deprecated and the in-tree scaleIO type is no longer supported.
                      properties:
                        fsType:
                          default: xfs
                          description: |-
                            fsType is the filesystem type to mount.
                            Must be a filesystem type supported by the host operating system.
                            Ex. "ext4", "xfs", "ntfs".
                            Default is "xfs".
                          type: string
                        gateway:
                          description: gateway is the host address of the ScaleIO
                            API Gateway.
                          type: string
                        protectionDomain:
                          description: protectionDomain is the name of the ScaleIO
                            Protection Domain for the configured storage.
                          type: string
                        readOnly:
                          description: |-
                            readOnly Defaults to false (read/write). ReadOnly here will force
                            the ReadOnly setting in VolumeMounts.
                          type: boolean
                        secretRef:
                          description: |-
                            secretRef references to the secret for ScaleIO user and other
                            sensitive information. If this is not provided, Login operation will fail.
                          properties:
                            name:
                              default: ""
                              description: |-
                                Name of the referent.
                                This field is effectively required, but due to backwards compatibility is
                                allowed to be empty. Instances of this type with an empty value here are
                                almost certainly wrong.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                        sslEnabled:
                          description: sslEnabled Flag enable/disable SSL communication
                            with Gateway, default false
                          type: boolean
                        storageMode:
                          default: ThinProvisioned
                          description: |-
                            storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.
                            Default is ThinProvisioned.
                          type: string
                        storagePool:
                          description: storagePool is the ScaleIO Storage Pool associated
                            with the protection domain.
                          type: string
                        system:
                          description: system is the name of the storage system as
                            configured in ScaleIO.
                          type: string
                        volumeName:
                          description: |-
                            volumeName is the name of a volume already created in the ScaleIO system
                            that is associated with this volume source.
                          type: string
                      required:
                      - gateway
                      - secretRef
                      - system
                      type: object
                    secret:
                      description: |-
                        secret represents a secret that should populate this volume.
                        More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                      properties:
                        defaultMode:
                          description: |-
                            defaultMode is Optional: mode bits used to set permissions on created files by default.
                            Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                            YAML accepts both octal and decimal values, JSON requires decimal values
                            for mode bits. Defaults to 0644.
                            Directories within the path are not affected by this setting.
                            This might be in conflict with other options that affect the file
                            mode, like fsGroup, and the result can be other mode bits set.
                          format: int32
                          type: integer
                        items:
                          description: |-
                            items If unspecified, each key-value pair in the Data field of the referenced
                            Secret will be projected into the volume as a file whose name is the
                            key and content is the value. If specified, the listed keys will be
                            projected into the specified paths, and unlisted keys will not be
                            present. If a key is specified which is not present in the Secret,
                            the volume setup will error unless it is marked optional. Paths must be
                            relative and may not contain the '..' path or start with '..'.
                          items:
                            description: Maps a string key to a path within a volume.
                            properties:
                              key:
                                description: key is the key to project.
                                type: string
                              mode:
                                description: |-
                                  mode is Optional: mode bits used to set permissions on this file.
                                  Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.
                                  YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.
                                  If not specified, the volume defaultMode will be used.
                                  This might be in conflict with other options that affect the file
                                  mode, like fsGroup, and the result can be other mode bits set.
                                format: int32
                                type: integer
                              path:
                                description: |-
                                  path is the relative path of the file to map the key to.
                                  May not be an absolute path.
                                  May not contain the path element '..'.
                                  May not start with the string '..'.
                                type: string
                            required:
                            - key
                            - path
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        optional:
                          description: optional field specify whether the Secret or
                            its keys must be defined
                          type: boolean
                        secretName:
                          description: |-
                            secretName is the name of the secret in the pod's namespace to use.
                            More info: https://kubernetes.io/docs/concepts/storage/volumes#secret
                          type: string
                      type: object
                    storageos:
                      description: |-
                        storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes.
                        Deprecated: StorageOS is deprecated and the in-tree storageos type is no longer supported.
                      properties:
                        fsType:
                          description: |-
                            fsType is the filesystem type to mount.
                            Must be a filesystem type supported by the host operating system.
                            Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                          type: string
                        readOnly:
                          description: |-
                            readOnly defaults to false (read/write). ReadOnly here will force
                            the ReadOnly setting in VolumeMounts.
                          type: boolean
                        secretRef:
                          description: |-
                            secretRef specifies the secret to use for obtaining the StorageOS API
                            credentials.  If not specified, default values will be attempted.
                          properties:
                            name:
                              default: ""
                              description: |-
                                Name of the referent.
                                This field is effectively required, but due to backwards compatibility is
                                allowed to be empty. Instances of this type with an empty value here are
                                almost certainly wrong.
                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                        volumeName:
                          description: |-
                            volumeName is the human-readable name of the StorageOS volume.  Volume
                            names are only unique within a namespace.
                          type: string
                        volumeNamespace:
                          description: |-
                            volumeNamespace specifies the scope of the volume within StorageOS.  If no
                            namespace is specified then the Pod's namespace will be used.  This allows the
                            Kubernetes name scoping to be mirrored within StorageOS for tighter integration.
                            Set VolumeName to any name to override the default behaviour.
                            Set to "default" if you are not using namespaces within StorageOS.
                            Namespaces that do not pre-exist within StorageOS will be created.
                          type: string
                      type: object
                    vsphereVolume:
                      description: |-
                        vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine.
                        Deprecated: VsphereVolume is deprecated. All operations for the in-tree vsphereVolume type
                        are redirected to the csi.vsphere.vmware.com CSI driver.
                      properties:
                        fsType:
                          description: |-
                            fsType is filesystem type to mount.
                            Must be a filesystem type supported by the host operating system.
                            Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified.
                          type: string
                        storagePolicyID:
                          description: storagePolicyID is the storage Policy Based
                            Management (SPBM) profile ID associated with the StoragePolicyName.
                          type: string
                        storagePolicyName:
                          description: storagePolicyName is the storage Policy Based
                            Management (SPBM) profile name.
                          type: string
                        volumePath:
                          description: volumePath is the path that identifies vSphere
                            volume vmdk
                          type: string
                      required:
                      - volumePath
                      type: object
                  required:
                  - name
                  type: object
                type: array
              workflowMetadata:
                description: WorkflowMetadata contains some metadata of the workflow
                  to refer to
                properties:
                  annotations:
                    additionalProperties:
                      type: string
                    type: object
                  labels:
                    additionalProperties:
                      type: string
                    type: object
                  labelsFrom:
                    additionalProperties:
                      properties:
                        expression:
                          type: string
                      required:
                      - expression
                      type: object
                    type: object
                type: object
              workflowTemplateRef:
                description: WorkflowTemplateRef holds a reference to a WorkflowTemplate
                  for execution
                properties:
                  clusterScope:
                    description: ClusterScope indicates the referred template is cluster
                      scoped (i.e. a ClusterWorkflowTemplate).
                    type: boolean
                  name:
                    description: Name is the resource name of the workflow template.
                    type: string
                type: object
            type: object
          status:
            description: |-
              WorkflowStatus contains overall status information about a workflow.
              All nested field descriptions have been dropped due to Kubernetes size limitations.
            properties:
              artifactGCStatus:
                properties:
                  notSpecified:
                    type: boolean
                  podsRecouped:
                    additionalProperties:
                      type: boolean
                    type: object
                  strategiesProcessed:
                    additionalProperties:
                      type: boolean
                    type: object
                type: object
              artifactRepositoryRef:
                properties:
                  artifactRepository:
                    properties:
                      archiveLogs:
                        type: boolean
                      artifactory:
                        properties:
                          keyFormat:
                            type: string
                          passwordSecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          repoURL:
                            type: string
                          usernameSecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                        type: object
                      azure:
                        properties:
                          accountKeySecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          blobNameFormat:
                            type: string
                          container:
                            type: string
                          endpoint:
                            type: string
                          useSDKCreds:
                            type: boolean
                        required:
                        - container
                        - endpoint
                        type: object
                      gcs:
                        properties:
                          bucket:
                            type: string
                          keyFormat:
                            type: string
                          serviceAccountKeySecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                        type: object
                      hdfs:
                        properties:
                          addresses:
                            items:
                              type: string
                            type: array
                          dataTransferProtection:
                            type: string
                          force:
                            type: boolean
                          hdfsUser:
                            type: string
                          krbCCacheSecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          krbConfigConfigMap:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          krbKeytabSecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          krbRealm:
                            type: string
                          krbServicePrincipalName:
                            type: string
                          krbUsername:
                            type: string
                          pathFormat:
                            type: string
                        type: object
                      oss:
                        properties:
                          accessKeySecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          bucket:
                            type: string
                          createBucketIfNotPresent:
                            type: boolean
                          endpoint:
                            type: string
                          keyFormat:
                            type: string
                          lifecycleRule:
                            properties:
                              markDeletionAfterDays:
                                format: int32
                                type: integer
                              markInfrequentAccessAfterDays:
                                format: int32
                                type: integer
                            type: object
                          secretKeySecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          securityToken:
                            type: string
                          useSDKCreds:
                            type: boolean
                        type: object
                      plugin:
                        properties:
                          configuration:
                            type: string
                          keyFormat:
                            type: string
                          name:
                            type: string
                        required:
                        - configuration
                        - name
                        type: object
                      s3:
                        properties:
                          accessKeySecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          bucket:
                            type: string
                          caSecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          createBucketIfNotPresent:
                            properties:
                              objectLocking:
                                type: boolean
                            type: object
                          encryptionOptions:
                            properties:
                              enableEncryption:
                                type: boolean
                              kmsEncryptionContext:
                                type: string
                              kmsKeyId:
                                type: string
                              serverSideCustomerKeySecret:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    default: ""
                                    type: string
                                  optional:
                                    type: boolean
                                required:
                                - key
                                type: object
                                x-kubernetes-map-type: atomic
                            type: object
                          endpoint:
                            type: string
                          insecure:
                            type: boolean
                          keyFormat:
                            type: string
                          keyPrefix:
                            type: string
                          region:
                            type: string
                          roleARN:
                            type: string
                          secretKeySecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          sessionTokenSecret:
                            properties:
                              key:
                                type: string
                              name:
                                default: ""
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                            x-kubernetes-map-type: atomic
                          useSDKCreds:
                            type: boolean
                        type: object
                    type: object
                  configMap:
                    type: string
                  default:
                    type: boolean
                  key:
                    type: string
                  namespace:
                    type: string
                type: object
              compressedNodes:
                type: string
              conditions:
                items:
                  properties:
                    message:
                      type: string
                    status:
                      type: string
                    type:
                      type: string
                  type: object
                type: array
              estimatedDuration:
                type: integer
              finishedAt:
                format: date-time
                type: string
              message:
                type: string
              nodes:
                additionalProperties:
                  properties:
                    boundaryID:
                      type: string
                    children:
                      items:
                        type: string
                      type: array
                    daemoned:
                      type: boolean
                    displayName:
                      type: string
                    estimatedDuration:
                      type: integer
                    failedPodRestarts:
                      format: int32
                      type: integer
                    finishedAt:
                      format: date-time
                      type: string
                    hostNodeName:
                      type: string
                    id:
                      type: string
                    inputs:
                      properties:
                        artifacts:
                          items:
                            properties:
                              archive:
                                properties:
                                  none:
                                    type: object
                                  tar:
                                    properties:
                                      compressionLevel:
                                        format: int32
                                        type: integer
                                    type: object
                                  zip:
                                    type: object
                                type: object
                              archiveLogs:
                                type: boolean
                              artifactGC:
                                properties:
                                  podMetadata:
                                    properties:
                                      annotations:
                                        additionalProperties:
                                          type: string
                                        type: object
                                      labels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                  serviceAccountName:
                                    type: string
                                  strategy:
                                    enum:
                                    - ""
                                    - OnWorkflowCompletion
                                    - OnWorkflowDeletion
                                    - Never
                                    type: string
                                type: object
                              artifactory:
                                properties:
                                  passwordSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  url:
                                    type: string
                                  usernameSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - url
                                type: object
                              azure:
                                properties:
                                  accountKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  blob:
                                    type: string
                                  container:
                                    type: string
                                  endpoint:
                                    type: string
                                  useSDKCreds:
                                    type: boolean
                                required:
                                - blob
                                - container
                                - endpoint
                                type: object
                              deleted:
                                type: boolean
                              from:
                                type: string
                              fromExpression:
                                type: string
                              gcs:
                                properties:
                                  bucket:
                                    type: string
                                  key:
                                    type: string
                                  serviceAccountKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - key
                                type: object
                              git:
                                properties:
                                  branch:
                                    type: string
                                  depth:
                                    format: int64
                                    type: integer
                                  disableSubmodules:
                                    type: boolean
                                  fetch:
                                    items:
                                      type: string
                                    type: array
                                  insecureIgnoreHostKey:
                                    type: boolean
                                  insecureSkipTLS:
                                    type: boolean
                                  passwordSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  repo:
                                    type: string
                                  revision:
                                    type: string
                                  singleBranch:
                                    type: boolean
                                  sshPrivateKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  usernameSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - repo
                                type: object
                              globalName:
                                type: string
                              hdfs:
                                properties:
                                  addresses:
                                    items:
                                      type: string
                                    type: array
                                  dataTransferProtection:
                                    type: string
                                  force:
                                    type: boolean
                                  hdfsUser:
                                    type: string
                                  krbCCacheSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbConfigConfigMap:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbKeytabSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbRealm:
                                    type: string
                                  krbServicePrincipalName:
                                    type: string
                                  krbUsername:
                                    type: string
                                  path:
                                    type: string
                                required:
                                - path
                                type: object
                              http:
                                properties:
                                  auth:
                                    properties:
                                      basicAuth:
                                        properties:
                                          passwordSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          usernameSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                      clientCert:
                                        properties:
                                          clientCertSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          clientKeySecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                      oauth2:
                                        properties:
                                          clientIDSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          clientSecretSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          endpointParams:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                value:
                                                  type: string
                                              required:
                                              - key
                                              type: object
                                            type: array
                                          scopes:
                                            items:
                                              type: string
                                            type: array
                                          tokenURLSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                    type: object
                                  headers:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  url:
                                    type: string
                                required:
                                - url
                                type: object
                              mode:
                                format: int32
                                maximum: 511
                                minimum: 0
                                type: integer
                              name:
                                pattern: ^[-a-zA-Z0-9_{}.]+$
                                type: string
                              optional:
                                type: boolean
                              oss:
                                properties:
                                  accessKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  bucket:
                                    type: string
                                  createBucketIfNotPresent:
                                    type: boolean
                                  endpoint:
                                    type: string
                                  key:
                                    type: string
                                  lifecycleRule:
                                    properties:
                                      markDeletionAfterDays:
                                        format: int32
                                        type: integer
                                      markInfrequentAccessAfterDays:
                                        format: int32
                                        type: integer
                                    type: object
                                  secretKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  securityToken:
                                    type: string
                                  useSDKCreds:
                                    type: boolean
                                required:
                                - key
                                type: object
                              path:
                                type: string
                              plugin:
                                properties:
                                  configuration:
                                    type: string
                                  connectionTimeoutSeconds:
                                    format: int32
                                    type: integer
                                  key:
                                    type: string
                                  name:
                                    type: string
                                required:
                                - key
                                type: object
                              raw:
                                properties:
                                  data:
                                    type: string
                                required:
                                - data
                                type: object
                              recurseMode:
                                type: boolean
                              s3:
                                properties:
                                  accessKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  bucket:
                                    type: string
                                  caSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  createBucketIfNotPresent:
                                    properties:
                                      objectLocking:
                                        type: boolean
                                    type: object
                                  encryptionOptions:
                                    properties:
                                      enableEncryption:
                                        type: boolean
                                      kmsEncryptionContext:
                                        type: string
                                      kmsKeyId:
                                        type: string
                                      serverSideCustomerKeySecret:
                                        properties:
                                          key:
                                            type: string
                                          name:
                                            default: ""
                                            type: string
                                          optional:
                                            type: boolean
                                        required:
                                        - key
                                        type: object
                                        x-kubernetes-map-type: atomic
                                    type: object
                                  endpoint:
                                    type: string
                                  insecure:
                                    type: boolean
                                  key:
                                    type: string
                                  region:
                                    type: string
                                  roleARN:
                                    type: string
                                  secretKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  sessionTokenSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  useSDKCreds:
                                    type: boolean
                                type: object
                              subPath:
                                type: string
                            required:
                            - name
                            type: object
                          type: array
                        parameters:
                          items:
                            properties:
                              default:
                                type: string
                              description:
                                type: string
                              enum:
                                items:
                                  type: string
                                minItems: 1
                                type: array
                              globalName:
                                type: string
                              name:
                                pattern: ^[-a-zA-Z0-9_]+$
                                type: string
                              value:
                                type: string
                              valueFrom:
                                properties:
                                  configMapKeyRef:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  default:
                                    type: string
                                  event:
                                    type: string
                                  expression:
                                    type: string
                                  jqFilter:
                                    type: string
                                  jsonPath:
                                    type: string
                                  parameter:
                                    type: string
                                  path:
                                    type: string
                                  supplied:
                                    type: object
                                type: object
                            required:
                            - name
                            type: object
                          maxItems: 500
                          type: array
                      type: object
                    memoizationStatus:
                      properties:
                        cacheName:
                          type: string
                        hit:
                          type: boolean
                        key:
                          type: string
                      required:
                      - cacheName
                      - hit
                      - key
                      type: object
                    message:
                      type: string
                    name:
                      type: string
                    nodeFlag:
                      properties:
                        hooked:
                          type: boolean
                        retried:
                          type: boolean
                      type: object
                    outboundNodes:
                      items:
                        type: string
                      type: array
                    outputs:
                      properties:
                        artifacts:
                          items:
                            properties:
                              archive:
                                properties:
                                  none:
                                    type: object
                                  tar:
                                    properties:
                                      compressionLevel:
                                        format: int32
                                        type: integer
                                    type: object
                                  zip:
                                    type: object
                                type: object
                              archiveLogs:
                                type: boolean
                              artifactGC:
                                properties:
                                  podMetadata:
                                    properties:
                                      annotations:
                                        additionalProperties:
                                          type: string
                                        type: object
                                      labels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                  serviceAccountName:
                                    type: string
                                  strategy:
                                    enum:
                                    - ""
                                    - OnWorkflowCompletion
                                    - OnWorkflowDeletion
                                    - Never
                                    type: string
                                type: object
                              artifactory:
                                properties:
                                  passwordSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  url:
                                    type: string
                                  usernameSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - url
                                type: object
                              azure:
                                properties:
                                  accountKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  blob:
                                    type: string
                                  container:
                                    type: string
                                  endpoint:
                                    type: string
                                  useSDKCreds:
                                    type: boolean
                                required:
                                - blob
                                - container
                                - endpoint
                                type: object
                              deleted:
                                type: boolean
                              from:
                                type: string
                              fromExpression:
                                type: string
                              gcs:
                                properties:
                                  bucket:
                                    type: string
                                  key:
                                    type: string
                                  serviceAccountKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - key
                                type: object
                              git:
                                properties:
                                  branch:
                                    type: string
                                  depth:
                                    format: int64
                                    type: integer
                                  disableSubmodules:
                                    type: boolean
                                  fetch:
                                    items:
                                      type: string
                                    type: array
                                  insecureIgnoreHostKey:
                                    type: boolean
                                  insecureSkipTLS:
                                    type: boolean
                                  passwordSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  repo:
                                    type: string
                                  revision:
                                    type: string
                                  singleBranch:
                                    type: boolean
                                  sshPrivateKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  usernameSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - repo
                                type: object
                              globalName:
                                type: string
                              hdfs:
                                properties:
                                  addresses:
                                    items:
                                      type: string
                                    type: array
                                  dataTransferProtection:
                                    type: string
                                  force:
                                    type: boolean
                                  hdfsUser:
                                    type: string
                                  krbCCacheSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbConfigConfigMap:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbKeytabSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  krbRealm:
                                    type: string
                                  krbServicePrincipalName:
                                    type: string
                                  krbUsername:
                                    type: string
                                  path:
                                    type: string
                                required:
                                - path
                                type: object
                              http:
                                properties:
                                  auth:
                                    properties:
                                      basicAuth:
                                        properties:
                                          passwordSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          usernameSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                      clientCert:
                                        properties:
                                          clientCertSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          clientKeySecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                      oauth2:
                                        properties:
                                          clientIDSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          clientSecretSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          endpointParams:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                value:
                                                  type: string
                                              required:
                                              - key
                                              type: object
                                            type: array
                                          scopes:
                                            items:
                                              type: string
                                            type: array
                                          tokenURLSecret:
                                            properties:
                                              key:
                                                type: string
                                              name:
                                                default: ""
                                                type: string
                                              optional:
                                                type: boolean
                                            required:
                                            - key
                                            type: object
                                            x-kubernetes-map-type: atomic
                                        type: object
                                    type: object
                                  headers:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  url:
                                    type: string
                                required:
                                - url
                                type: object
                              mode:
                                format: int32
                                maximum: 511
                                minimum: 0
                                type: integer
                              name:
                                pattern: ^[-a-zA-Z0-9_{}.]+$
                                type: string
                              optional:
                                type: boolean
                              oss:
                                properties:
                                  accessKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  bucket:
                                    type: string
                                  createBucketIfNotPresent:
                                    type: boolean
                                  endpoint:
                                    type: string
                                  key:
                                    type: string
                                  lifecycleRule:
                                    properties:
                                      markDeletionAfterDays:
                                        format: int32
                                        type: integer
                                      markInfrequentAccessAfterDays:
                                        format: int32
                                        type: integer
                                    type: object
                                  secretKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  securityToken:
                                    type: string
                                  useSDKCreds:
                                    type: boolean
                                required:
                                - key
                                type: object
                              path:
                                type: string
                              plugin:
                                properties:
                                  configuration:
                                    type: string
                                  connectionTimeoutSeconds:
                                    format: int32
                                    type: integer
                                  key:
                                    type: string
                                  name:
                                    type: string
                                required:
                                - key
                                type: object
                              raw:
                                properties:
                                  data:
                                    type: string
                                required:
                                - data
                                type: object
                              recurseMode:
                                type: boolean
                              s3:
                                properties:
                                  accessKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  bucket:
                                    type: string
                                  caSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  createBucketIfNotPresent:
                                    properties:
                                      objectLocking:
                                        type: boolean
                                    type: object
                                  encryptionOptions:
                                    properties:
                                      enableEncryption:
                                        type: boolean
                                      kmsEncryptionContext:
                                        type: string
                                      kmsKeyId:
                                        type: string
                                      serverSideCustomerKeySecret:
                                        properties:
                                          key:
                                            type: string
                                          name:
                                            default: ""
                                            type: string
                                          optional:
                                            type: boolean
                                        required:
                                        - key
                                        type: object
                                        x-kubernetes-map-type: atomic
                                    type: object
                                  endpoint:
                                    type: string
                                  insecure:
                                    type: boolean
                                  key:
                                    type: string
                                  region:
                                    type: string
                                  roleARN:
                                    type: string
                                  secretKeySecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  sessionTokenSecret:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  useSDKCreds:
                                    type: boolean
                                type: object
                              subPath:
                                type: string
                            required:
                            - name
                            type: object
                          type: array
                        exitCode:
                          type: string
                        parameters:
                          items:
                            properties:
                              default:
                                type: string
                              description:
                                type: string
                              enum:
                                items:
                                  type: string
                                minItems: 1
                                type: array
                              globalName:
                                type: string
                              name:
                                pattern: ^[-a-zA-Z0-9_]+$
                                type: string
                              value:
                                type: string
                              valueFrom:
                                properties:
                                  configMapKeyRef:
                                    properties:
                                      key:
                                        type: string
                                      name:
                                        default: ""
                                        type: string
                                      optional:
                                        type: boolean
                                    required:
                                    - key
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  default:
                                    type: string
                                  event:
                                    type: string
                                  expression:
                                    type: string
                                  jqFilter:
                                    type: string
                                  jsonPath:
                                    type: string
                                  parameter:
                                    type: string
                                  path:
                                    type: string
                                  supplied:
                                    type: object
                                type: object
                            required:
                            - name
                            type: object
                          type: array
                        result:
                          type: string
                      type: object
                    phase:
                      type: string
                    podIP:
                      type: string
                    progress:
                      type: string
                    resourcesDuration:
                      additionalProperties:
                        format: int64
                        type: integer
                      type: object
                    restartingPodUID:
                      type: string
                    startedAt:
                      format: date-time
                      type: string
                    synchronizationStatus:
                      properties:
                        waiting:
                          type: string
                      type: object
                    taskResultSynced:
                      type: boolean
                    templateName:
                      type: string
                    templateRef:
                      properties:
                        clusterScope:
                          type: boolean
                        name:
                          type: string
                        template:
                          type: string
                      type: object
                    templateScope:
                      type: string
                    type:
                      type: string
                  required:
                  - id
                  - name
                  - type
                  type: object
                type: object
              offloadNodeStatusVersion:
                type: string
              outputs:
                properties:
                  artifacts:
                    items:
                      properties:
                        archive:
                          properties:
                            none:
                              type: object
                            tar:
                              properties:
                                compressionLevel:
                                  format: int32
                                  type: integer
                              type: object
                            zip:
                              type: object
                          type: object
                        archiveLogs:
                          type: boolean
                        artifactGC:
                          properties:
                            podMetadata:
                              properties:
                                annotations:
                                  additionalProperties:
                                    type: string
                                  type: object
                                labels:
                                  additionalProperties:
                                    type: string
                                  type: object
                              type: object
                            serviceAccountName:
                              type: string
                            strategy:
                              enum:
                              - ""
                              - OnWorkflowCompletion
                              - OnWorkflowDeletion
                              - Never
                              type: string
                          type: object
                        artifactory:
                          properties:
                            passwordSecret:
                              properties:
                                key:
                                  type: string
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            url:
                              type: string
                            usernameSecret:
                              properties:
                                key:
                                  type: string
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                          required:
                          - url
                          type: object
                        azure:
                          properties:
                            accountKeySecret:
                              properties:
                                key:
                                  type: string
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            blob:
                              type: string
                            container:
                              type: string
                            endpoint:
                              type: string
                            useSDKCreds:
                              type: boolean
                          required:
                          - blob
                          - container
                          - endpoint
                          type: object
                        deleted:
                          type: boolean
                        from:
                          type: string
                        fromExpression:
                          type: string
                        gcs:
                          properties:
                            bucket:
                              type: string
                            key:
                              type: string
                            serviceAccountKeySecret:
                              properties:
                                key:
                                  type: string
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                          required:
                          - key
                          type: object
                        git:
                          properties:
                            branch:
                              type: string
                            depth:
                              format: int64
                              type: integer
                            disableSubmodules:
                              type: boolean
                            fetch:
                              items:
                                type: string
                              type: array
                            insecureIgnoreHostKey:
                              type: boolean
                            insecureSkipTLS:
                              type: boolean
                            passwordSecret:
                              properties:
                                key:
                                  type: string
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            repo:
                              type: string
                            revision:
                              type: string
                            singleBranch:
                              type: boolean
                            sshPrivateKeySecret:
                              properties:
                                key:
                                  type: string
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            usernameSecret:
                              properties:
                                key:
                                  type: string
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                          required:
                          - repo
                          type: object
                        globalName:
                          type: string
                        hdfs:
                          properties:
                            addresses:
                              items:
                                type: string
                              type: array
                            dataTransferProtection:
                              type: string
                            force:
                              type: boolean
                            hdfsUser:
                              type: string
                            krbCCacheSecret:
                              properties:
                                key:
                                  type: string
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            krbConfigConfigMap:
                              properties:
                                key:
                                  type: string
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            krbKeytabSecret:
                              properties:
                                key:
                                  type: string
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            krbRealm:
                              type: string
                            krbServicePrincipalName:
                              type: string
                            krbUsername:
                              type: string
                            path:
                              type: string
                          required:
                          - path
                          type: object
                        http:
                          properties:
                            auth:
                              properties:
                                basicAuth:
                                  properties:
                                    passwordSecret:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          default: ""
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    usernameSecret:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          default: ""
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  type: object
                                clientCert:
                                  properties:
                                    clientCertSecret:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          default: ""
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    clientKeySecret:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          default: ""
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  type: object
                                oauth2:
                                  properties:
                                    clientIDSecret:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          default: ""
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    clientSecretSecret:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          default: ""
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    endpointParams:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          value:
                                            type: string
                                        required:
                                        - key
                                        type: object
                                      type: array
                                    scopes:
                                      items:
                                        type: string
                                      type: array
                                    tokenURLSecret:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          default: ""
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  type: object
                              type: object
                            headers:
                              items:
                                properties:
                                  name:
                                    type: string
                                  value:
                                    type: string
                                required:
                                - name
                                - value
                                type: object
                              type: array
                            url:
                              type: string
                          required:
                          - url
                          type: object
                        mode:
                          format: int32
                          maximum: 511
                          minimum: 0
                          type: integer
                        name:
                          pattern: ^[-a-zA-Z0-9_{}.]+$
                          type: string
                        optional:
                          type: boolean
                        oss:
                          properties:
                            accessKeySecret:
                              properties:
                                key:
                                  type: string
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            bucket:
                              type: string
                            createBucketIfNotPresent:
                              type: boolean
                            endpoint:
                              type: string
                            key:
                              type: string
                            lifecycleRule:
                              properties:
                                markDeletionAfterDays:
                                  format: int32
                                  type: integer
                                markInfrequentAccessAfterDays:
                                  format: int32
                                  type: integer
                              type: object
                            secretKeySecret:
                              properties:
                                key:
                                  type: string
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            securityToken:
                              type: string
                            useSDKCreds:
                              type: boolean
                          required:
                          - key
                          type: object
                        path:
                          type: string
                        plugin:
                          properties:
                            configuration:
                              type: string
                            connectionTimeoutSeconds:
                              format: int32
                              type: integer
                            key:
                              type: string
                            name:
                              type: string
                          required:
                          - key
                          type: object
                        raw:
                          properties:
                            data:
                              type: string
                          required:
                          - data
                          type: object
                        recurseMode:
                          type: boolean
                        s3:
                          properties:
                            accessKeySecret:
                              properties:
                                key:
                                  type: string
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            bucket:
                              type: string
                            caSecret:
                              properties:
                                key:
                                  type: string
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            createBucketIfNotPresent:
                              properties:
                                objectLocking:
                                  type: boolean
                              type: object
                            encryptionOptions:
                              properties:
                                enableEncryption:
                                  type: boolean
                                kmsEncryptionContext:
                                  type: string
                                kmsKeyId:
                                  type: string
                                serverSideCustomerKeySecret:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      default: ""
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                  x-kubernetes-map-type: atomic
                              type: object
                            endpoint:
                              type: string
                            insecure:
                              type: boolean
                            key:
                              type: string
                            region:
                              type: string
                            roleARN:
                              type: string
                            secretKeySecret:
                              properties:
                                key:
                                  type: string
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            sessionTokenSecret:
                              properties:
                                key:
                                  type: string
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            useSDKCreds:
                              type: boolean
                          type: object
                        subPath:
                          type: string
                      required:
                      - name
                      type: object
                    type: array
                  exitCode:
                    type: string
                  parameters:
                    items:
                      properties:
                        default:
                          type: string
                        description:
                          type: string
                        enum:
                          items:
                            type: string
                          minItems: 1
                          type: array
                        globalName:
                          type: string
                        name:
                          pattern: ^[-a-zA-Z0-9_]+$
                          type: string
                        value:
                          type: string
                        valueFrom:
                          properties:
                            configMapKeyRef:
                              properties:
                                key:
                                  type: string
                                name:
                                  default: ""
                                  type: string
                                optional:
                                  type: boolean
                              required:
                              - key
                              type: object
                              x-kubernetes-map-type: atomic
                            default:
                              type: string
                            event:
                              type: string
                            expression:
                              type: string
                            jqFilter:
                              type: string
                            jsonPath:
                              type: string
                            parameter:
                              type: string
                            path:
                              type: string
                            supplied:
                              type: object
                          type: object
                      required:
                      - name
                      type: object
                    type: array
                  result:
                    type: string
                type: object
              persistentVolumeClaims:
                items:
                  properties:
                    awsElasticBlockStore:
                      properties:
                        fsType:
                          type: string
                        partition:
                          format: int32
                          type: integer
                        readOnly:
                          type: boolean
                        volumeID:
                          type: string
                      required:
                      - volumeID
                      type: object
                    azureDisk:
                      properties:
                        cachingMode:
                          type: string
                        diskName:
                          type: string
                        diskURI:
                          type: string
                        fsType:
                          default: ext4
                          type: string
                        kind:
                          type: string
                        readOnly:
                          default: false
                          type: boolean
                      required:
                      - diskName
                      - diskURI
                      type: object
                    azureFile:
                      properties:
                        readOnly:
                          type: boolean
                        secretName:
                          type: string
                        shareName:
                          type: string
                      required:
                      - secretName
                      - shareName
                      type: object
                    cephfs:
                      properties:
                        monitors:
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        path:
                          type: string
                        readOnly:
                          type: boolean
                        secretFile:
                          type: string
                        secretRef:
                          properties:
                            name:
                              default: ""
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                        user:
                          type: string
                      required:
                      - monitors
                      type: object
                    cinder:
                      properties:
                        fsType:
                          type: string
                        readOnly:
                          type: boolean
                        secretRef:
                          properties:
                            name:
                              default: ""
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                        volumeID:
                          type: string
                      required:
                      - volumeID
                      type: object
                    configMap:
                      properties:
                        defaultMode:
                          format: int32
                          type: integer
                        items:
                          items:
                            properties:
                              key:
                                type: string
                              mode:
                                format: int32
                                type: integer
                              path:
                                type: string
                            required:
                            - key
                            - path
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        name:
                          default: ""
                          type: string
                        optional:
                          type: boolean
                      type: object
                      x-kubernetes-map-type: atomic
                    csi:
                      properties:
                        driver:
                          type: string
                        fsType:
                          type: string
                        nodePublishSecretRef:
                          properties:
                            name:
                              default: ""
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                        readOnly:
                          type: boolean
                        volumeAttributes:
                          additionalProperties:
                            type: string
                          type: object
                      required:
                      - driver
                      type: object
                    downwardAPI:
                      properties:
                        defaultMode:
                          format: int32
                          type: integer
                        items:
                          items:
                            properties:
                              fieldRef:
                                properties:
                                  apiVersion:
                                    type: string
                                  fieldPath:
                                    type: string
                                required:
                                - fieldPath
                                type: object
                                x-kubernetes-map-type: atomic
                              mode:
                                format: int32
                                type: integer
                              path:
                                type: string
                              resourceFieldRef:
                                properties:
                                  containerName:
                                    type: string
                                  divisor:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                    x-kubernetes-int-or-string: true
                                  resource:
                                    type: string
                                required:
                                - resource
                                type: object
                                x-kubernetes-map-type: atomic
                            required:
                            - path
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                      type: object
                    emptyDir:
                      properties:
                        medium:
                          type: string
                        sizeLimit:
                          anyOf:
                          - type: integer
                          - type: string
                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                          x-kubernetes-int-or-string: true
                      type: object
                    ephemeral:
                      properties:
                        volumeClaimTemplate:
                          properties:
                            metadata:
                              properties:
                                annotations:
                                  additionalProperties:
                                    type: string
                                  type: object
                                finalizers:
                                  items:
                                    type: string
                                  type: array
                                generateName:
                                  type: string
                                labels:
                                  additionalProperties:
                                    type: string
                                  type: object
                                name:
                                  type: string
                                namespace:
                                  type: string
                              type: object
                            spec:
                              properties:
                                accessModes:
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                                dataSource:
                                  properties:
                                    apiGroup:
                                      type: string
                                    kind:
                                      type: string
                                    name:
                                      type: string
                                  required:
                                  - kind
                                  - name
                                  type: object
                                  x-kubernetes-map-type: atomic
                                dataSourceRef:
                                  properties:
                                    apiGroup:
                                      type: string
                                    kind:
                                      type: string
                                    name:
                                      type: string
                                    namespace:
                                      type: string
                                  required:
                                  - kind
                                  - name
                                  type: object
                                resources:
                                  properties:
                                    limits:
                                      additionalProperties:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                        x-kubernetes-int-or-string: true
                                      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
                                      type: object
                                  type: object
                                selector:
                                  properties:
                                    matchExpressions:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          operator:
                                            type: string
                                          values:
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                      x-kubernetes-list-type: atomic
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      type: object
                                  type: object
                                  x-kubernetes-map-type: atomic
                                storageClassName:
                                  type: string
                                volumeAttributesClassName:
                                  type: string
                                volumeMode:
                                  type: string
                                volumeName:
                                  type: string
                              type: object
                          required:
                          - spec
                          type: object
                      type: object
                    fc:
                      properties:
                        fsType:
                          type: string
                        lun:
                          format: int32
                          type: integer
                        readOnly:
                          type: boolean
                        targetWWNs:
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        wwids:
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                      type: object
                    flexVolume:
                      properties:
                        driver:
                          type: string
                        fsType:
                          type: string
                        options:
                          additionalProperties:
                            type: string
                          type: object
                        readOnly:
                          type: boolean
                        secretRef:
                          properties:
                            name:
                              default: ""
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                      required:
                      - driver
                      type: object
                    flocker:
                      properties:
                        datasetName:
                          type: string
                        datasetUUID:
                          type: string
                      type: object
                    gcePersistentDisk:
                      properties:
                        fsType:
                          type: string
                        partition:
                          format: int32
                          type: integer
                        pdName:
                          type: string
                        readOnly:
                          type: boolean
                      required:
                      - pdName
                      type: object
                    gitRepo:
                      properties:
                        directory:
                          type: string
                        repository:
                          type: string
                        revision:
                          type: string
                      required:
                      - repository
                      type: object
                    glusterfs:
                      properties:
                        endpoints:
                          type: string
                        path:
                          type: string
                        readOnly:
                          type: boolean
                      required:
                      - endpoints
                      - path
                      type: object
                    hostPath:
                      properties:
                        path:
                          type: string
                        type:
                          type: string
                      required:
                      - path
                      type: object
                    image:
                      properties:
                        pullPolicy:
                          type: string
                        reference:
                          type: string
                      type: object
                    iscsi:
                      properties:
                        chapAuthDiscovery:
                          type: boolean
                        chapAuthSession:
                          type: boolean
                        fsType:
                          type: string
                        initiatorName:
                          type: string
                        iqn:
                          type: string
                        iscsiInterface:
                          default: default
                          type: string
                        lun:
                          format: int32
                          type: integer
                        portals:
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        readOnly:
                          type: boolean
                        secretRef:
                          properties:
                            name:
                              default: ""
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                        targetPortal:
                          type: string
                      required:
                      - iqn
                      - lun
                      - targetPortal
                      type: object
                    name:
                      type: string
                    nfs:
                      properties:
                        path:
                          type: string
                        readOnly:
                          type: boolean
                        server:
                          type: string
                      required:
                      - path
                      - server
                      type: object
                    persistentVolumeClaim:
                      properties:
                        claimName:
                          type: string
                        readOnly:
                          type: boolean
                      required:
                      - claimName
                      type: object
                    photonPersistentDisk:
                      properties:
                        fsType:
                          type: string
                        pdID:
                          type: string
                      required:
                      - pdID
                      type: object
                    portworxVolume:
                      properties:
                        fsType:
                          type: string
                        readOnly:
                          type: boolean
                        volumeID:
                          type: string
                      required:
                      - volumeID
                      type: object
                    projected:
                      properties:
                        defaultMode:
                          format: int32
                          type: integer
                        sources:
                          items:
                            properties:
                              clusterTrustBundle:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  name:
                                    type: string
                                  optional:
                                    type: boolean
                                  path:
                                    type: string
                                  signerName:
                                    type: string
                                required:
                                - path
                                type: object
                              configMap:
                                properties:
                                  items:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        mode:
                                          format: int32
                                          type: integer
                                        path:
                                          type: string
                                      required:
                                      - key
                                      - path
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  name:
                                    default: ""
                                    type: string
                                  optional:
                                    type: boolean
                                type: object
                                x-kubernetes-map-type: atomic
                              downwardAPI:
                                properties:
                                  items:
                                    items:
                                      properties:
                                        fieldRef:
                                          properties:
                                            apiVersion:
                                              type: string
                                            fieldPath:
                                              type: string
                                          required:
                                          - fieldPath
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        mode:
                                          format: int32
                                          type: integer
                                        path:
                                          type: string
                                        resourceFieldRef:
                                          properties:
                                            containerName:
                                              type: string
                                            divisor:
                                              anyOf:
                                              - type: integer
                                              - type: string
                                              pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                              x-kubernetes-int-or-string: true
                                            resource:
                                              type: string
                                          required:
                                          - resource
                                          type: object
                                          x-kubernetes-map-type: atomic
                                      required:
                                      - path
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              secret:
                                properties:
                                  items:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        mode:
                                          format: int32
                                          type: integer
                                        path:
                                          type: string
                                      required:
                                      - key
                                      - path
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  name:
                                    default: ""
                                    type: string
                                  optional:
                                    type: boolean
                                type: object
                                x-kubernetes-map-type: atomic
                              serviceAccountToken:
                                properties:
                                  audience:
                                    type: string
                                  expirationSeconds:
                                    format: int64
                                    type: integer
                                  path:
                                    type: string
                                required:
                                - path
                                type: object
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                      type: object
                    quobyte:
                      properties:
                        group:
                          type: string
                        readOnly:
                          type: boolean
                        registry:
                          type: string
                        tenant:
                          type: string
                        user:
                          type: string
                        volume:
                          type: string
                      required:
                      - registry
                      - volume
                      type: object
                    rbd:
                      properties:
                        fsType:
                          type: string
                        image:
                          type: string
                        keyring:
                          default: /etc/ceph/keyring
                          type: string
                        monitors:
                          items:
                            type: string
                          type: array
                          x-kubernetes-list-type: atomic
                        pool:
                          default: rbd
                          type: string
                        readOnly:
                          type: boolean
                        secretRef:
                          properties:
                            name:
                              default: ""
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                        user:
                          default: admin
                          type: string
                      required:
                      - image
                      - monitors
                      type: object
                    scaleIO:
                      properties:
                        fsType:
                          default: xfs
                          type: string
                        gateway:
                          type: string
                        protectionDomain:
                          type: string
                        readOnly:
                          type: boolean
                        secretRef:
                          properties:
                            name:
                              default: ""
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                        sslEnabled:
                          type: boolean
                        storageMode:
                          default: ThinProvisioned
                          type: string
                        storagePool:
                          type: string
                        system:
                          type: string
                        volumeName:
                          type: string
                      required:
                      - gateway
                      - secretRef
                      - system
                      type: object
                    secret:
                      properties:
                        defaultMode:
                          format: int32
                          type: integer
                        items:
                          items:
                            properties:
                              key:
                                type: string
                              mode:
                                format: int32
                                type: integer
                              path:
                                type: string
                            required:
                            - key
                            - path
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        optional:
                          type: boolean
                        secretName:
                          type: string
                      type: object
                    storageos:
                      properties:
                        fsType:
                          type: string
                        readOnly:
                          type: boolean
                        secretRef:
                          properties:
                            name:
                              default: ""
                              type: string
                          type: object
                          x-kubernetes-map-type: atomic
                        volumeName:
                          type: string
                        volumeNamespace:
                          type: string
                      type: object
                    vsphereVolume:
                      properties:
                        fsType:
                          type: string
                        storagePolicyID:
                          type: string
                        storagePolicyName:
                          type: string
                        volumePath:
                          type: string
                      required:
                      - volumePath
                      type: object
                  required:
                  - name
                  type: object
                type: array
              phase:
                type: string
              progress:
                type: string
              resourcesDuration:
                additionalProperties:
                  format: int64
                  type: integer
                type: object
              startedAt:
                format: date-time
                type: string
              storedTemplates:
                type: object
                x-kubernetes-map-type: atomic
                x-kubernetes-preserve-unknown-fields: true
              storedWorkflowTemplateSpec:
                type: object
                x-kubernetes-map-type: atomic
                x-kubernetes-preserve-unknown-fields: true
              synchronization:
                properties:
                  mutex:
                    properties:
                      holding:
                        items:
                          properties:
                            holder:
                              type: string
                            mutex:
                              type: string
                          type: object
                        type: array
                        x-kubernetes-list-type: atomic
                      waiting:
                        items:
                          properties:
                            holder:
                              type: string
                            mutex:
                              type: string
                          type: object
                        type: array
                        x-kubernetes-list-type: atomic
                    type: object
                  semaphore:
                    properties:
                      holding:
                        items:
                          properties:
                            holders:
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                            semaphore:
                              type: string
                          type: object
                        type: array
                      waiting:
                        items:
                          properties:
                            holders:
                              items:
                                type: string
                              type: array
                              x-kubernetes-list-type: atomic
                            semaphore:
                              type: string
                          type: object
                        type: array
                    type: object
                type: object
              taskResultsCompletionStatus:
                additionalProperties:
                  type: boolean
                type: object
            type: object
        required:
        - metadata
        - spec
        type: object
    served: true
    storage: true
    subresources: {}
