fix(crd): Revert back to apiextensions.k8s.io/v1beta1
diff --git a/deploy/crd-build.yaml b/deploy/crd-build.yaml
index 81dabf1..c366e91 100644
--- a/deploy/crd-build.yaml
+++ b/deploy/crd-build.yaml
@@ -15,13 +15,34 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: apiextensions.k8s.io/v1
+apiVersion: apiextensions.k8s.io/v1beta1
 kind: CustomResourceDefinition
 metadata:
   name: builds.camel.apache.org
   labels:
     app: "camel-k"
 spec:
+  additionalPrinterColumns:
+    - JSONPath: .status.phase
+      description: The build phase
+      name: Phase
+      type: string
+    - JSONPath: .metadata.creationTimestamp
+      description: The time at which the build was created
+      name: Age
+      type: date
+    - JSONPath: .status.startedAt
+      description: The time at which the build was last (re-)started
+      name: Started
+      type: date
+    - JSONPath: .status.duration
+      description: The build last execution duration
+      name: Duration
+      type: string
+    - JSONPath: .status.failure.recovery.attempt
+      description: The number of execution attempts
+      name: Attempts
+      type: integer
   group: camel.apache.org
   names:
     kind: Build
@@ -31,4674 +52,4570 @@
       - ikb
     singular: build
   scope: Namespaced
-  versions:
-    - additionalPrinterColumns:
-        - description: The build phase
-          jsonPath: .status.phase
-          name: Phase
+  subresources:
+    status: {}
+  validation:
+    openAPIV3Schema:
+      description: Build is the Schema for the builds API
+      properties:
+        apiVersion:
+          description: 'APIVersion defines the versioned schema of this representation
+            of an object. Servers should convert recognized schemas to the latest
+            internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
           type: string
-        - description: The time at which the build was created
-          jsonPath: .metadata.creationTimestamp
-          name: Age
-          type: date
-        - description: The time at which the build was last (re-)started
-          jsonPath: .status.startedAt
-          name: Started
-          type: date
-        - description: The build last execution duration
-          jsonPath: .status.duration
-          name: Duration
+        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
-        - description: The number of execution attempts
-          jsonPath: .status.failure.recovery.attempt
-          name: Attempts
-          type: integer
-      name: v1
-      schema:
-        openAPIV3Schema:
-          description: Build is the Schema for the builds API
+        metadata:
+          type: object
+        spec:
+          description: BuildSpec defines the desired state of Build
           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: BuildSpec defines the desired state of Build
-              properties:
-                tasks:
-                  description: 'INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
-                  Important: Run "operator-sdk generate k8s" to regenerate code after
-                  modifying this file'
-                  items:
-                    description: Task --
+            tasks:
+              description: 'INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
+                Important: Run "operator-sdk generate k8s" to regenerate code after
+                modifying this file'
+              items:
+                description: Task --
+                properties:
+                  builder:
+                    description: BuilderTask --
                     properties:
-                      builder:
-                        description: BuilderTask --
+                      affinity:
+                        description: Affinity is a group of affinity scheduling rules.
                         properties:
-                          affinity:
-                            description: Affinity is a group of affinity scheduling
-                              rules.
+                          nodeAffinity:
+                            description: Describes node affinity scheduling rules
+                              for the pod.
                             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).
+                              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:
-                                        preference:
-                                          description: A node selector term, associated
-                                            with the corresponding weight.
-                                          properties:
-                                            matchExpressions:
-                                              description: A list of node selector requirements
-                                                by node's labels.
-                                              items:
-                                                description: A node selector requirement
-                                                  is a selector that contains values,
-                                                  a key, and an operator that relates
-                                                  the key and values.
-                                                properties:
-                                                  key:
-                                                    description: The label key that
-                                                      the selector applies to.
-                                                    type: string
-                                                  operator:
-                                                    description: Represents a key's
-                                                      relationship to a set of values.
-                                                      Valid operators are In, NotIn,
-                                                      Exists, DoesNotExist. Gt, and
-                                                      Lt.
-                                                    type: string
-                                                  values:
-                                                    description: An array of string
-                                                      values. If the operator is In
-                                                      or NotIn, the values array must
-                                                      be non-empty. If the operator
-                                                      is Exists or DoesNotExist, the
-                                                      values array must be empty. If
-                                                      the operator is Gt or Lt, the
-                                                      values array must have a single
-                                                      element, which will be interpreted
-                                                      as an integer. This array is replaced
-                                                      during a strategic merge patch.
-                                                    items:
-                                                      type: string
-                                                    type: array
-                                                required:
-                                                  - key
-                                                  - operator
-                                                type: object
-                                              type: array
-                                            matchFields:
-                                              description: A list of node selector requirements
-                                                by node's fields.
-                                              items:
-                                                description: A node selector requirement
-                                                  is a selector that contains values,
-                                                  a key, and an operator that relates
-                                                  the key and values.
-                                                properties:
-                                                  key:
-                                                    description: The label key that
-                                                      the selector applies to.
-                                                    type: string
-                                                  operator:
-                                                    description: Represents a key's
-                                                      relationship to a set of values.
-                                                      Valid operators are In, NotIn,
-                                                      Exists, DoesNotExist. Gt, and
-                                                      Lt.
-                                                    type: string
-                                                  values:
-                                                    description: An array of string
-                                                      values. If the operator is In
-                                                      or NotIn, the values array must
-                                                      be non-empty. If the operator
-                                                      is Exists or DoesNotExist, the
-                                                      values array must be empty. If
-                                                      the operator is Gt or Lt, the
-                                                      values array must have a single
-                                                      element, which will be interpreted
-                                                      as an integer. This array is replaced
-                                                      during a strategic merge patch.
-                                                    items:
-                                                      type: string
-                                                    type: array
-                                                required:
-                                                  - key
-                                                  - operator
-                                                type: object
-                                              type: array
-                                          type: object
-                                        weight:
-                                          description: Weight associated with matching
-                                            the corresponding nodeSelectorTerm, in the
-                                            range 1-100.
-                                          format: int32
-                                          type: integer
-                                      required:
-                                        - preference
-                                        - weight
-                                      type: object
-                                    type: array
-                                  requiredDuringSchedulingIgnoredDuringExecution:
-                                    description: If the affinity requirements specified
-                                      by this field are not met at scheduling time,
-                                      the pod will not be scheduled onto the node. If
-                                      the affinity requirements specified by this field
-                                      cease to be met at some point during pod execution
-                                      (e.g. due to an update), the system may or may
-                                      not try to eventually evict the pod from its node.
-                                    properties:
-                                      nodeSelectorTerms:
-                                        description: Required. A list of node selector
-                                          terms. The terms are ORed.
-                                        items:
-                                          description: A null or empty node selector
-                                            term matches no objects. The requirements
-                                            of them are ANDed. The TopologySelectorTerm
-                                            type implements a subset of the NodeSelectorTerm.
-                                          properties:
-                                            matchExpressions:
-                                              description: A list of node selector requirements
-                                                by node's labels.
-                                              items:
-                                                description: A node selector requirement
-                                                  is a selector that contains values,
-                                                  a key, and an operator that relates
-                                                  the key and values.
-                                                properties:
-                                                  key:
-                                                    description: The label key that
-                                                      the selector applies to.
-                                                    type: string
-                                                  operator:
-                                                    description: Represents a key's
-                                                      relationship to a set of values.
-                                                      Valid operators are In, NotIn,
-                                                      Exists, DoesNotExist. Gt, and
-                                                      Lt.
-                                                    type: string
-                                                  values:
-                                                    description: An array of string
-                                                      values. If the operator is In
-                                                      or NotIn, the values array must
-                                                      be non-empty. If the operator
-                                                      is Exists or DoesNotExist, the
-                                                      values array must be empty. If
-                                                      the operator is Gt or Lt, the
-                                                      values array must have a single
-                                                      element, which will be interpreted
-                                                      as an integer. This array is replaced
-                                                      during a strategic merge patch.
-                                                    items:
-                                                      type: string
-                                                    type: array
-                                                required:
-                                                  - key
-                                                  - operator
-                                                type: object
-                                              type: array
-                                            matchFields:
-                                              description: A list of node selector requirements
-                                                by node's fields.
-                                              items:
-                                                description: A node selector requirement
-                                                  is a selector that contains values,
-                                                  a key, and an operator that relates
-                                                  the key and values.
-                                                properties:
-                                                  key:
-                                                    description: The label key that
-                                                      the selector applies to.
-                                                    type: string
-                                                  operator:
-                                                    description: Represents a key's
-                                                      relationship to a set of values.
-                                                      Valid operators are In, NotIn,
-                                                      Exists, DoesNotExist. Gt, and
-                                                      Lt.
-                                                    type: string
-                                                  values:
-                                                    description: An array of string
-                                                      values. If the operator is In
-                                                      or NotIn, the values array must
-                                                      be non-empty. If the operator
-                                                      is Exists or DoesNotExist, the
-                                                      values array must be empty. If
-                                                      the operator is Gt or Lt, the
-                                                      values array must have a single
-                                                      element, which will be interpreted
-                                                      as an integer. This array is replaced
-                                                      during a strategic merge patch.
-                                                    items:
-                                                      type: string
-                                                    type: array
-                                                required:
-                                                  - key
-                                                  - operator
-                                                type: object
-                                              type: array
-                                          type: object
-                                        type: array
-                                    required:
-                                      - nodeSelectorTerms
-                                    type: object
-                                type: object
-                              podAffinity:
-                                description: Describes pod affinity scheduling rules
-                                  (e.g. co-locate this pod in the same node, zone, etc.
-                                  as some other pod(s)).
-                                properties:
-                                  preferredDuringSchedulingIgnoredDuringExecution:
-                                    description: The scheduler will prefer to schedule
-                                      pods to nodes that satisfy the affinity expressions
-                                      specified by this field, but it may choose a node
-                                      that violates one or more of the expressions.
-                                      The node that is most preferred is the one with
-                                      the greatest sum of weights, i.e. for each node
-                                      that meets all of the scheduling requirements
-                                      (resource request, requiredDuringScheduling affinity
-                                      expressions, etc.), compute a sum by iterating
-                                      through the elements of this field and adding
-                                      "weight" to the sum if the node has pods which
-                                      matches the corresponding podAffinityTerm; the
-                                      node(s) with the highest sum are the most preferred.
-                                    items:
-                                      description: The weights of all of the matched
-                                        WeightedPodAffinityTerm fields are added per-node
-                                        to find the most preferred node(s)
-                                      properties:
-                                        podAffinityTerm:
-                                          description: Required. A pod affinity term,
-                                            associated with the corresponding weight.
-                                          properties:
-                                            labelSelector:
-                                              description: A label query over a set
-                                                of resources, in this case pods.
-                                              properties:
-                                                matchExpressions:
-                                                  description: matchExpressions is a
-                                                    list of label selector requirements.
-                                                    The requirements are ANDed.
-                                                  items:
-                                                    description: A label selector requirement
-                                                      is a selector that contains values,
-                                                      a key, and an operator that relates
-                                                      the key and values.
-                                                    properties:
-                                                      key:
-                                                        description: key is the label
-                                                          key that the selector applies
-                                                          to.
-                                                        type: string
-                                                      operator:
-                                                        description: operator represents
-                                                          a key's relationship to a
-                                                          set of values. Valid operators
-                                                          are In, NotIn, Exists and
-                                                          DoesNotExist.
-                                                        type: string
-                                                      values:
-                                                        description: values is an array
-                                                          of string values. If the operator
-                                                          is In or NotIn, the values
-                                                          array must be non-empty. If
-                                                          the operator is Exists or
-                                                          DoesNotExist, the values array
-                                                          must be empty. This array
-                                                          is replaced during a strategic
-                                                          merge patch.
-                                                        items:
-                                                          type: string
-                                                        type: array
-                                                    required:
-                                                      - key
-                                                      - operator
-                                                    type: object
-                                                  type: array
-                                                matchLabels:
-                                                  additionalProperties:
-                                                    type: string
-                                                  description: matchLabels is a map
-                                                    of {key,value} pairs. A single {key,value}
-                                                    in the matchLabels map is equivalent
-                                                    to an element of matchExpressions,
-                                                    whose key field is "key", the operator
-                                                    is "In", and the values array contains
-                                                    only "value". The requirements are
-                                                    ANDed.
-                                                  type: object
-                                              type: object
-                                            namespaces:
-                                              description: namespaces specifies which
-                                                namespaces the labelSelector applies
-                                                to (matches against); null or empty
-                                                list means "this pod's namespace"
-                                              items:
-                                                type: string
-                                              type: array
-                                            topologyKey:
-                                              description: This pod should be co-located
-                                                (affinity) or not co-located (anti-affinity)
-                                                with the pods matching the labelSelector
-                                                in the specified namespaces, where co-located
-                                                is defined as running on a node whose
-                                                value of the label with key topologyKey
-                                                matches that of any node on which any
-                                                of the selected pods is running. Empty
-                                                topologyKey is not allowed.
-                                              type: string
-                                          required:
-                                            - topologyKey
-                                          type: object
-                                        weight:
-                                          description: weight associated with matching
-                                            the corresponding podAffinityTerm, in the
-                                            range 1-100.
-                                          format: int32
-                                          type: integer
-                                      required:
-                                        - podAffinityTerm
-                                        - weight
-                                      type: object
-                                    type: array
-                                  requiredDuringSchedulingIgnoredDuringExecution:
-                                    description: If the affinity requirements specified
-                                      by this field are not met at scheduling time,
-                                      the pod will not be scheduled onto the node. If
-                                      the affinity requirements specified by this field
-                                      cease to be met at some point during pod execution
-                                      (e.g. due to a pod label update), the system may
-                                      or may not try to eventually evict the pod from
-                                      its node. When there are multiple elements, the
-                                      lists of nodes corresponding to each podAffinityTerm
-                                      are intersected, i.e. all terms must be satisfied.
-                                    items:
-                                      description: Defines a set of pods (namely those
-                                        matching the labelSelector relative to the given
-                                        namespace(s)) that this pod should be co-located
-                                        (affinity) or not co-located (anti-affinity)
-                                        with, where co-located is defined as running
-                                        on a node whose value of the label with key
-                                        <topologyKey> matches that of any node on which
-                                        a pod of the set of pods is running
-                                      properties:
-                                        labelSelector:
-                                          description: A label query over a set of resources,
-                                            in this case pods.
-                                          properties:
-                                            matchExpressions:
-                                              description: matchExpressions is a list
-                                                of label selector requirements. The
-                                                requirements are ANDed.
-                                              items:
-                                                description: A label selector requirement
-                                                  is a selector that contains values,
-                                                  a key, and an operator that relates
-                                                  the key and values.
-                                                properties:
-                                                  key:
-                                                    description: key is the label key
-                                                      that the selector applies to.
-                                                    type: string
-                                                  operator:
-                                                    description: operator represents
-                                                      a key's relationship to a set
-                                                      of values. Valid operators are
-                                                      In, NotIn, Exists and DoesNotExist.
-                                                    type: string
-                                                  values:
-                                                    description: values is an array
-                                                      of string values. If the operator
-                                                      is In or NotIn, the values array
-                                                      must be non-empty. If the operator
-                                                      is Exists or DoesNotExist, the
-                                                      values array must be empty. This
-                                                      array is replaced during a strategic
-                                                      merge patch.
-                                                    items:
-                                                      type: string
-                                                    type: array
-                                                required:
-                                                  - key
-                                                  - operator
-                                                type: object
-                                              type: array
-                                            matchLabels:
-                                              additionalProperties:
-                                                type: string
-                                              description: matchLabels is a map of {key,value}
-                                                pairs. A single {key,value} in the matchLabels
-                                                map is equivalent to an element of matchExpressions,
-                                                whose key field is "key", the operator
-                                                is "In", and the values array contains
-                                                only "value". The requirements are ANDed.
-                                              type: object
-                                          type: object
-                                        namespaces:
-                                          description: namespaces specifies which namespaces
-                                            the labelSelector applies to (matches against);
-                                            null or empty list means "this pod's namespace"
+                                        matchExpressions:
+                                          description: A list of node selector requirements
+                                            by node's labels.
                                           items:
-                                            type: string
+                                            description: A node selector requirement
+                                              is a selector that contains values,
+                                              a key, and an operator that relates
+                                              the key and values.
+                                            properties:
+                                              key:
+                                                description: The label key that the
+                                                  selector applies to.
+                                                type: string
+                                              operator:
+                                                description: Represents a key's relationship
+                                                  to a set of values. Valid operators
+                                                  are In, NotIn, Exists, DoesNotExist.
+                                                  Gt, and Lt.
+                                                type: string
+                                              values:
+                                                description: An array of string values.
+                                                  If the operator is In or NotIn,
+                                                  the values array must be non-empty.
+                                                  If the operator is Exists or DoesNotExist,
+                                                  the values array must be empty.
+                                                  If the operator is Gt or Lt, the
+                                                  values array must have a single
+                                                  element, which will be interpreted
+                                                  as an integer. This array is replaced
+                                                  during a strategic merge patch.
+                                                items:
+                                                  type: string
+                                                type: array
+                                            required:
+                                              - key
+                                              - operator
+                                            type: object
                                           type: array
-                                        topologyKey:
-                                          description: This pod should be co-located
-                                            (affinity) or not co-located (anti-affinity)
-                                            with the pods matching the labelSelector
-                                            in the specified namespaces, where co-located
-                                            is defined as running on a node whose value
-                                            of the label with key topologyKey matches
-                                            that of any node on which any of the selected
-                                            pods is running. Empty topologyKey is not
-                                            allowed.
-                                          type: string
-                                      required:
-                                        - topologyKey
-                                      type: object
-                                    type: array
-                                type: object
-                              podAntiAffinity:
-                                description: Describes pod anti-affinity scheduling
-                                  rules (e.g. avoid putting this pod in the same node,
-                                  zone, etc. as some other pod(s)).
-                                properties:
-                                  preferredDuringSchedulingIgnoredDuringExecution:
-                                    description: The scheduler will prefer to schedule
-                                      pods to nodes that satisfy the anti-affinity expressions
-                                      specified by this field, but it may choose a node
-                                      that violates one or more of the expressions.
-                                      The node that is most preferred is the one with
-                                      the greatest sum of weights, i.e. for each node
-                                      that meets all of the scheduling requirements
-                                      (resource request, requiredDuringScheduling anti-affinity
-                                      expressions, etc.), compute a sum by iterating
-                                      through the elements of this field and adding
-                                      "weight" to the sum if the node has pods which
-                                      matches the corresponding podAffinityTerm; the
-                                      node(s) with the highest sum are the most preferred.
-                                    items:
-                                      description: The weights of all of the matched
-                                        WeightedPodAffinityTerm fields are added per-node
-                                        to find the most preferred node(s)
-                                      properties:
-                                        podAffinityTerm:
-                                          description: Required. A pod affinity term,
-                                            associated with the corresponding weight.
-                                          properties:
-                                            labelSelector:
-                                              description: A label query over a set
-                                                of resources, in this case pods.
-                                              properties:
-                                                matchExpressions:
-                                                  description: matchExpressions is a
-                                                    list of label selector requirements.
-                                                    The requirements are ANDed.
-                                                  items:
-                                                    description: A label selector requirement
-                                                      is a selector that contains values,
-                                                      a key, and an operator that relates
-                                                      the key and values.
-                                                    properties:
-                                                      key:
-                                                        description: key is the label
-                                                          key that the selector applies
-                                                          to.
-                                                        type: string
-                                                      operator:
-                                                        description: operator represents
-                                                          a key's relationship to a
-                                                          set of values. Valid operators
-                                                          are In, NotIn, Exists and
-                                                          DoesNotExist.
-                                                        type: string
-                                                      values:
-                                                        description: values is an array
-                                                          of string values. If the operator
-                                                          is In or NotIn, the values
-                                                          array must be non-empty. If
-                                                          the operator is Exists or
-                                                          DoesNotExist, the values array
-                                                          must be empty. This array
-                                                          is replaced during a strategic
-                                                          merge patch.
-                                                        items:
-                                                          type: string
-                                                        type: array
-                                                    required:
-                                                      - key
-                                                      - operator
-                                                    type: object
-                                                  type: array
-                                                matchLabels:
-                                                  additionalProperties:
-                                                    type: string
-                                                  description: matchLabels is a map
-                                                    of {key,value} pairs. A single {key,value}
-                                                    in the matchLabels map is equivalent
-                                                    to an element of matchExpressions,
-                                                    whose key field is "key", the operator
-                                                    is "In", and the values array contains
-                                                    only "value". The requirements are
-                                                    ANDed.
-                                                  type: object
-                                              type: object
-                                            namespaces:
-                                              description: namespaces specifies which
-                                                namespaces the labelSelector applies
-                                                to (matches against); null or empty
-                                                list means "this pod's namespace"
-                                              items:
-                                                type: string
-                                              type: array
-                                            topologyKey:
-                                              description: This pod should be co-located
-                                                (affinity) or not co-located (anti-affinity)
-                                                with the pods matching the labelSelector
-                                                in the specified namespaces, where co-located
-                                                is defined as running on a node whose
-                                                value of the label with key topologyKey
-                                                matches that of any node on which any
-                                                of the selected pods is running. Empty
-                                                topologyKey is not allowed.
-                                              type: string
-                                          required:
-                                            - topologyKey
-                                          type: object
-                                        weight:
-                                          description: weight associated with matching
-                                            the corresponding podAffinityTerm, in the
-                                            range 1-100.
-                                          format: int32
-                                          type: integer
-                                      required:
-                                        - podAffinityTerm
-                                        - weight
-                                      type: object
-                                    type: array
-                                  requiredDuringSchedulingIgnoredDuringExecution:
-                                    description: If the anti-affinity requirements specified
-                                      by this field are not met at scheduling time,
-                                      the pod will not be scheduled onto the node. If
-                                      the anti-affinity requirements specified by this
-                                      field cease to be met at some point during pod
-                                      execution (e.g. due to a pod label update), the
-                                      system may or may not try to eventually evict
-                                      the pod from its node. When there are multiple
-                                      elements, the lists of nodes corresponding to
-                                      each podAffinityTerm are intersected, i.e. all
-                                      terms must be satisfied.
-                                    items:
-                                      description: Defines a set of pods (namely those
-                                        matching the labelSelector relative to the given
-                                        namespace(s)) that this pod should be co-located
-                                        (affinity) or not co-located (anti-affinity)
-                                        with, where co-located is defined as running
-                                        on a node whose value of the label with key
-                                        <topologyKey> matches that of any node on which
-                                        a pod of the set of pods is running
-                                      properties:
-                                        labelSelector:
-                                          description: A label query over a set of resources,
-                                            in this case pods.
-                                          properties:
-                                            matchExpressions:
-                                              description: matchExpressions is a list
-                                                of label selector requirements. The
-                                                requirements are ANDed.
-                                              items:
-                                                description: A label selector requirement
-                                                  is a selector that contains values,
-                                                  a key, and an operator that relates
-                                                  the key and values.
-                                                properties:
-                                                  key:
-                                                    description: key is the label key
-                                                      that the selector applies to.
-                                                    type: string
-                                                  operator:
-                                                    description: operator represents
-                                                      a key's relationship to a set
-                                                      of values. Valid operators are
-                                                      In, NotIn, Exists and DoesNotExist.
-                                                    type: string
-                                                  values:
-                                                    description: values is an array
-                                                      of string values. If the operator
-                                                      is In or NotIn, the values array
-                                                      must be non-empty. If the operator
-                                                      is Exists or DoesNotExist, the
-                                                      values array must be empty. This
-                                                      array is replaced during a strategic
-                                                      merge patch.
-                                                    items:
-                                                      type: string
-                                                    type: array
-                                                required:
-                                                  - key
-                                                  - operator
-                                                type: object
-                                              type: array
-                                            matchLabels:
-                                              additionalProperties:
-                                                type: string
-                                              description: matchLabels is a map of {key,value}
-                                                pairs. A single {key,value} in the matchLabels
-                                                map is equivalent to an element of matchExpressions,
-                                                whose key field is "key", the operator
-                                                is "In", and the values array contains
-                                                only "value". The requirements are ANDed.
-                                              type: object
-                                          type: object
-                                        namespaces:
-                                          description: namespaces specifies which namespaces
-                                            the labelSelector applies to (matches against);
-                                            null or empty list means "this pod's namespace"
+                                        matchFields:
+                                          description: A list of node selector requirements
+                                            by node's fields.
                                           items:
-                                            type: string
+                                            description: A node selector requirement
+                                              is a selector that contains values,
+                                              a key, and an operator that relates
+                                              the key and values.
+                                            properties:
+                                              key:
+                                                description: The label key that the
+                                                  selector applies to.
+                                                type: string
+                                              operator:
+                                                description: Represents a key's relationship
+                                                  to a set of values. Valid operators
+                                                  are In, NotIn, Exists, DoesNotExist.
+                                                  Gt, and Lt.
+                                                type: string
+                                              values:
+                                                description: An array of string values.
+                                                  If the operator is In or NotIn,
+                                                  the values array must be non-empty.
+                                                  If the operator is Exists or DoesNotExist,
+                                                  the values array must be empty.
+                                                  If the operator is Gt or Lt, the
+                                                  values array must have a single
+                                                  element, which will be interpreted
+                                                  as an integer. This array is replaced
+                                                  during a strategic merge patch.
+                                                items:
+                                                  type: string
+                                                type: array
+                                            required:
+                                              - key
+                                              - operator
+                                            type: object
                                           type: array
-                                        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 nodeSelectorTerm, in the
+                                        range 1-100.
+                                      format: int32
+                                      type: integer
+                                  required:
+                                    - preference
+                                    - weight
+                                  type: object
+                                type: array
+                              requiredDuringSchedulingIgnoredDuringExecution:
+                                description: If the affinity requirements specified
+                                  by this field are not met at scheduling time, the
+                                  pod will not be scheduled onto the node. If the
+                                  affinity requirements specified by this field cease
+                                  to be met at some point during pod execution (e.g.
+                                  due to an update), the system may or may not try
+                                  to eventually evict the pod from its node.
+                                properties:
+                                  nodeSelectorTerms:
+                                    description: Required. A list of node selector
+                                      terms. The terms are ORed.
+                                    items:
+                                      description: A null or empty node selector term
+                                        matches no objects. The requirements of them
+                                        are ANDed. The TopologySelectorTerm type implements
+                                        a subset of the NodeSelectorTerm.
+                                      properties:
+                                        matchExpressions:
+                                          description: A list of node selector requirements
+                                            by node's labels.
+                                          items:
+                                            description: A node selector requirement
+                                              is a selector that contains values,
+                                              a key, and an operator that relates
+                                              the key and values.
+                                            properties:
+                                              key:
+                                                description: The label key that the
+                                                  selector applies to.
+                                                type: string
+                                              operator:
+                                                description: Represents a key's relationship
+                                                  to a set of values. Valid operators
+                                                  are In, NotIn, Exists, DoesNotExist.
+                                                  Gt, and Lt.
+                                                type: string
+                                              values:
+                                                description: An array of string values.
+                                                  If the operator is In or NotIn,
+                                                  the values array must be non-empty.
+                                                  If the operator is Exists or DoesNotExist,
+                                                  the values array must be empty.
+                                                  If the operator is Gt or Lt, the
+                                                  values array must have a single
+                                                  element, which will be interpreted
+                                                  as an integer. This array is replaced
+                                                  during a strategic merge patch.
+                                                items:
+                                                  type: string
+                                                type: array
+                                            required:
+                                              - key
+                                              - operator
+                                            type: object
+                                          type: array
+                                        matchFields:
+                                          description: A list of node selector requirements
+                                            by node's fields.
+                                          items:
+                                            description: A node selector requirement
+                                              is a selector that contains values,
+                                              a key, and an operator that relates
+                                              the key and values.
+                                            properties:
+                                              key:
+                                                description: The label key that the
+                                                  selector applies to.
+                                                type: string
+                                              operator:
+                                                description: Represents a key's relationship
+                                                  to a set of values. Valid operators
+                                                  are In, NotIn, Exists, DoesNotExist.
+                                                  Gt, and Lt.
+                                                type: string
+                                              values:
+                                                description: An array of string values.
+                                                  If the operator is In or NotIn,
+                                                  the values array must be non-empty.
+                                                  If the operator is Exists or DoesNotExist,
+                                                  the values array must be empty.
+                                                  If the operator is Gt or Lt, the
+                                                  values array must have a single
+                                                  element, which will be interpreted
+                                                  as an integer. This array is replaced
+                                                  during a strategic merge patch.
+                                                items:
+                                                  type: string
+                                                type: array
+                                            required:
+                                              - key
+                                              - operator
+                                            type: object
+                                          type: array
                                       type: object
                                     type: array
+                                required:
+                                  - nodeSelectorTerms
                                 type: object
                             type: object
-                          baseImage:
+                          podAffinity:
+                            description: Describes pod affinity scheduling rules (e.g.
+                              co-locate this pod in the same node, zone, etc. as some
+                              other pod(s)).
+                            properties:
+                              preferredDuringSchedulingIgnoredDuringExecution:
+                                description: The scheduler will prefer to schedule
+                                  pods to nodes that satisfy the affinity expressions
+                                  specified by this field, but it may choose a node
+                                  that violates one or more of the expressions. The
+                                  node that is most preferred is the one with the
+                                  greatest sum of weights, i.e. for each node that
+                                  meets all of the scheduling requirements (resource
+                                  request, requiredDuringScheduling affinity expressions,
+                                  etc.), compute a sum by iterating through the elements
+                                  of this field and adding "weight" to the sum if
+                                  the node has pods which matches the corresponding
+                                  podAffinityTerm; the node(s) with the highest sum
+                                  are the most preferred.
+                                items:
+                                  description: The weights of all of the matched WeightedPodAffinityTerm
+                                    fields are added per-node to find the most preferred
+                                    node(s)
+                                  properties:
+                                    podAffinityTerm:
+                                      description: Required. A pod affinity term,
+                                        associated with the corresponding weight.
+                                      properties:
+                                        labelSelector:
+                                          description: A label query over a set of
+                                            resources, in this case pods.
+                                          properties:
+                                            matchExpressions:
+                                              description: matchExpressions is a list
+                                                of label selector requirements. The
+                                                requirements are ANDed.
+                                              items:
+                                                description: A label selector requirement
+                                                  is a selector that contains values,
+                                                  a key, and an operator that relates
+                                                  the key and values.
+                                                properties:
+                                                  key:
+                                                    description: key is the label
+                                                      key that the selector applies
+                                                      to.
+                                                    type: string
+                                                  operator:
+                                                    description: operator represents
+                                                      a key's relationship to a set
+                                                      of values. Valid operators are
+                                                      In, NotIn, Exists and DoesNotExist.
+                                                    type: string
+                                                  values:
+                                                    description: values is an array
+                                                      of string values. If the operator
+                                                      is In or NotIn, the values array
+                                                      must be non-empty. If the operator
+                                                      is Exists or DoesNotExist, the
+                                                      values array must be empty.
+                                                      This array is replaced during
+                                                      a strategic merge patch.
+                                                    items:
+                                                      type: string
+                                                    type: array
+                                                required:
+                                                  - key
+                                                  - operator
+                                                type: object
+                                              type: array
+                                            matchLabels:
+                                              additionalProperties:
+                                                type: string
+                                              description: matchLabels is a map of
+                                                {key,value} pairs. A single {key,value}
+                                                in the matchLabels map is equivalent
+                                                to an element of matchExpressions,
+                                                whose key field is "key", the operator
+                                                is "In", and the values array contains
+                                                only "value". The requirements are
+                                                ANDed.
+                                              type: object
+                                          type: object
+                                        namespaces:
+                                          description: namespaces specifies which
+                                            namespaces the labelSelector applies to
+                                            (matches against); null or empty list
+                                            means "this pod's namespace"
+                                          items:
+                                            type: string
+                                          type: array
+                                        topologyKey:
+                                          description: This pod should be co-located
+                                            (affinity) or not co-located (anti-affinity)
+                                            with the pods matching the labelSelector
+                                            in the specified namespaces, where co-located
+                                            is defined as running on a node whose
+                                            value of the label with key topologyKey
+                                            matches that of any node on which any
+                                            of the selected pods is running. Empty
+                                            topologyKey is not allowed.
+                                          type: string
+                                      required:
+                                        - topologyKey
+                                      type: object
+                                    weight:
+                                      description: weight associated with matching
+                                        the corresponding podAffinityTerm, in the
+                                        range 1-100.
+                                      format: int32
+                                      type: integer
+                                  required:
+                                    - podAffinityTerm
+                                    - weight
+                                  type: object
+                                type: array
+                              requiredDuringSchedulingIgnoredDuringExecution:
+                                description: If the affinity requirements specified
+                                  by this field are not met at scheduling time, the
+                                  pod will not be scheduled onto the node. If the
+                                  affinity requirements specified by this field cease
+                                  to be met at some point during pod execution (e.g.
+                                  due to a pod label update), the system may or may
+                                  not try to eventually evict the pod from its node.
+                                  When there are multiple elements, the lists of nodes
+                                  corresponding to each podAffinityTerm are intersected,
+                                  i.e. all terms must be satisfied.
+                                items:
+                                  description: Defines a set of pods (namely those
+                                    matching the labelSelector relative to the given
+                                    namespace(s)) that this pod should be co-located
+                                    (affinity) or not co-located (anti-affinity) with,
+                                    where co-located is defined as running on a node
+                                    whose value of the label with key <topologyKey>
+                                    matches that of any node on which a pod of the
+                                    set of pods is running
+                                  properties:
+                                    labelSelector:
+                                      description: A label query over a set of resources,
+                                        in this case pods.
+                                      properties:
+                                        matchExpressions:
+                                          description: matchExpressions is a list
+                                            of label selector requirements. The requirements
+                                            are ANDed.
+                                          items:
+                                            description: A label selector requirement
+                                              is a selector that contains values,
+                                              a key, and an operator that relates
+                                              the key and values.
+                                            properties:
+                                              key:
+                                                description: key is the label key
+                                                  that the selector applies to.
+                                                type: string
+                                              operator:
+                                                description: operator represents a
+                                                  key's relationship to a set of values.
+                                                  Valid operators are In, NotIn, Exists
+                                                  and DoesNotExist.
+                                                type: string
+                                              values:
+                                                description: values is an array of
+                                                  string values. If the operator is
+                                                  In or NotIn, the values array must
+                                                  be non-empty. If the operator is
+                                                  Exists or DoesNotExist, the values
+                                                  array must be empty. This array
+                                                  is replaced during a strategic merge
+                                                  patch.
+                                                items:
+                                                  type: string
+                                                type: array
+                                            required:
+                                              - key
+                                              - operator
+                                            type: object
+                                          type: array
+                                        matchLabels:
+                                          additionalProperties:
+                                            type: string
+                                          description: matchLabels is a map of {key,value}
+                                            pairs. A single {key,value} in the matchLabels
+                                            map is equivalent to an element of matchExpressions,
+                                            whose key field is "key", the operator
+                                            is "In", and the values array contains
+                                            only "value". The requirements are ANDed.
+                                          type: object
+                                      type: object
+                                    namespaces:
+                                      description: namespaces specifies which namespaces
+                                        the labelSelector applies to (matches against);
+                                        null or empty list means "this pod's namespace"
+                                      items:
+                                        type: string
+                                      type: array
+                                    topologyKey:
+                                      description: This pod should be co-located (affinity)
+                                        or not co-located (anti-affinity) with the
+                                        pods matching the labelSelector in the specified
+                                        namespaces, where co-located is defined as
+                                        running on a node whose value of the label
+                                        with key topologyKey matches that of any node
+                                        on which any of the selected pods is running.
+                                        Empty topologyKey is not allowed.
+                                      type: string
+                                  required:
+                                    - topologyKey
+                                  type: object
+                                type: array
+                            type: object
+                          podAntiAffinity:
+                            description: Describes pod anti-affinity scheduling rules
+                              (e.g. avoid putting this pod in the same node, zone,
+                              etc. as some other pod(s)).
+                            properties:
+                              preferredDuringSchedulingIgnoredDuringExecution:
+                                description: The scheduler will prefer to schedule
+                                  pods to nodes that satisfy the anti-affinity expressions
+                                  specified by this field, but it may choose a node
+                                  that violates one or more of the expressions. The
+                                  node that is most preferred is the one with the
+                                  greatest sum of weights, i.e. for each node that
+                                  meets all of the scheduling requirements (resource
+                                  request, requiredDuringScheduling anti-affinity
+                                  expressions, etc.), compute a sum by iterating through
+                                  the elements of this field and adding "weight" to
+                                  the sum if the node has pods which matches the corresponding
+                                  podAffinityTerm; the node(s) with the highest sum
+                                  are the most preferred.
+                                items:
+                                  description: The weights of all of the matched WeightedPodAffinityTerm
+                                    fields are added per-node to find the most preferred
+                                    node(s)
+                                  properties:
+                                    podAffinityTerm:
+                                      description: Required. A pod affinity term,
+                                        associated with the corresponding weight.
+                                      properties:
+                                        labelSelector:
+                                          description: A label query over a set of
+                                            resources, in this case pods.
+                                          properties:
+                                            matchExpressions:
+                                              description: matchExpressions is a list
+                                                of label selector requirements. The
+                                                requirements are ANDed.
+                                              items:
+                                                description: A label selector requirement
+                                                  is a selector that contains values,
+                                                  a key, and an operator that relates
+                                                  the key and values.
+                                                properties:
+                                                  key:
+                                                    description: key is the label
+                                                      key that the selector applies
+                                                      to.
+                                                    type: string
+                                                  operator:
+                                                    description: operator represents
+                                                      a key's relationship to a set
+                                                      of values. Valid operators are
+                                                      In, NotIn, Exists and DoesNotExist.
+                                                    type: string
+                                                  values:
+                                                    description: values is an array
+                                                      of string values. If the operator
+                                                      is In or NotIn, the values array
+                                                      must be non-empty. If the operator
+                                                      is Exists or DoesNotExist, the
+                                                      values array must be empty.
+                                                      This array is replaced during
+                                                      a strategic merge patch.
+                                                    items:
+                                                      type: string
+                                                    type: array
+                                                required:
+                                                  - key
+                                                  - operator
+                                                type: object
+                                              type: array
+                                            matchLabels:
+                                              additionalProperties:
+                                                type: string
+                                              description: matchLabels is a map of
+                                                {key,value} pairs. A single {key,value}
+                                                in the matchLabels map is equivalent
+                                                to an element of matchExpressions,
+                                                whose key field is "key", the operator
+                                                is "In", and the values array contains
+                                                only "value". The requirements are
+                                                ANDed.
+                                              type: object
+                                          type: object
+                                        namespaces:
+                                          description: namespaces specifies which
+                                            namespaces the labelSelector applies to
+                                            (matches against); null or empty list
+                                            means "this pod's namespace"
+                                          items:
+                                            type: string
+                                          type: array
+                                        topologyKey:
+                                          description: This pod should be co-located
+                                            (affinity) or not co-located (anti-affinity)
+                                            with the pods matching the labelSelector
+                                            in the specified namespaces, where co-located
+                                            is defined as running on a node whose
+                                            value of the label with key topologyKey
+                                            matches that of any node on which any
+                                            of the selected pods is running. Empty
+                                            topologyKey is not allowed.
+                                          type: string
+                                      required:
+                                        - topologyKey
+                                      type: object
+                                    weight:
+                                      description: weight associated with matching
+                                        the corresponding podAffinityTerm, in the
+                                        range 1-100.
+                                      format: int32
+                                      type: integer
+                                  required:
+                                    - podAffinityTerm
+                                    - weight
+                                  type: object
+                                type: array
+                              requiredDuringSchedulingIgnoredDuringExecution:
+                                description: If the anti-affinity requirements specified
+                                  by this field are not met at scheduling time, the
+                                  pod will not be scheduled onto the node. If the
+                                  anti-affinity requirements specified by this field
+                                  cease to be met at some point during pod execution
+                                  (e.g. due to a pod label update), the system may
+                                  or may not try to eventually evict the pod from
+                                  its node. When there are multiple elements, the
+                                  lists of nodes corresponding to each podAffinityTerm
+                                  are intersected, i.e. all terms must be satisfied.
+                                items:
+                                  description: Defines a set of pods (namely those
+                                    matching the labelSelector relative to the given
+                                    namespace(s)) that this pod should be co-located
+                                    (affinity) or not co-located (anti-affinity) with,
+                                    where co-located is defined as running on a node
+                                    whose value of the label with key <topologyKey>
+                                    matches that of any node on which a pod of the
+                                    set of pods is running
+                                  properties:
+                                    labelSelector:
+                                      description: A label query over a set of resources,
+                                        in this case pods.
+                                      properties:
+                                        matchExpressions:
+                                          description: matchExpressions is a list
+                                            of label selector requirements. The requirements
+                                            are ANDed.
+                                          items:
+                                            description: A label selector requirement
+                                              is a selector that contains values,
+                                              a key, and an operator that relates
+                                              the key and values.
+                                            properties:
+                                              key:
+                                                description: key is the label key
+                                                  that the selector applies to.
+                                                type: string
+                                              operator:
+                                                description: operator represents a
+                                                  key's relationship to a set of values.
+                                                  Valid operators are In, NotIn, Exists
+                                                  and DoesNotExist.
+                                                type: string
+                                              values:
+                                                description: values is an array of
+                                                  string values. If the operator is
+                                                  In or NotIn, the values array must
+                                                  be non-empty. If the operator is
+                                                  Exists or DoesNotExist, the values
+                                                  array must be empty. This array
+                                                  is replaced during a strategic merge
+                                                  patch.
+                                                items:
+                                                  type: string
+                                                type: array
+                                            required:
+                                              - key
+                                              - operator
+                                            type: object
+                                          type: array
+                                        matchLabels:
+                                          additionalProperties:
+                                            type: string
+                                          description: matchLabels is a map of {key,value}
+                                            pairs. A single {key,value} in the matchLabels
+                                            map is equivalent to an element of matchExpressions,
+                                            whose key field is "key", the operator
+                                            is "In", and the values array contains
+                                            only "value". The requirements are ANDed.
+                                          type: object
+                                      type: object
+                                    namespaces:
+                                      description: namespaces specifies which namespaces
+                                        the labelSelector applies to (matches against);
+                                        null or empty list means "this pod's namespace"
+                                      items:
+                                        type: string
+                                      type: array
+                                    topologyKey:
+                                      description: This pod should be co-located (affinity)
+                                        or not co-located (anti-affinity) with the
+                                        pods matching the labelSelector in the specified
+                                        namespaces, where co-located is defined as
+                                        running on a node whose value of the label
+                                        with key topologyKey matches that of any node
+                                        on which any of the selected pods is running.
+                                        Empty topologyKey is not allowed.
+                                      type: string
+                                  required:
+                                    - topologyKey
+                                  type: object
+                                type: array
+                            type: object
+                        type: object
+                      baseImage:
+                        type: string
+                      buildDir:
+                        type: string
+                      dependencies:
+                        items:
+                          type: string
+                        type: array
+                      image:
+                        type: string
+                      maven:
+                        description: MavenSpec --
+                        properties:
+                          localRepository:
                             type: string
-                          buildDir:
+                          settings:
+                            description: ValueSource --
+                            properties:
+                              configMapKeyRef:
+                                description: Selects a key of a ConfigMap.
+                                properties:
+                                  key:
+                                    description: The key to select.
+                                    type: string
+                                  name:
+                                    description: 'Name of the referent. More info:
+                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                      TODO: Add other useful fields. apiVersion, kind,
+                                      uid?'
+                                    type: string
+                                  optional:
+                                    description: Specify whether the ConfigMap or
+                                      its key must be defined
+                                    type: boolean
+                                required:
+                                  - key
+                                type: object
+                              secretKeyRef:
+                                description: 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:
+                                    description: 'Name of the referent. More info:
+                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                      TODO: Add other useful fields. apiVersion, kind,
+                                      uid?'
+                                    type: string
+                                  optional:
+                                    description: Specify whether the Secret or its
+                                      key must be defined
+                                    type: boolean
+                                required:
+                                  - key
+                                type: object
+                            type: object
+                          timeout:
                             type: string
+                        type: object
+                      meta:
+                        description: This is required until https://github.com/kubernetes-sigs/controller-tools/pull/395
+                          gets merged
+                        type: object
+                        x-kubernetes-preserve-unknown-fields: true
+                      name:
+                        type: string
+                      properties:
+                        additionalProperties:
+                          type: string
+                        type: object
+                      resources:
+                        items:
+                          description: ResourceSpec --
+                          properties:
+                            compression:
+                              type: boolean
+                            content:
+                              type: string
+                            contentKey:
+                              type: string
+                            contentRef:
+                              type: string
+                            mountPath:
+                              type: string
+                            name:
+                              type: string
+                            type:
+                              description: ResourceType --
+                              type: string
+                          type: object
+                        type: array
+                      runtime:
+                        description: RuntimeSpec --
+                        properties:
+                          applicationClass:
+                            type: string
+                          capabilities:
+                            additionalProperties:
+                              description: Capability --
+                              properties:
+                                dependencies:
+                                  items:
+                                    description: MavenArtifact --
+                                    properties:
+                                      artifactId:
+                                        type: string
+                                      groupId:
+                                        type: string
+                                      version:
+                                        type: string
+                                    required:
+                                      - artifactId
+                                      - groupId
+                                    type: object
+                                  type: array
+                                metadata:
+                                  additionalProperties:
+                                    type: string
+                                  type: object
+                              required:
+                                - dependencies
+                              type: object
+                            type: object
                           dependencies:
                             items:
-                              type: string
+                              description: MavenArtifact --
+                              properties:
+                                artifactId:
+                                  type: string
+                                groupId:
+                                  type: string
+                                version:
+                                  type: string
+                              required:
+                                - artifactId
+                                - groupId
+                              type: object
                             type: array
-                          image:
-                            type: string
-                          maven:
-                            description: MavenSpec --
-                            properties:
-                              localRepository:
-                                type: string
-                              settings:
-                                description: ValueSource --
-                                properties:
-                                  configMapKeyRef:
-                                    description: Selects a key of a ConfigMap.
-                                    properties:
-                                      key:
-                                        description: The key to select.
-                                        type: string
-                                      name:
-                                        description: 'Name of the referent. More info:
-                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                        TODO: Add other useful fields. apiVersion,
-                                        kind, uid?'
-                                        type: string
-                                      optional:
-                                        description: Specify whether the ConfigMap or
-                                          its key must be defined
-                                        type: boolean
-                                    required:
-                                      - key
-                                    type: object
-                                  secretKeyRef:
-                                    description: 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:
-                                        description: 'Name of the referent. More info:
-                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                        TODO: Add other useful fields. apiVersion,
-                                        kind, uid?'
-                                        type: string
-                                      optional:
-                                        description: Specify whether the Secret or its
-                                          key must be defined
-                                        type: boolean
-                                    required:
-                                      - key
-                                    type: object
-                                type: object
-                              timeout:
-                                type: string
-                            type: object
-                          meta:
-                            type: object
-                            x-kubernetes-preserve-unknown-fields: true
-                          name:
-                            type: string
-                          properties:
+                          metadata:
                             additionalProperties:
                               type: string
                             type: object
-                          resources:
-                            items:
-                              description: ResourceSpec --
+                          provider:
+                            description: RuntimeProvider --
+                            type: string
+                          version:
+                            type: string
+                        required:
+                          - applicationClass
+                          - dependencies
+                          - provider
+                          - version
+                        type: object
+                      sources:
+                        items:
+                          description: SourceSpec --
+                          properties:
+                            compression:
+                              type: boolean
+                            content:
+                              type: string
+                            contentKey:
+                              type: string
+                            contentRef:
+                              type: string
+                            interceptors:
+                              description: Interceptors are optional identifiers the
+                                org.apache.camel.k.RoutesLoader uses to pre/post process
+                                sources
+                              items:
+                                type: string
+                              type: array
+                            language:
+                              description: Language --
+                              type: string
+                            loader:
+                              description: Loader is an optional id of the org.apache.camel.k.RoutesLoader
+                                that will interpret this source at runtime
+                              type: string
+                            name:
+                              type: string
+                          type: object
+                        type: array
+                      steps:
+                        items:
+                          type: string
+                        type: array
+                      timeout:
+                        type: string
+                      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.
+                              type: string
+                            name:
+                              description: This must match the Name of a Volume.
+                              type: string
+                            readOnly:
+                              description: Mounted read-only if true, read-write otherwise
+                                (false or unspecified). Defaults to false.
+                              type: boolean
+                            subPath:
+                              description: Path within the volume from which the container's
+                                volume should be mounted. Defaults to "" (volume's
+                                root).
+                              type: string
+                            subPathExpr:
+                              description: Expanded path within the volume from which
+                                the container's volume should be mounted. Behaves
+                                similarly to SubPath but environment variable references
+                                $(VAR_NAME) are expanded using the container's environment.
+                                Defaults to "" (volume's root). SubPathExpr and SubPath
+                                are mutually exclusive.
+                              type: string
+                          required:
+                            - mountPath
+                            - name
+                          type: object
+                        type: array
+                      volumes:
+                        items:
+                          description: Volume represents a named volume in a pod that
+                            may be accessed by any container in the pod.
+                          properties:
+                            awsElasticBlockStore:
+                              description: 'AWSElasticBlockStore represents an AWS
+                                Disk resource that is attached to a kubelet''s host
+                                machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
                               properties:
-                                compression:
+                                fsType:
+                                  description: 'Filesystem type of the volume that
+                                    you want to mount. Tip: Ensure that the filesystem
+                                    type is supported by the host operating system.
+                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred
+                                    to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
+                                    TODO: how do we prevent errors in the filesystem
+                                    from compromising the machine'
+                                  type: string
+                                partition:
+                                  description: 'The partition in the volume that you
+                                    want to mount. If omitted, the default is to mount
+                                    by volume name. Examples: For volume /dev/sda1,
+                                    you specify the partition as "1". Similarly, the
+                                    volume partition for /dev/sda is "0" (or you can
+                                    leave the property empty).'
+                                  format: int32
+                                  type: integer
+                                readOnly:
+                                  description: 'Specify "true" to force and set the
+                                    ReadOnly property in VolumeMounts to "true". If
+                                    omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
                                   type: boolean
-                                content:
+                                volumeID:
+                                  description: 'Unique ID of the persistent disk resource
+                                    in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
                                   type: string
-                                contentKey:
-                                  type: string
-                                contentRef:
-                                  type: string
-                                mountPath:
-                                  type: string
-                                name:
-                                  type: string
-                                type:
-                                  description: ResourceType --
-                                  type: string
+                              required:
+                                - volumeID
                               type: object
-                            type: array
-                          runtime:
-                            description: RuntimeSpec --
-                            properties:
-                              applicationClass:
-                                type: string
-                              capabilities:
-                                additionalProperties:
-                                  description: Capability --
-                                  properties:
-                                    dependencies:
-                                      items:
-                                        description: MavenArtifact --
-                                        properties:
-                                          artifactId:
-                                            type: string
-                                          groupId:
-                                            type: string
-                                          version:
-                                            type: string
-                                        required:
-                                          - artifactId
-                                          - groupId
-                                        type: object
-                                      type: array
-                                    metadata:
-                                      additionalProperties:
-                                        type: string
-                                      type: object
-                                  required:
-                                    - dependencies
-                                  type: object
-                                type: object
-                              dependencies:
-                                items:
-                                  description: MavenArtifact --
-                                  properties:
-                                    artifactId:
-                                      type: string
-                                    groupId:
-                                      type: string
-                                    version:
-                                      type: string
-                                  required:
-                                    - artifactId
-                                    - groupId
-                                  type: object
-                                type: array
-                              metadata:
-                                additionalProperties:
-                                  type: string
-                                type: object
-                              provider:
-                                description: RuntimeProvider --
-                                type: string
-                              version:
-                                type: string
-                            required:
-                              - applicationClass
-                              - dependencies
-                              - provider
-                              - version
-                            type: object
-                          sources:
-                            items:
-                              description: SourceSpec --
+                            azureDisk:
+                              description: AzureDisk represents an Azure Data Disk
+                                mount on the host and bind mount to the pod.
                               properties:
-                                compression:
+                                cachingMode:
+                                  description: 'Host Caching mode: None, Read Only,
+                                    Read Write.'
+                                  type: string
+                                diskName:
+                                  description: The Name of the data disk in the blob
+                                    storage
+                                  type: string
+                                diskURI:
+                                  description: The URI the data disk in the blob storage
+                                  type: string
+                                fsType:
+                                  description: Filesystem type to mount. Must be a
+                                    filesystem type supported by the host operating
+                                    system. Ex. "ext4", "xfs", "ntfs". Implicitly
+                                    inferred to be "ext4" if unspecified.
+                                  type: string
+                                kind:
+                                  description: 'Expected values Shared: multiple blob
+                                    disks per storage account  Dedicated: single blob
+                                    disk per storage account  Managed: azure managed
+                                    data disk (only in managed availability set).
+                                    defaults to shared'
+                                  type: string
+                                readOnly:
+                                  description: Defaults to false (read/write). ReadOnly
+                                    here will force the ReadOnly setting in VolumeMounts.
                                   type: boolean
-                                content:
+                              required:
+                                - diskName
+                                - diskURI
+                              type: object
+                            azureFile:
+                              description: AzureFile represents an Azure File Service
+                                mount on the host and bind mount to the pod.
+                              properties:
+                                readOnly:
+                                  description: Defaults to false (read/write). ReadOnly
+                                    here will force the ReadOnly setting in VolumeMounts.
+                                  type: boolean
+                                secretName:
+                                  description: the name of secret that contains Azure
+                                    Storage Account Name and Key
                                   type: string
-                                contentKey:
+                                shareName:
+                                  description: Share Name
                                   type: string
-                                contentRef:
-                                  type: string
-                                interceptors:
-                                  description: Interceptors are optional identifiers
-                                    the org.apache.camel.k.RoutesLoader uses to pre/post
-                                    process sources
+                              required:
+                                - secretName
+                                - shareName
+                              type: object
+                            cephfs:
+                              description: CephFS represents a Ceph FS mount on the
+                                host that shares a pod's lifetime
+                              properties:
+                                monitors:
+                                  description: 'Required: Monitors is a collection
+                                    of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
                                   items:
                                     type: string
                                   type: array
-                                language:
-                                  description: Language --
-                                  type: string
-                                loader:
-                                  description: Loader is an optional id of the org.apache.camel.k.RoutesLoader
-                                    that will interpret this source at runtime
-                                  type: string
-                                name:
-                                  type: string
-                              type: object
-                            type: array
-                          steps:
-                            items:
-                              type: string
-                            type: array
-                          timeout:
-                            type: string
-                          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.
-                                  type: string
-                                name:
-                                  description: This must match the Name of a Volume.
+                                path:
+                                  description: 'Optional: Used as the mounted root,
+                                    rather than the full Ceph tree, default is /'
                                   type: string
                                 readOnly:
-                                  description: Mounted read-only if true, read-write
-                                    otherwise (false or unspecified). Defaults to false.
+                                  description: 'Optional: Defaults to false (read/write).
+                                    ReadOnly here will force the ReadOnly setting
+                                    in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
                                   type: boolean
-                                subPath:
-                                  description: Path within the volume from which the
-                                    container's volume should be mounted. Defaults to
-                                    "" (volume's root).
+                                secretFile:
+                                  description: 'Optional: SecretFile is the path to
+                                    key ring for User, default is /etc/ceph/user.secret
+                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
                                   type: string
-                                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
-                          volumes:
-                            items:
-                              description: Volume represents a named volume in a pod
-                                that may be accessed by any container in the pod.
-                              properties:
-                                awsElasticBlockStore:
-                                  description: 'AWSElasticBlockStore represents an AWS
-                                  Disk resource that is attached to a kubelet''s host
-                                  machine and then exposed to the pod. More info:
-                                  https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+                                secretRef:
+                                  description: 'Optional: SecretRef is reference to
+                                    the authentication secret for User, default is
+                                    empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
                                   properties:
-                                    fsType:
-                                      description: 'Filesystem type of the volume that
-                                      you want to mount. Tip: Ensure that the filesystem
-                                      type is supported by the host operating system.
-                                      Examples: "ext4", "xfs", "ntfs". Implicitly
-                                      inferred to be "ext4" if unspecified. More info:
-                                      https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
-                                      TODO: how do we prevent errors in the filesystem
-                                      from compromising the machine'
-                                      type: string
-                                    partition:
-                                      description: 'The partition in the volume that
-                                      you want to mount. If omitted, the default is
-                                      to mount by volume name. Examples: For volume
-                                      /dev/sda1, you specify the partition as "1".
-                                      Similarly, the volume partition for /dev/sda
-                                      is "0" (or you can leave the property empty).'
-                                      format: int32
-                                      type: integer
-                                    readOnly:
-                                      description: 'Specify "true" to force and set
-                                      the ReadOnly property in VolumeMounts to "true".
-                                      If omitted, the default is "false". More info:
-                                      https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
-                                      type: boolean
-                                    volumeID:
-                                      description: 'Unique ID of the persistent disk
-                                      resource in AWS (Amazon EBS volume). More info:
-                                      https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
-                                      type: string
-                                  required:
-                                    - volumeID
-                                  type: object
-                                azureDisk:
-                                  description: AzureDisk represents an Azure Data Disk
-                                    mount on the host and bind mount to the pod.
-                                  properties:
-                                    cachingMode:
-                                      description: 'Host Caching mode: None, Read Only,
-                                      Read Write.'
-                                      type: string
-                                    diskName:
-                                      description: The Name of the data disk in the
-                                        blob storage
-                                      type: string
-                                    diskURI:
-                                      description: The URI the data disk in the blob
-                                        storage
-                                      type: string
-                                    fsType:
-                                      description: Filesystem type to mount. Must be
-                                        a filesystem type supported by the host operating
-                                        system. Ex. "ext4", "xfs", "ntfs". Implicitly
-                                        inferred to be "ext4" if unspecified.
-                                      type: string
-                                    kind:
-                                      description: 'Expected values Shared: multiple
-                                      blob disks per storage account  Dedicated: single
-                                      blob disk per storage account  Managed: azure
-                                      managed data disk (only in managed availability
-                                      set). defaults to shared'
-                                      type: string
-                                    readOnly:
-                                      description: Defaults to false (read/write). ReadOnly
-                                        here will force the ReadOnly setting in VolumeMounts.
-                                      type: boolean
-                                  required:
-                                    - diskName
-                                    - diskURI
-                                  type: object
-                                azureFile:
-                                  description: AzureFile represents an Azure File Service
-                                    mount on the host and bind mount to the pod.
-                                  properties:
-                                    readOnly:
-                                      description: Defaults to false (read/write). ReadOnly
-                                        here will force the ReadOnly setting in VolumeMounts.
-                                      type: boolean
-                                    secretName:
-                                      description: the name of secret that contains
-                                        Azure Storage Account Name and Key
-                                      type: string
-                                    shareName:
-                                      description: Share Name
-                                      type: string
-                                  required:
-                                    - secretName
-                                    - shareName
-                                  type: object
-                                cephfs:
-                                  description: CephFS represents a Ceph FS mount on
-                                    the host that shares a pod's lifetime
-                                  properties:
-                                    monitors:
-                                      description: 'Required: Monitors is a collection
-                                      of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
-                                      items:
-                                        type: string
-                                      type: array
-                                    path:
-                                      description: 'Optional: Used as the mounted root,
-                                      rather than the full Ceph tree, default is /'
-                                      type: string
-                                    readOnly:
-                                      description: 'Optional: Defaults to false (read/write).
-                                      ReadOnly here will force the ReadOnly setting
-                                      in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
-                                      type: boolean
-                                    secretFile:
-                                      description: 'Optional: SecretFile is the path
-                                      to key ring for User, default is /etc/ceph/user.secret
-                                      More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
-                                      type: string
-                                    secretRef:
-                                      description: 'Optional: SecretRef is reference
-                                      to the authentication secret for User, default
-                                      is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
-                                      properties:
-                                        name:
-                                          description: 'Name of the referent. More info:
-                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                          TODO: Add other useful fields. apiVersion,
-                                          kind, uid?'
-                                          type: string
-                                      type: object
-                                    user:
-                                      description: 'Optional: User is the rados user
-                                      name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
-                                      type: string
-                                  required:
-                                    - monitors
-                                  type: object
-                                cinder:
-                                  description: 'Cinder represents a cinder volume attached
-                                  and mounted on kubelets host machine. More info:
-                                  https://examples.k8s.io/mysql-cinder-pd/README.md'
-                                  properties:
-                                    fsType:
-                                      description: 'Filesystem type to mount. Must be
-                                      a filesystem type supported by the host operating
-                                      system. Examples: "ext4", "xfs", "ntfs". Implicitly
-                                      inferred to be "ext4" if unspecified. More info:
-                                      https://examples.k8s.io/mysql-cinder-pd/README.md'
-                                      type: string
-                                    readOnly:
-                                      description: 'Optional: Defaults to false (read/write).
-                                      ReadOnly here will force the ReadOnly setting
-                                      in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
-                                      type: boolean
-                                    secretRef:
-                                      description: 'Optional: points to a secret object
-                                      containing parameters used to connect to OpenStack.'
-                                      properties:
-                                        name:
-                                          description: 'Name of the referent. More info:
-                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                          TODO: Add other useful fields. apiVersion,
-                                          kind, uid?'
-                                          type: string
-                                      type: object
-                                    volumeID:
-                                      description: 'volume id used to identify the volume
-                                      in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
-                                      type: string
-                                  required:
-                                    - volumeID
-                                  type: object
-                                configMap:
-                                  description: ConfigMap represents a configMap that
-                                    should populate this volume
-                                  properties:
-                                    defaultMode:
-                                      description: 'Optional: mode bits to use on created
-                                      files by default. Must be a value between 0
-                                      and 0777. Defaults to 0644. Directories within
-                                      the path are not affected by this setting. This
-                                      might be in conflict with other options that
-                                      affect the file mode, like fsGroup, and the
-                                      result can be other mode bits set.'
-                                      format: int32
-                                      type: integer
-                                    items:
-                                      description: If unspecified, each key-value pair
-                                        in the Data field of the referenced ConfigMap
-                                        will be projected into the volume as a file
-                                        whose name is the key and content is the value.
-                                        If specified, the listed keys will be projected
-                                        into the specified paths, and unlisted keys
-                                        will not be present. If a key is specified which
-                                        is not present in the ConfigMap, the volume
-                                        setup will error unless it is marked optional.
-                                        Paths must be relative and may not contain the
-                                        '..' path or start with '..'.
-                                      items:
-                                        description: Maps a string key to a path within
-                                          a volume.
-                                        properties:
-                                          key:
-                                            description: The key to project.
-                                            type: string
-                                          mode:
-                                            description: 'Optional: mode bits to use
-                                            on this file, must be a value between
-                                            0 and 0777. If not specified, the volume
-                                            defaultMode will be used. This might be
-                                            in conflict with other options that affect
-                                            the file mode, like fsGroup, and the result
-                                            can be other mode bits set.'
-                                            format: int32
-                                            type: integer
-                                          path:
-                                            description: The relative path of the file
-                                              to map the key to. May not be an absolute
-                                              path. May not contain the path element
-                                              '..'. May not start with the string '..'.
-                                            type: string
-                                        required:
-                                          - key
-                                          - path
-                                        type: object
-                                      type: array
                                     name:
                                       description: 'Name of the referent. More info:
-                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                      TODO: Add other useful fields. apiVersion, kind,
-                                      uid?'
-                                      type: string
-                                    optional:
-                                      description: Specify whether the ConfigMap or
-                                        its keys must be defined
-                                      type: boolean
-                                  type: object
-                                csi:
-                                  description: CSI (Container Storage Interface) represents
-                                    storage that is handled by an external CSI driver
-                                    (Alpha feature).
-                                  properties:
-                                    driver:
-                                      description: Driver is the name of the CSI driver
-                                        that handles this volume. Consult with your
-                                        admin for the correct name as registered in
-                                        the cluster.
-                                      type: string
-                                    fsType:
-                                      description: Filesystem type to mount. Ex. "ext4",
-                                        "xfs", "ntfs". If not provided, the empty value
-                                        is passed to the associated CSI driver which
-                                        will determine the default filesystem to apply.
-                                      type: string
-                                    nodePublishSecretRef:
-                                      description: NodePublishSecretRef is a reference
-                                        to the secret object containing sensitive information
-                                        to pass to the CSI driver to complete the CSI
-                                        NodePublishVolume and NodeUnpublishVolume calls.
-                                        This field is optional, and  may be empty if
-                                        no secret is required. If the secret object
-                                        contains more than one secret, all secret references
-                                        are passed.
-                                      properties:
-                                        name:
-                                          description: 'Name of the referent. More info:
-                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                          TODO: Add other useful fields. apiVersion,
-                                          kind, uid?'
-                                          type: string
-                                      type: object
-                                    readOnly:
-                                      description: Specifies a read-only configuration
-                                        for the volume. Defaults to false (read/write).
-                                      type: boolean
-                                    volumeAttributes:
-                                      additionalProperties:
-                                        type: string
-                                      description: VolumeAttributes stores driver-specific
-                                        properties that are passed to the CSI driver.
-                                        Consult your driver's documentation for supported
-                                        values.
-                                      type: object
-                                  required:
-                                    - driver
-                                  type: object
-                                downwardAPI:
-                                  description: DownwardAPI represents downward API about
-                                    the pod that should populate this volume
-                                  properties:
-                                    defaultMode:
-                                      description: 'Optional: mode bits to use on created
-                                      files by default. Must be a value between 0
-                                      and 0777. Defaults to 0644. Directories within
-                                      the path are not affected by this setting. This
-                                      might be in conflict with other options that
-                                      affect the file mode, like fsGroup, and the
-                                      result can be other mode bits set.'
-                                      format: int32
-                                      type: integer
-                                    items:
-                                      description: Items is a list of downward API volume
-                                        file
-                                      items:
-                                        description: DownwardAPIVolumeFile represents
-                                          information to create the file containing
-                                          the pod field
-                                        properties:
-                                          fieldRef:
-                                            description: 'Required: Selects a field
-                                            of the pod: only annotations, labels,
-                                            name and namespace are supported.'
-                                            properties:
-                                              apiVersion:
-                                                description: Version of the schema the
-                                                  FieldPath is written in terms of,
-                                                  defaults to "v1".
-                                                type: string
-                                              fieldPath:
-                                                description: Path of the field to select
-                                                  in the specified API version.
-                                                type: string
-                                            required:
-                                              - fieldPath
-                                            type: object
-                                          mode:
-                                            description: 'Optional: mode bits to use
-                                            on this file, must be a value between
-                                            0 and 0777. If not specified, the volume
-                                            defaultMode will be used. This might be
-                                            in conflict with other options that affect
-                                            the file mode, like fsGroup, and the result
-                                            can be other mode bits set.'
-                                            format: int32
-                                            type: integer
-                                          path:
-                                            description: 'Required: Path is  the relative
-                                            path name of the file to be created. Must
-                                            not be absolute or contain the ''..''
-                                            path. Must be utf-8 encoded. The first
-                                            item of the relative path must not start
-                                            with ''..'''
-                                            type: string
-                                          resourceFieldRef:
-                                            description: 'Selects a resource of the
-                                            container: only resources limits and requests
-                                            (limits.cpu, limits.memory, requests.cpu
-                                            and requests.memory) are currently supported.'
-                                            properties:
-                                              containerName:
-                                                description: 'Container name: required
-                                                for volumes, optional for env vars'
-                                                type: string
-                                              divisor:
-                                                anyOf:
-                                                  - type: integer
-                                                  - type: string
-                                                description: Specifies the output format
-                                                  of the exposed resources, defaults
-                                                  to "1"
-                                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
-                                                x-kubernetes-int-or-string: true
-                                              resource:
-                                                description: 'Required: resource to
-                                                select'
-                                                type: string
-                                            required:
-                                              - resource
-                                            type: object
-                                        required:
-                                          - path
-                                        type: object
-                                      type: array
-                                  type: object
-                                emptyDir:
-                                  description: 'EmptyDir represents a temporary directory
-                                  that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
-                                  properties:
-                                    medium:
-                                      description: 'What type of storage medium should
-                                      back this directory. The default is "" which
-                                      means to use the node''s default medium. Must
-                                      be an empty string (default) or Memory. More
-                                      info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
-                                      type: string
-                                    sizeLimit:
-                                      anyOf:
-                                        - type: integer
-                                        - type: string
-                                      description: 'Total amount of local storage required
-                                      for this EmptyDir volume. The size limit is
-                                      also applicable for memory medium. The maximum
-                                      usage on memory medium EmptyDir would be the
-                                      minimum value between the SizeLimit specified
-                                      here and the sum of memory limits of all containers
-                                      in a pod. The default is nil which means that
-                                      the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir'
-                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
-                                      x-kubernetes-int-or-string: true
-                                  type: object
-                                fc:
-                                  description: FC represents a Fibre Channel resource
-                                    that is attached to a kubelet's host machine and
-                                    then exposed to the pod.
-                                  properties:
-                                    fsType:
-                                      description: 'Filesystem type to mount. Must be
-                                      a filesystem type supported by the host operating
-                                      system. Ex. "ext4", "xfs", "ntfs". Implicitly
-                                      inferred to be "ext4" if unspecified. TODO:
-                                      how do we prevent errors in the filesystem from
-                                      compromising the machine'
-                                      type: string
-                                    lun:
-                                      description: 'Optional: FC target lun number'
-                                      format: int32
-                                      type: integer
-                                    readOnly:
-                                      description: 'Optional: Defaults to false (read/write).
-                                      ReadOnly here will force the ReadOnly setting
-                                      in VolumeMounts.'
-                                      type: boolean
-                                    targetWWNs:
-                                      description: 'Optional: FC target worldwide names
-                                      (WWNs)'
-                                      items:
-                                        type: string
-                                      type: array
-                                    wwids:
-                                      description: 'Optional: FC volume world wide identifiers
-                                      (wwids) Either wwids or combination of targetWWNs
-                                      and lun must be set, but not both simultaneously.'
-                                      items:
-                                        type: string
-                                      type: array
-                                  type: object
-                                flexVolume:
-                                  description: FlexVolume represents a generic volume
-                                    resource that is provisioned/attached using an exec
-                                    based plugin.
-                                  properties:
-                                    driver:
-                                      description: Driver is the name of the driver
-                                        to use for this volume.
-                                      type: string
-                                    fsType:
-                                      description: Filesystem type to mount. Must be
-                                        a filesystem type supported by the host operating
-                                        system. Ex. "ext4", "xfs", "ntfs". The default
-                                        filesystem depends on FlexVolume script.
-                                      type: string
-                                    options:
-                                      additionalProperties:
-                                        type: string
-                                      description: 'Optional: Extra command options
-                                      if any.'
-                                      type: object
-                                    readOnly:
-                                      description: 'Optional: Defaults to false (read/write).
-                                      ReadOnly here will force the ReadOnly setting
-                                      in VolumeMounts.'
-                                      type: boolean
-                                    secretRef:
-                                      description: 'Optional: SecretRef is reference
-                                      to the secret object containing sensitive information
-                                      to pass to the plugin scripts. This may be empty
-                                      if no secret object is specified. If the secret
-                                      object contains more than one secret, all secrets
-                                      are passed to the plugin scripts.'
-                                      properties:
-                                        name:
-                                          description: 'Name of the referent. More info:
-                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                          TODO: Add other useful fields. apiVersion,
-                                          kind, uid?'
-                                          type: string
-                                      type: object
-                                  required:
-                                    - driver
-                                  type: object
-                                flocker:
-                                  description: Flocker represents a Flocker volume attached
-                                    to a kubelet's host machine. This depends on the
-                                    Flocker control service being running
-                                  properties:
-                                    datasetName:
-                                      description: Name of the dataset stored as metadata
-                                        -> name on the dataset for Flocker should be
-                                        considered as deprecated
-                                      type: string
-                                    datasetUUID:
-                                      description: UUID of the dataset. This is unique
-                                        identifier of a Flocker dataset
+                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                        TODO: Add other useful fields. apiVersion,
+                                        kind, uid?'
                                       type: string
                                   type: object
-                                gcePersistentDisk:
-                                  description: 'GCEPersistentDisk represents a GCE Disk
-                                  resource that is attached to a kubelet''s host machine
-                                  and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
-                                  properties:
-                                    fsType:
-                                      description: 'Filesystem type of the volume that
-                                      you want to mount. Tip: Ensure that the filesystem
-                                      type is supported by the host operating system.
-                                      Examples: "ext4", "xfs", "ntfs". Implicitly
-                                      inferred to be "ext4" if unspecified. More info:
-                                      https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
-                                      TODO: how do we prevent errors in the filesystem
-                                      from compromising the machine'
-                                      type: string
-                                    partition:
-                                      description: 'The partition in the volume that
-                                      you want to mount. If omitted, the default is
-                                      to mount by volume name. Examples: For volume
-                                      /dev/sda1, you specify the partition as "1".
-                                      Similarly, the volume partition for /dev/sda
-                                      is "0" (or you can leave the property empty).
-                                      More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
-                                      format: int32
-                                      type: integer
-                                    pdName:
-                                      description: 'Unique name of the PD resource in
-                                      GCE. Used to identify the disk in GCE. More
-                                      info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
-                                      type: string
-                                    readOnly:
-                                      description: 'ReadOnly here will force the ReadOnly
-                                      setting in VolumeMounts. Defaults to false.
-                                      More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
-                                      type: boolean
-                                  required:
-                                    - pdName
-                                  type: object
-                                gitRepo:
-                                  description: 'GitRepo represents a git repository
-                                  at a particular revision. DEPRECATED: GitRepo is
-                                  deprecated. To provision a container with a git
-                                  repo, mount an EmptyDir into an InitContainer that
-                                  clones the repo using git, then mount the EmptyDir
-                                  into the Pod''s container.'
-                                  properties:
-                                    directory:
-                                      description: Target directory name. Must not contain
-                                        or start with '..'.  If '.' is supplied, the
-                                        volume directory will be the git repository.  Otherwise,
-                                        if specified, the volume will contain the git
-                                        repository in the subdirectory with the given
-                                        name.
-                                      type: string
-                                    repository:
-                                      description: Repository URL
-                                      type: string
-                                    revision:
-                                      description: Commit hash for the specified revision.
-                                      type: string
-                                  required:
-                                    - repository
-                                  type: object
-                                glusterfs:
-                                  description: 'Glusterfs represents a Glusterfs mount
-                                  on the host that shares a pod''s lifetime. More
-                                  info: https://examples.k8s.io/volumes/glusterfs/README.md'
-                                  properties:
-                                    endpoints:
-                                      description: 'EndpointsName is the endpoint name
-                                      that details Glusterfs topology. More info:
-                                      https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
-                                      type: string
-                                    path:
-                                      description: 'Path is the Glusterfs volume path.
-                                      More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
-                                      type: string
-                                    readOnly:
-                                      description: 'ReadOnly here will force the Glusterfs
-                                      volume to be mounted with read-only permissions.
-                                      Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
-                                      type: boolean
-                                  required:
-                                    - endpoints
-                                    - path
-                                  type: object
-                                hostPath:
-                                  description: 'HostPath represents a pre-existing file
-                                  or directory on the host machine that is directly
-                                  exposed to the container. This is generally used
-                                  for system agents or other privileged things that
-                                  are allowed to see the host machine. Most containers
-                                  will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
-                                  --- TODO(jonesdl) We need to restrict who can use
-                                  host directory mounts and who can/can not mount
-                                  host directories as read/write.'
-                                  properties:
-                                    path:
-                                      description: 'Path of the directory on the host.
-                                      If the path is a symlink, it will follow the
-                                      link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
-                                      type: string
-                                    type:
-                                      description: 'Type for HostPath Volume Defaults
-                                      to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
-                                      type: string
-                                  required:
-                                    - path
-                                  type: object
-                                iscsi:
-                                  description: 'ISCSI represents an ISCSI Disk resource
-                                  that is attached to a kubelet''s host machine and
-                                  then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'
-                                  properties:
-                                    chapAuthDiscovery:
-                                      description: whether support iSCSI Discovery CHAP
-                                        authentication
-                                      type: boolean
-                                    chapAuthSession:
-                                      description: whether support iSCSI Session CHAP
-                                        authentication
-                                      type: boolean
-                                    fsType:
-                                      description: 'Filesystem type of the volume that
-                                      you want to mount. Tip: Ensure that the filesystem
-                                      type is supported by the host operating system.
-                                      Examples: "ext4", "xfs", "ntfs". Implicitly
-                                      inferred to be "ext4" if unspecified. More info:
-                                      https://kubernetes.io/docs/concepts/storage/volumes#iscsi
-                                      TODO: how do we prevent errors in the filesystem
-                                      from compromising the machine'
-                                      type: string
-                                    initiatorName:
-                                      description: Custom iSCSI Initiator Name. If initiatorName
-                                        is specified with iscsiInterface simultaneously,
-                                        new iSCSI interface <target portal>:<volume
-                                        name> will be created for the connection.
-                                      type: string
-                                    iqn:
-                                      description: Target iSCSI Qualified Name.
-                                      type: string
-                                    iscsiInterface:
-                                      description: iSCSI Interface Name that uses an
-                                        iSCSI transport. Defaults to 'default' (tcp).
-                                      type: string
-                                    lun:
-                                      description: iSCSI Target Lun number.
-                                      format: int32
-                                      type: integer
-                                    portals:
-                                      description: iSCSI Target Portal List. The portal
-                                        is either an IP or ip_addr:port if the port
-                                        is other than default (typically TCP ports 860
-                                        and 3260).
-                                      items:
-                                        type: string
-                                      type: array
-                                    readOnly:
-                                      description: ReadOnly here will force the ReadOnly
-                                        setting in VolumeMounts. Defaults to false.
-                                      type: boolean
-                                    secretRef:
-                                      description: CHAP Secret for iSCSI target and
-                                        initiator authentication
-                                      properties:
-                                        name:
-                                          description: 'Name of the referent. More info:
-                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                          TODO: Add other useful fields. apiVersion,
-                                          kind, uid?'
-                                          type: string
-                                      type: object
-                                    targetPortal:
-                                      description: iSCSI Target Portal. The Portal is
-                                        either an IP or ip_addr:port if the port is
-                                        other than default (typically TCP ports 860
-                                        and 3260).
-                                      type: string
-                                  required:
-                                    - iqn
-                                    - lun
-                                    - targetPortal
-                                  type: object
-                                name:
-                                  description: 'Volume''s name. Must be a DNS_LABEL
-                                  and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+                                user:
+                                  description: 'Optional: User is the rados user name,
+                                    default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
                                   type: string
-                                nfs:
-                                  description: 'NFS represents an NFS mount on the host
-                                  that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
-                                  properties:
-                                    path:
-                                      description: 'Path that is exported by the NFS
-                                      server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
-                                      type: string
-                                    readOnly:
-                                      description: 'ReadOnly here will force the NFS
-                                      export to be mounted with read-only permissions.
-                                      Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
-                                      type: boolean
-                                    server:
-                                      description: 'Server is the hostname or IP address
-                                      of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
-                                      type: string
-                                  required:
-                                    - path
-                                    - server
-                                  type: object
-                                persistentVolumeClaim:
-                                  description: 'PersistentVolumeClaimVolumeSource represents
-                                  a reference to a PersistentVolumeClaim in the same
-                                  namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
-                                  properties:
-                                    claimName:
-                                      description: 'ClaimName is the name of a PersistentVolumeClaim
-                                      in the same namespace as the pod using this
-                                      volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
-                                      type: string
-                                    readOnly:
-                                      description: Will force the ReadOnly setting in
-                                        VolumeMounts. Default false.
-                                      type: boolean
-                                  required:
-                                    - claimName
-                                  type: object
-                                photonPersistentDisk:
-                                  description: PhotonPersistentDisk represents a PhotonController
-                                    persistent disk attached and mounted on kubelets
-                                    host machine
-                                  properties:
-                                    fsType:
-                                      description: Filesystem type to mount. Must be
-                                        a filesystem type supported by the host operating
-                                        system. Ex. "ext4", "xfs", "ntfs". Implicitly
-                                        inferred to be "ext4" if unspecified.
-                                      type: string
-                                    pdID:
-                                      description: ID that identifies Photon Controller
-                                        persistent disk
-                                      type: string
-                                  required:
-                                    - pdID
-                                  type: object
-                                portworxVolume:
-                                  description: PortworxVolume represents a portworx
-                                    volume attached and mounted on kubelets host machine
-                                  properties:
-                                    fsType:
-                                      description: FSType represents the filesystem
-                                        type to mount Must be a filesystem type supported
-                                        by the host operating system. Ex. "ext4", "xfs".
-                                        Implicitly inferred to be "ext4" if unspecified.
-                                      type: string
-                                    readOnly:
-                                      description: Defaults to false (read/write). ReadOnly
-                                        here will force the ReadOnly setting in VolumeMounts.
-                                      type: boolean
-                                    volumeID:
-                                      description: VolumeID uniquely identifies a Portworx
-                                        volume
-                                      type: string
-                                  required:
-                                    - volumeID
-                                  type: object
-                                projected:
-                                  description: Items for all in one resources secrets,
-                                    configmaps, and downward API
-                                  properties:
-                                    defaultMode:
-                                      description: Mode bits to use on created files
-                                        by default. Must be a value between 0 and 0777.
-                                        Directories within the path are not affected
-                                        by this setting. This might be in conflict with
-                                        other options that affect the file mode, like
-                                        fsGroup, and the result can be other mode bits
-                                        set.
-                                      format: int32
-                                      type: integer
-                                    sources:
-                                      description: list of volume projections
-                                      items:
-                                        description: Projection that may be projected
-                                          along with other supported volume types
-                                        properties:
-                                          configMap:
-                                            description: information about the configMap
-                                              data to project
-                                            properties:
-                                              items:
-                                                description: If unspecified, each key-value
-                                                  pair in the Data field of the referenced
-                                                  ConfigMap will be projected into the
-                                                  volume as a file whose name is the
-                                                  key and content is the value. If specified,
-                                                  the listed keys will be projected
-                                                  into the specified paths, and unlisted
-                                                  keys will not be present. If a key
-                                                  is specified which is not present
-                                                  in the ConfigMap, the volume setup
-                                                  will error unless it is marked optional.
-                                                  Paths must be relative and may not
-                                                  contain the '..' path or start with
-                                                  '..'.
-                                                items:
-                                                  description: Maps a string key to
-                                                    a path within a volume.
-                                                  properties:
-                                                    key:
-                                                      description: The key to project.
-                                                      type: string
-                                                    mode:
-                                                      description: 'Optional: mode bits
-                                                      to use on this file, must be
-                                                      a value between 0 and 0777.
-                                                      If not specified, the volume
-                                                      defaultMode will be used. This
-                                                      might be in conflict with other
-                                                      options that affect the file
-                                                      mode, like fsGroup, and the
-                                                      result can be other mode bits
-                                                      set.'
-                                                      format: int32
-                                                      type: integer
-                                                    path:
-                                                      description: The relative path
-                                                        of the file to map the key to.
-                                                        May not be an absolute path.
-                                                        May not contain the path element
-                                                        '..'. May not start with the
-                                                        string '..'.
-                                                      type: string
-                                                  required:
-                                                    - key
-                                                    - path
-                                                  type: object
-                                                type: array
-                                              name:
-                                                description: 'Name of the referent.
-                                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Add other useful fields. apiVersion,
-                                                kind, uid?'
-                                                type: string
-                                              optional:
-                                                description: Specify whether the ConfigMap
-                                                  or its keys must be defined
-                                                type: boolean
-                                            type: object
-                                          downwardAPI:
-                                            description: information about the downwardAPI
-                                              data to project
-                                            properties:
-                                              items:
-                                                description: Items is a list of DownwardAPIVolume
-                                                  file
-                                                items:
-                                                  description: DownwardAPIVolumeFile
-                                                    represents information to create
-                                                    the file containing the pod field
-                                                  properties:
-                                                    fieldRef:
-                                                      description: 'Required: Selects
-                                                      a field of the pod: only annotations,
-                                                      labels, name and namespace are
-                                                      supported.'
-                                                      properties:
-                                                        apiVersion:
-                                                          description: Version of the
-                                                            schema the FieldPath is
-                                                            written in terms of, defaults
-                                                            to "v1".
-                                                          type: string
-                                                        fieldPath:
-                                                          description: Path of the field
-                                                            to select in the specified
-                                                            API version.
-                                                          type: string
-                                                      required:
-                                                        - fieldPath
-                                                      type: object
-                                                    mode:
-                                                      description: 'Optional: mode bits
-                                                      to use on this file, must be
-                                                      a value between 0 and 0777.
-                                                      If not specified, the volume
-                                                      defaultMode will be used. This
-                                                      might be in conflict with other
-                                                      options that affect the file
-                                                      mode, like fsGroup, and the
-                                                      result can be other mode bits
-                                                      set.'
-                                                      format: int32
-                                                      type: integer
-                                                    path:
-                                                      description: 'Required: Path is  the
-                                                      relative path name of the file
-                                                      to be created. Must not be absolute
-                                                      or contain the ''..'' path.
-                                                      Must be utf-8 encoded. The first
-                                                      item of the relative path must
-                                                      not start with ''..'''
-                                                      type: string
-                                                    resourceFieldRef:
-                                                      description: 'Selects a resource
-                                                      of the container: only resources
-                                                      limits and requests (limits.cpu,
-                                                      limits.memory, requests.cpu
-                                                      and requests.memory) are currently
-                                                      supported.'
-                                                      properties:
-                                                        containerName:
-                                                          description: 'Container name:
-                                                          required for volumes, optional
-                                                          for env vars'
-                                                          type: string
-                                                        divisor:
-                                                          anyOf:
-                                                            - type: integer
-                                                            - type: string
-                                                          description: Specifies the
-                                                            output format of the exposed
-                                                            resources, defaults to "1"
-                                                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
-                                                          x-kubernetes-int-or-string: true
-                                                        resource:
-                                                          description: 'Required: resource
-                                                          to select'
-                                                          type: string
-                                                      required:
-                                                        - resource
-                                                      type: object
-                                                  required:
-                                                    - path
-                                                  type: object
-                                                type: array
-                                            type: object
-                                          secret:
-                                            description: information about the secret
-                                              data to project
-                                            properties:
-                                              items:
-                                                description: If unspecified, each key-value
-                                                  pair in the Data field of the referenced
-                                                  Secret will be projected into the
-                                                  volume as a file whose name is the
-                                                  key and content is the value. If specified,
-                                                  the listed keys will be projected
-                                                  into the specified paths, and unlisted
-                                                  keys will not be present. If a key
-                                                  is specified which is not present
-                                                  in the Secret, the volume setup will
-                                                  error unless it is marked optional.
-                                                  Paths must be relative and may not
-                                                  contain the '..' path or start with
-                                                  '..'.
-                                                items:
-                                                  description: Maps a string key to
-                                                    a path within a volume.
-                                                  properties:
-                                                    key:
-                                                      description: The key to project.
-                                                      type: string
-                                                    mode:
-                                                      description: 'Optional: mode bits
-                                                      to use on this file, must be
-                                                      a value between 0 and 0777.
-                                                      If not specified, the volume
-                                                      defaultMode will be used. This
-                                                      might be in conflict with other
-                                                      options that affect the file
-                                                      mode, like fsGroup, and the
-                                                      result can be other mode bits
-                                                      set.'
-                                                      format: int32
-                                                      type: integer
-                                                    path:
-                                                      description: The relative path
-                                                        of the file to map the key to.
-                                                        May not be an absolute path.
-                                                        May not contain the path element
-                                                        '..'. May not start with the
-                                                        string '..'.
-                                                      type: string
-                                                  required:
-                                                    - key
-                                                    - path
-                                                  type: object
-                                                type: array
-                                              name:
-                                                description: 'Name of the referent.
-                                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Add other useful fields. apiVersion,
-                                                kind, uid?'
-                                                type: string
-                                              optional:
-                                                description: Specify whether the Secret
-                                                  or its key must be defined
-                                                type: boolean
-                                            type: object
-                                          serviceAccountToken:
-                                            description: information about the serviceAccountToken
-                                              data to project
-                                            properties:
-                                              audience:
-                                                description: Audience is the intended
-                                                  audience of the token. A recipient
-                                                  of a token must identify itself with
-                                                  an identifier specified in the audience
-                                                  of the token, and otherwise should
-                                                  reject the token. The audience defaults
-                                                  to the identifier of the apiserver.
-                                                type: string
-                                              expirationSeconds:
-                                                description: ExpirationSeconds is the
-                                                  requested duration of validity of
-                                                  the service account token. As the
-                                                  token approaches expiration, the kubelet
-                                                  volume plugin will proactively rotate
-                                                  the service account token. The kubelet
-                                                  will start trying to rotate the token
-                                                  if the token is older than 80 percent
-                                                  of its time to live or if the token
-                                                  is older than 24 hours.Defaults to
-                                                  1 hour and must be at least 10 minutes.
-                                                format: int64
-                                                type: integer
-                                              path:
-                                                description: Path is the path relative
-                                                  to the mount point of the file to
-                                                  project the token into.
-                                                type: string
-                                            required:
-                                              - path
-                                            type: object
-                                        type: object
-                                      type: array
-                                  required:
-                                    - sources
-                                  type: object
-                                quobyte:
-                                  description: Quobyte represents a Quobyte mount on
-                                    the host that shares a pod's lifetime
-                                  properties:
-                                    group:
-                                      description: Group to map volume access to Default
-                                        is no group
-                                      type: string
-                                    readOnly:
-                                      description: ReadOnly here will force the Quobyte
-                                        volume to be mounted with read-only permissions.
-                                        Defaults to false.
-                                      type: boolean
-                                    registry:
-                                      description: Registry represents a single or multiple
-                                        Quobyte Registry services specified as a string
-                                        as host:port pair (multiple entries are separated
-                                        with commas) which acts as the central registry
-                                        for volumes
-                                      type: string
-                                    tenant:
-                                      description: Tenant owning the given Quobyte volume
-                                        in the Backend Used with dynamically provisioned
-                                        Quobyte volumes, value is set by the plugin
-                                      type: string
-                                    user:
-                                      description: User to map volume access to Defaults
-                                        to serivceaccount user
-                                      type: string
-                                    volume:
-                                      description: Volume is a string that references
-                                        an already created Quobyte volume by name.
-                                      type: string
-                                  required:
-                                    - registry
-                                    - volume
-                                  type: object
-                                rbd:
-                                  description: 'RBD represents a Rados Block Device
-                                  mount on the host that shares a pod''s lifetime.
-                                  More info: https://examples.k8s.io/volumes/rbd/README.md'
-                                  properties:
-                                    fsType:
-                                      description: 'Filesystem type of the volume that
-                                      you want to mount. Tip: Ensure that the filesystem
-                                      type is supported by the host operating system.
-                                      Examples: "ext4", "xfs", "ntfs". Implicitly
-                                      inferred to be "ext4" if unspecified. More info:
-                                      https://kubernetes.io/docs/concepts/storage/volumes#rbd
-                                      TODO: how do we prevent errors in the filesystem
-                                      from compromising the machine'
-                                      type: string
-                                    image:
-                                      description: 'The rados image name. More info:
-                                      https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
-                                      type: string
-                                    keyring:
-                                      description: 'Keyring is the path to key ring
-                                      for RBDUser. Default is /etc/ceph/keyring. More
-                                      info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
-                                      type: string
-                                    monitors:
-                                      description: 'A collection of Ceph monitors. More
-                                      info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
-                                      items:
-                                        type: string
-                                      type: array
-                                    pool:
-                                      description: 'The rados pool name. Default is
-                                      rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
-                                      type: string
-                                    readOnly:
-                                      description: 'ReadOnly here will force the ReadOnly
-                                      setting in VolumeMounts. Defaults to false.
-                                      More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
-                                      type: boolean
-                                    secretRef:
-                                      description: 'SecretRef is name of the authentication
-                                      secret for RBDUser. If provided overrides keyring.
-                                      Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
-                                      properties:
-                                        name:
-                                          description: 'Name of the referent. More info:
-                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                          TODO: Add other useful fields. apiVersion,
-                                          kind, uid?'
-                                          type: string
-                                      type: object
-                                    user:
-                                      description: 'The rados user name. Default is
-                                      admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
-                                      type: string
-                                  required:
-                                    - image
-                                    - monitors
-                                  type: object
-                                scaleIO:
-                                  description: ScaleIO represents a ScaleIO persistent
-                                    volume attached and mounted on Kubernetes nodes.
-                                  properties:
-                                    fsType:
-                                      description: Filesystem type to mount. Must be
-                                        a filesystem type supported by the host operating
-                                        system. Ex. "ext4", "xfs", "ntfs". Default is
-                                        "xfs".
-                                      type: string
-                                    gateway:
-                                      description: The host address of the ScaleIO API
-                                        Gateway.
-                                      type: string
-                                    protectionDomain:
-                                      description: The name of the ScaleIO Protection
-                                        Domain for the configured storage.
-                                      type: string
-                                    readOnly:
-                                      description: Defaults to false (read/write). ReadOnly
-                                        here will force the ReadOnly setting in VolumeMounts.
-                                      type: boolean
-                                    secretRef:
-                                      description: SecretRef references to the secret
-                                        for ScaleIO user and other sensitive information.
-                                        If this is not provided, Login operation will
-                                        fail.
-                                      properties:
-                                        name:
-                                          description: 'Name of the referent. More info:
-                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                          TODO: Add other useful fields. apiVersion,
-                                          kind, uid?'
-                                          type: string
-                                      type: object
-                                    sslEnabled:
-                                      description: Flag to enable/disable SSL communication
-                                        with Gateway, default false
-                                      type: boolean
-                                    storageMode:
-                                      description: Indicates whether the storage for
-                                        a volume should be ThickProvisioned or ThinProvisioned.
-                                        Default is ThinProvisioned.
-                                      type: string
-                                    storagePool:
-                                      description: The ScaleIO Storage Pool associated
-                                        with the protection domain.
-                                      type: string
-                                    system:
-                                      description: The name of the storage system as
-                                        configured in ScaleIO.
-                                      type: string
-                                    volumeName:
-                                      description: The name of a volume already created
-                                        in the ScaleIO system that is associated with
-                                        this volume source.
-                                      type: string
-                                  required:
-                                    - gateway
-                                    - secretRef
-                                    - system
-                                  type: object
-                                secret:
-                                  description: 'Secret represents a secret that should
-                                  populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
-                                  properties:
-                                    defaultMode:
-                                      description: 'Optional: mode bits to use on created
-                                      files by default. Must be a value between 0
-                                      and 0777. Defaults to 0644. Directories within
-                                      the path are not affected by this setting. This
-                                      might be in conflict with other options that
-                                      affect the file mode, like fsGroup, and the
-                                      result can be other mode bits set.'
-                                      format: int32
-                                      type: integer
-                                    items:
-                                      description: If unspecified, each key-value pair
-                                        in the Data field of the referenced Secret will
-                                        be projected into the volume as a file whose
-                                        name is the key and content is the value. If
-                                        specified, the listed keys will be projected
-                                        into the specified paths, and unlisted keys
-                                        will not be present. If a key is specified which
-                                        is not present in the Secret, the volume setup
-                                        will error unless it is marked optional. Paths
-                                        must be relative and may not contain the '..'
-                                        path or start with '..'.
-                                      items:
-                                        description: Maps a string key to a path within
-                                          a volume.
-                                        properties:
-                                          key:
-                                            description: The key to project.
-                                            type: string
-                                          mode:
-                                            description: 'Optional: mode bits to use
-                                            on this file, must be a value between
-                                            0 and 0777. If not specified, the volume
-                                            defaultMode will be used. This might be
-                                            in conflict with other options that affect
-                                            the file mode, like fsGroup, and the result
-                                            can be other mode bits set.'
-                                            format: int32
-                                            type: integer
-                                          path:
-                                            description: The relative path of the file
-                                              to map the key to. May not be an absolute
-                                              path. May not contain the path element
-                                              '..'. May not start with the string '..'.
-                                            type: string
-                                        required:
-                                          - key
-                                          - path
-                                        type: object
-                                      type: array
-                                    optional:
-                                      description: Specify whether the Secret or its
-                                        keys must be defined
-                                      type: boolean
-                                    secretName:
-                                      description: 'Name of the secret in the pod''s
-                                      namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
-                                      type: string
-                                  type: object
-                                storageos:
-                                  description: StorageOS represents a StorageOS volume
-                                    attached and mounted on Kubernetes nodes.
-                                  properties:
-                                    fsType:
-                                      description: Filesystem type to mount. Must be
-                                        a filesystem type supported by the host operating
-                                        system. Ex. "ext4", "xfs", "ntfs". Implicitly
-                                        inferred to be "ext4" if unspecified.
-                                      type: string
-                                    readOnly:
-                                      description: Defaults to false (read/write). ReadOnly
-                                        here will force the ReadOnly setting in VolumeMounts.
-                                      type: boolean
-                                    secretRef:
-                                      description: SecretRef specifies the secret to
-                                        use for obtaining the StorageOS API credentials.  If
-                                        not specified, default values will be attempted.
-                                      properties:
-                                        name:
-                                          description: 'Name of the referent. More info:
-                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                          TODO: Add other useful fields. apiVersion,
-                                          kind, uid?'
-                                          type: string
-                                      type: object
-                                    volumeName:
-                                      description: VolumeName is the human-readable
-                                        name of the StorageOS volume.  Volume names
-                                        are only unique within a namespace.
-                                      type: string
-                                    volumeNamespace:
-                                      description: VolumeNamespace specifies the scope
-                                        of the volume within StorageOS.  If no namespace
-                                        is specified then the Pod's namespace will be
-                                        used.  This allows the Kubernetes name scoping
-                                        to be mirrored within StorageOS for tighter
-                                        integration. Set VolumeName to any name to override
-                                        the default behaviour. Set to "default" if you
-                                        are not using namespaces within StorageOS. Namespaces
-                                        that do not pre-exist within StorageOS will
-                                        be created.
-                                      type: string
-                                  type: object
-                                vsphereVolume:
-                                  description: VsphereVolume represents a vSphere volume
-                                    attached and mounted on kubelets host machine
-                                  properties:
-                                    fsType:
-                                      description: Filesystem type to mount. Must be
-                                        a filesystem type supported by the host operating
-                                        system. Ex. "ext4", "xfs", "ntfs". Implicitly
-                                        inferred to be "ext4" if unspecified.
-                                      type: string
-                                    storagePolicyID:
-                                      description: Storage Policy Based Management (SPBM)
-                                        profile ID associated with the StoragePolicyName.
-                                      type: string
-                                    storagePolicyName:
-                                      description: Storage Policy Based Management (SPBM)
-                                        profile name.
-                                      type: string
-                                    volumePath:
-                                      description: Path that identifies vSphere volume
-                                        vmdk
-                                      type: string
-                                  required:
-                                    - volumePath
-                                  type: object
                               required:
-                                - name
+                                - monitors
                               type: object
-                            type: array
-                        type: object
-                      image:
-                        description: ImageTask --
-                        properties:
-                          affinity:
-                            description: Affinity is a group of affinity scheduling
-                              rules.
-                            properties:
-                              nodeAffinity:
-                                description: Describes node affinity scheduling rules
-                                  for the pod.
-                                properties:
-                                  preferredDuringSchedulingIgnoredDuringExecution:
-                                    description: The scheduler will prefer to schedule
-                                      pods to nodes that satisfy the affinity expressions
-                                      specified by this field, but it may choose a node
-                                      that violates one or more of the expressions.
-                                      The node that is most preferred is the one with
-                                      the greatest sum of weights, i.e. for each node
-                                      that meets all of the scheduling requirements
-                                      (resource request, requiredDuringScheduling affinity
-                                      expressions, etc.), compute a sum by iterating
-                                      through the elements of this field and adding
-                                      "weight" to the sum if the node matches the corresponding
-                                      matchExpressions; the node(s) with the highest
-                                      sum are the most preferred.
-                                    items:
-                                      description: An empty preferred scheduling term
-                                        matches all objects with implicit weight 0 (i.e.
-                                        it's a no-op). A null preferred scheduling term
-                                        matches no objects (i.e. is also a no-op).
-                                      properties:
-                                        preference:
-                                          description: A node selector term, associated
-                                            with the corresponding weight.
-                                          properties:
-                                            matchExpressions:
-                                              description: A list of node selector requirements
-                                                by node's labels.
-                                              items:
-                                                description: A node selector requirement
-                                                  is a selector that contains values,
-                                                  a key, and an operator that relates
-                                                  the key and values.
-                                                properties:
-                                                  key:
-                                                    description: The label key that
-                                                      the selector applies to.
-                                                    type: string
-                                                  operator:
-                                                    description: Represents a key's
-                                                      relationship to a set of values.
-                                                      Valid operators are In, NotIn,
-                                                      Exists, DoesNotExist. Gt, and
-                                                      Lt.
-                                                    type: string
-                                                  values:
-                                                    description: An array of string
-                                                      values. If the operator is In
-                                                      or NotIn, the values array must
-                                                      be non-empty. If the operator
-                                                      is Exists or DoesNotExist, the
-                                                      values array must be empty. If
-                                                      the operator is Gt or Lt, the
-                                                      values array must have a single
-                                                      element, which will be interpreted
-                                                      as an integer. This array is replaced
-                                                      during a strategic merge patch.
-                                                    items:
-                                                      type: string
-                                                    type: array
-                                                required:
-                                                  - key
-                                                  - operator
-                                                type: object
-                                              type: array
-                                            matchFields:
-                                              description: A list of node selector requirements
-                                                by node's fields.
-                                              items:
-                                                description: A node selector requirement
-                                                  is a selector that contains values,
-                                                  a key, and an operator that relates
-                                                  the key and values.
-                                                properties:
-                                                  key:
-                                                    description: The label key that
-                                                      the selector applies to.
-                                                    type: string
-                                                  operator:
-                                                    description: Represents a key's
-                                                      relationship to a set of values.
-                                                      Valid operators are In, NotIn,
-                                                      Exists, DoesNotExist. Gt, and
-                                                      Lt.
-                                                    type: string
-                                                  values:
-                                                    description: An array of string
-                                                      values. If the operator is In
-                                                      or NotIn, the values array must
-                                                      be non-empty. If the operator
-                                                      is Exists or DoesNotExist, the
-                                                      values array must be empty. If
-                                                      the operator is Gt or Lt, the
-                                                      values array must have a single
-                                                      element, which will be interpreted
-                                                      as an integer. This array is replaced
-                                                      during a strategic merge patch.
-                                                    items:
-                                                      type: string
-                                                    type: array
-                                                required:
-                                                  - key
-                                                  - operator
-                                                type: object
-                                              type: array
-                                          type: object
-                                        weight:
-                                          description: Weight associated with matching
-                                            the corresponding nodeSelectorTerm, in the
-                                            range 1-100.
-                                          format: int32
-                                          type: integer
-                                      required:
-                                        - preference
-                                        - weight
-                                      type: object
-                                    type: array
-                                  requiredDuringSchedulingIgnoredDuringExecution:
-                                    description: If the affinity requirements specified
-                                      by this field are not met at scheduling time,
-                                      the pod will not be scheduled onto the node. If
-                                      the affinity requirements specified by this field
-                                      cease to be met at some point during pod execution
-                                      (e.g. due to an update), the system may or may
-                                      not try to eventually evict the pod from its node.
+                            cinder:
+                              description: 'Cinder represents a cinder volume attached
+                                and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+                              properties:
+                                fsType:
+                                  description: 'Filesystem type to mount. Must be
+                                    a filesystem type supported by the host operating
+                                    system. Examples: "ext4", "xfs", "ntfs". Implicitly
+                                    inferred to be "ext4" if unspecified. More info:
+                                    https://examples.k8s.io/mysql-cinder-pd/README.md'
+                                  type: string
+                                readOnly:
+                                  description: 'Optional: Defaults to false (read/write).
+                                    ReadOnly here will force the ReadOnly setting
+                                    in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+                                  type: boolean
+                                secretRef:
+                                  description: 'Optional: points to a secret object
+                                    containing parameters used to connect to OpenStack.'
+                                  properties:
+                                    name:
+                                      description: 'Name of the referent. More info:
+                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                        TODO: Add other useful fields. apiVersion,
+                                        kind, uid?'
+                                      type: string
+                                  type: object
+                                volumeID:
+                                  description: 'volume id used to identify the volume
+                                    in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+                                  type: string
+                              required:
+                                - volumeID
+                              type: object
+                            configMap:
+                              description: ConfigMap represents a configMap that should
+                                populate this volume
+                              properties:
+                                defaultMode:
+                                  description: 'Optional: mode bits to use on created
+                                    files by default. Must be a value between 0 and
+                                    0777. Defaults to 0644. Directories within the
+                                    path are not affected by this setting. This might
+                                    be in conflict with other options that affect
+                                    the file mode, like fsGroup, and the result can
+                                    be other mode bits set.'
+                                  format: int32
+                                  type: integer
+                                items:
+                                  description: If unspecified, each key-value pair
+                                    in the Data field of the referenced ConfigMap
+                                    will be projected into the volume as a file whose
+                                    name is the key and content is the value. If specified,
+                                    the listed keys will be projected into the specified
+                                    paths, and unlisted keys will not be present.
+                                    If a key is specified which is not present in
+                                    the ConfigMap, the volume setup will error unless
+                                    it is marked optional. Paths must be relative
+                                    and may not contain the '..' path or start with
+                                    '..'.
+                                  items:
+                                    description: Maps a string key to a path within
+                                      a volume.
                                     properties:
-                                      nodeSelectorTerms:
-                                        description: Required. A list of node selector
-                                          terms. The terms are ORed.
-                                        items:
-                                          description: A null or empty node selector
-                                            term matches no objects. The requirements
-                                            of them are ANDed. The TopologySelectorTerm
-                                            type implements a subset of the NodeSelectorTerm.
-                                          properties:
-                                            matchExpressions:
-                                              description: A list of node selector requirements
-                                                by node's labels.
-                                              items:
-                                                description: A node selector requirement
-                                                  is a selector that contains values,
-                                                  a key, and an operator that relates
-                                                  the key and values.
-                                                properties:
-                                                  key:
-                                                    description: The label key that
-                                                      the selector applies to.
-                                                    type: string
-                                                  operator:
-                                                    description: Represents a key's
-                                                      relationship to a set of values.
-                                                      Valid operators are In, NotIn,
-                                                      Exists, DoesNotExist. Gt, and
-                                                      Lt.
-                                                    type: string
-                                                  values:
-                                                    description: An array of string
-                                                      values. If the operator is In
-                                                      or NotIn, the values array must
-                                                      be non-empty. If the operator
-                                                      is Exists or DoesNotExist, the
-                                                      values array must be empty. If
-                                                      the operator is Gt or Lt, the
-                                                      values array must have a single
-                                                      element, which will be interpreted
-                                                      as an integer. This array is replaced
-                                                      during a strategic merge patch.
-                                                    items:
-                                                      type: string
-                                                    type: array
-                                                required:
-                                                  - key
-                                                  - operator
-                                                type: object
-                                              type: array
-                                            matchFields:
-                                              description: A list of node selector requirements
-                                                by node's fields.
-                                              items:
-                                                description: A node selector requirement
-                                                  is a selector that contains values,
-                                                  a key, and an operator that relates
-                                                  the key and values.
-                                                properties:
-                                                  key:
-                                                    description: The label key that
-                                                      the selector applies to.
-                                                    type: string
-                                                  operator:
-                                                    description: Represents a key's
-                                                      relationship to a set of values.
-                                                      Valid operators are In, NotIn,
-                                                      Exists, DoesNotExist. Gt, and
-                                                      Lt.
-                                                    type: string
-                                                  values:
-                                                    description: An array of string
-                                                      values. If the operator is In
-                                                      or NotIn, the values array must
-                                                      be non-empty. If the operator
-                                                      is Exists or DoesNotExist, the
-                                                      values array must be empty. If
-                                                      the operator is Gt or Lt, the
-                                                      values array must have a single
-                                                      element, which will be interpreted
-                                                      as an integer. This array is replaced
-                                                      during a strategic merge patch.
-                                                    items:
-                                                      type: string
-                                                    type: array
-                                                required:
-                                                  - key
-                                                  - operator
-                                                type: object
-                                              type: array
-                                          type: object
-                                        type: array
+                                      key:
+                                        description: The key to project.
+                                        type: string
+                                      mode:
+                                        description: 'Optional: mode bits to use on
+                                          this file, must be a value between 0 and
+                                          0777. If not specified, the volume defaultMode
+                                          will be used. This might be in conflict
+                                          with other options that affect the file
+                                          mode, like fsGroup, and the result can be
+                                          other mode bits set.'
+                                        format: int32
+                                        type: integer
+                                      path:
+                                        description: The relative path of the file
+                                          to map the key to. May not be an absolute
+                                          path. May not contain the path element '..'.
+                                          May not start with the string '..'.
+                                        type: string
                                     required:
-                                      - nodeSelectorTerms
+                                      - key
+                                      - path
                                     type: object
-                                type: object
-                              podAffinity:
-                                description: Describes pod affinity scheduling rules
-                                  (e.g. co-locate this pod in the same node, zone, etc.
-                                  as some other pod(s)).
-                                properties:
-                                  preferredDuringSchedulingIgnoredDuringExecution:
-                                    description: The scheduler will prefer to schedule
-                                      pods to nodes that satisfy the affinity expressions
-                                      specified by this field, but it may choose a node
-                                      that violates one or more of the expressions.
-                                      The node that is most preferred is the one with
-                                      the greatest sum of weights, i.e. for each node
-                                      that meets all of the scheduling requirements
-                                      (resource request, requiredDuringScheduling affinity
-                                      expressions, etc.), compute a sum by iterating
-                                      through the elements of this field and adding
-                                      "weight" to the sum if the node has pods which
-                                      matches the corresponding podAffinityTerm; the
-                                      node(s) with the highest sum are the most preferred.
-                                    items:
-                                      description: The weights of all of the matched
-                                        WeightedPodAffinityTerm fields are added per-node
-                                        to find the most preferred node(s)
-                                      properties:
-                                        podAffinityTerm:
-                                          description: Required. A pod affinity term,
-                                            associated with the corresponding weight.
-                                          properties:
-                                            labelSelector:
-                                              description: A label query over a set
-                                                of resources, in this case pods.
-                                              properties:
-                                                matchExpressions:
-                                                  description: matchExpressions is a
-                                                    list of label selector requirements.
-                                                    The requirements are ANDed.
-                                                  items:
-                                                    description: A label selector requirement
-                                                      is a selector that contains values,
-                                                      a key, and an operator that relates
-                                                      the key and values.
-                                                    properties:
-                                                      key:
-                                                        description: key is the label
-                                                          key that the selector applies
-                                                          to.
-                                                        type: string
-                                                      operator:
-                                                        description: operator represents
-                                                          a key's relationship to a
-                                                          set of values. Valid operators
-                                                          are In, NotIn, Exists and
-                                                          DoesNotExist.
-                                                        type: string
-                                                      values:
-                                                        description: values is an array
-                                                          of string values. If the operator
-                                                          is In or NotIn, the values
-                                                          array must be non-empty. If
-                                                          the operator is Exists or
-                                                          DoesNotExist, the values array
-                                                          must be empty. This array
-                                                          is replaced during a strategic
-                                                          merge patch.
-                                                        items:
-                                                          type: string
-                                                        type: array
-                                                    required:
-                                                      - key
-                                                      - operator
-                                                    type: object
-                                                  type: array
-                                                matchLabels:
-                                                  additionalProperties:
-                                                    type: string
-                                                  description: matchLabels is a map
-                                                    of {key,value} pairs. A single {key,value}
-                                                    in the matchLabels map is equivalent
-                                                    to an element of matchExpressions,
-                                                    whose key field is "key", the operator
-                                                    is "In", and the values array contains
-                                                    only "value". The requirements are
-                                                    ANDed.
-                                                  type: object
-                                              type: object
-                                            namespaces:
-                                              description: namespaces specifies which
-                                                namespaces the labelSelector applies
-                                                to (matches against); null or empty
-                                                list means "this pod's namespace"
-                                              items:
-                                                type: string
-                                              type: array
-                                            topologyKey:
-                                              description: This pod should be co-located
-                                                (affinity) or not co-located (anti-affinity)
-                                                with the pods matching the labelSelector
-                                                in the specified namespaces, where co-located
-                                                is defined as running on a node whose
-                                                value of the label with key topologyKey
-                                                matches that of any node on which any
-                                                of the selected pods is running. Empty
-                                                topologyKey is not allowed.
-                                              type: string
-                                          required:
-                                            - topologyKey
-                                          type: object
-                                        weight:
-                                          description: weight associated with matching
-                                            the corresponding podAffinityTerm, in the
-                                            range 1-100.
-                                          format: int32
-                                          type: integer
-                                      required:
-                                        - podAffinityTerm
-                                        - weight
-                                      type: object
-                                    type: array
-                                  requiredDuringSchedulingIgnoredDuringExecution:
-                                    description: If the affinity requirements specified
-                                      by this field are not met at scheduling time,
-                                      the pod will not be scheduled onto the node. If
-                                      the affinity requirements specified by this field
-                                      cease to be met at some point during pod execution
-                                      (e.g. due to a pod label update), the system may
-                                      or may not try to eventually evict the pod from
-                                      its node. When there are multiple elements, the
-                                      lists of nodes corresponding to each podAffinityTerm
-                                      are intersected, i.e. all terms must be satisfied.
-                                    items:
-                                      description: Defines a set of pods (namely those
-                                        matching the labelSelector relative to the given
-                                        namespace(s)) that this pod should be co-located
-                                        (affinity) or not co-located (anti-affinity)
-                                        with, where co-located is defined as running
-                                        on a node whose value of the label with key
-                                        <topologyKey> matches that of any node on which
-                                        a pod of the set of pods is running
-                                      properties:
-                                        labelSelector:
-                                          description: A label query over a set of resources,
-                                            in this case pods.
-                                          properties:
-                                            matchExpressions:
-                                              description: matchExpressions is a list
-                                                of label selector requirements. The
-                                                requirements are ANDed.
-                                              items:
-                                                description: A label selector requirement
-                                                  is a selector that contains values,
-                                                  a key, and an operator that relates
-                                                  the key and values.
-                                                properties:
-                                                  key:
-                                                    description: key is the label key
-                                                      that the selector applies to.
-                                                    type: string
-                                                  operator:
-                                                    description: operator represents
-                                                      a key's relationship to a set
-                                                      of values. Valid operators are
-                                                      In, NotIn, Exists and DoesNotExist.
-                                                    type: string
-                                                  values:
-                                                    description: values is an array
-                                                      of string values. If the operator
-                                                      is In or NotIn, the values array
-                                                      must be non-empty. If the operator
-                                                      is Exists or DoesNotExist, the
-                                                      values array must be empty. This
-                                                      array is replaced during a strategic
-                                                      merge patch.
-                                                    items:
-                                                      type: string
-                                                    type: array
-                                                required:
-                                                  - key
-                                                  - operator
-                                                type: object
-                                              type: array
-                                            matchLabels:
-                                              additionalProperties:
-                                                type: string
-                                              description: matchLabels is a map of {key,value}
-                                                pairs. A single {key,value} in the matchLabels
-                                                map is equivalent to an element of matchExpressions,
-                                                whose key field is "key", the operator
-                                                is "In", and the values array contains
-                                                only "value". The requirements are ANDed.
-                                              type: object
-                                          type: object
-                                        namespaces:
-                                          description: namespaces specifies which namespaces
-                                            the labelSelector applies to (matches against);
-                                            null or empty list means "this pod's namespace"
-                                          items:
-                                            type: string
-                                          type: array
-                                        topologyKey:
-                                          description: This pod should be co-located
-                                            (affinity) or not co-located (anti-affinity)
-                                            with the pods matching the labelSelector
-                                            in the specified namespaces, where co-located
-                                            is defined as running on a node whose value
-                                            of the label with key topologyKey matches
-                                            that of any node on which any of the selected
-                                            pods is running. Empty topologyKey is not
-                                            allowed.
-                                          type: string
-                                      required:
-                                        - topologyKey
-                                      type: object
-                                    type: array
-                                type: object
-                              podAntiAffinity:
-                                description: Describes pod anti-affinity scheduling
-                                  rules (e.g. avoid putting this pod in the same node,
-                                  zone, etc. as some other pod(s)).
-                                properties:
-                                  preferredDuringSchedulingIgnoredDuringExecution:
-                                    description: The scheduler will prefer to schedule
-                                      pods to nodes that satisfy the anti-affinity expressions
-                                      specified by this field, but it may choose a node
-                                      that violates one or more of the expressions.
-                                      The node that is most preferred is the one with
-                                      the greatest sum of weights, i.e. for each node
-                                      that meets all of the scheduling requirements
-                                      (resource request, requiredDuringScheduling anti-affinity
-                                      expressions, etc.), compute a sum by iterating
-                                      through the elements of this field and adding
-                                      "weight" to the sum if the node has pods which
-                                      matches the corresponding podAffinityTerm; the
-                                      node(s) with the highest sum are the most preferred.
-                                    items:
-                                      description: The weights of all of the matched
-                                        WeightedPodAffinityTerm fields are added per-node
-                                        to find the most preferred node(s)
-                                      properties:
-                                        podAffinityTerm:
-                                          description: Required. A pod affinity term,
-                                            associated with the corresponding weight.
-                                          properties:
-                                            labelSelector:
-                                              description: A label query over a set
-                                                of resources, in this case pods.
-                                              properties:
-                                                matchExpressions:
-                                                  description: matchExpressions is a
-                                                    list of label selector requirements.
-                                                    The requirements are ANDed.
-                                                  items:
-                                                    description: A label selector requirement
-                                                      is a selector that contains values,
-                                                      a key, and an operator that relates
-                                                      the key and values.
-                                                    properties:
-                                                      key:
-                                                        description: key is the label
-                                                          key that the selector applies
-                                                          to.
-                                                        type: string
-                                                      operator:
-                                                        description: operator represents
-                                                          a key's relationship to a
-                                                          set of values. Valid operators
-                                                          are In, NotIn, Exists and
-                                                          DoesNotExist.
-                                                        type: string
-                                                      values:
-                                                        description: values is an array
-                                                          of string values. If the operator
-                                                          is In or NotIn, the values
-                                                          array must be non-empty. If
-                                                          the operator is Exists or
-                                                          DoesNotExist, the values array
-                                                          must be empty. This array
-                                                          is replaced during a strategic
-                                                          merge patch.
-                                                        items:
-                                                          type: string
-                                                        type: array
-                                                    required:
-                                                      - key
-                                                      - operator
-                                                    type: object
-                                                  type: array
-                                                matchLabels:
-                                                  additionalProperties:
-                                                    type: string
-                                                  description: matchLabels is a map
-                                                    of {key,value} pairs. A single {key,value}
-                                                    in the matchLabels map is equivalent
-                                                    to an element of matchExpressions,
-                                                    whose key field is "key", the operator
-                                                    is "In", and the values array contains
-                                                    only "value". The requirements are
-                                                    ANDed.
-                                                  type: object
-                                              type: object
-                                            namespaces:
-                                              description: namespaces specifies which
-                                                namespaces the labelSelector applies
-                                                to (matches against); null or empty
-                                                list means "this pod's namespace"
-                                              items:
-                                                type: string
-                                              type: array
-                                            topologyKey:
-                                              description: This pod should be co-located
-                                                (affinity) or not co-located (anti-affinity)
-                                                with the pods matching the labelSelector
-                                                in the specified namespaces, where co-located
-                                                is defined as running on a node whose
-                                                value of the label with key topologyKey
-                                                matches that of any node on which any
-                                                of the selected pods is running. Empty
-                                                topologyKey is not allowed.
-                                              type: string
-                                          required:
-                                            - topologyKey
-                                          type: object
-                                        weight:
-                                          description: weight associated with matching
-                                            the corresponding podAffinityTerm, in the
-                                            range 1-100.
-                                          format: int32
-                                          type: integer
-                                      required:
-                                        - podAffinityTerm
-                                        - weight
-                                      type: object
-                                    type: array
-                                  requiredDuringSchedulingIgnoredDuringExecution:
-                                    description: If the anti-affinity requirements specified
-                                      by this field are not met at scheduling time,
-                                      the pod will not be scheduled onto the node. If
-                                      the anti-affinity requirements specified by this
-                                      field cease to be met at some point during pod
-                                      execution (e.g. due to a pod label update), the
-                                      system may or may not try to eventually evict
-                                      the pod from its node. When there are multiple
-                                      elements, the lists of nodes corresponding to
-                                      each podAffinityTerm are intersected, i.e. all
-                                      terms must be satisfied.
-                                    items:
-                                      description: Defines a set of pods (namely those
-                                        matching the labelSelector relative to the given
-                                        namespace(s)) that this pod should be co-located
-                                        (affinity) or not co-located (anti-affinity)
-                                        with, where co-located is defined as running
-                                        on a node whose value of the label with key
-                                        <topologyKey> matches that of any node on which
-                                        a pod of the set of pods is running
-                                      properties:
-                                        labelSelector:
-                                          description: A label query over a set of resources,
-                                            in this case pods.
-                                          properties:
-                                            matchExpressions:
-                                              description: matchExpressions is a list
-                                                of label selector requirements. The
-                                                requirements are ANDed.
-                                              items:
-                                                description: A label selector requirement
-                                                  is a selector that contains values,
-                                                  a key, and an operator that relates
-                                                  the key and values.
-                                                properties:
-                                                  key:
-                                                    description: key is the label key
-                                                      that the selector applies to.
-                                                    type: string
-                                                  operator:
-                                                    description: operator represents
-                                                      a key's relationship to a set
-                                                      of values. Valid operators are
-                                                      In, NotIn, Exists and DoesNotExist.
-                                                    type: string
-                                                  values:
-                                                    description: values is an array
-                                                      of string values. If the operator
-                                                      is In or NotIn, the values array
-                                                      must be non-empty. If the operator
-                                                      is Exists or DoesNotExist, the
-                                                      values array must be empty. This
-                                                      array is replaced during a strategic
-                                                      merge patch.
-                                                    items:
-                                                      type: string
-                                                    type: array
-                                                required:
-                                                  - key
-                                                  - operator
-                                                type: object
-                                              type: array
-                                            matchLabels:
-                                              additionalProperties:
-                                                type: string
-                                              description: matchLabels is a map of {key,value}
-                                                pairs. A single {key,value} in the matchLabels
-                                                map is equivalent to an element of matchExpressions,
-                                                whose key field is "key", the operator
-                                                is "In", and the values array contains
-                                                only "value". The requirements are ANDed.
-                                              type: object
-                                          type: object
-                                        namespaces:
-                                          description: namespaces specifies which namespaces
-                                            the labelSelector applies to (matches against);
-                                            null or empty list means "this pod's namespace"
-                                          items:
-                                            type: string
-                                          type: array
-                                        topologyKey:
-                                          description: This pod should be co-located
-                                            (affinity) or not co-located (anti-affinity)
-                                            with the pods matching the labelSelector
-                                            in the specified namespaces, where co-located
-                                            is defined as running on a node whose value
-                                            of the label with key topologyKey matches
-                                            that of any node on which any of the selected
-                                            pods is running. Empty topologyKey is not
-                                            allowed.
-                                          type: string
-                                      required:
-                                        - topologyKey
-                                      type: object
-                                    type: array
-                                type: object
-                            type: object
-                          args:
-                            items:
-                              type: string
-                            type: array
-                          builtImage:
-                            type: string
-                          command:
-                            items:
-                              type: string
-                            type: array
-                          env:
-                            items:
-                              description: EnvVar represents an environment variable
-                                present in a Container.
-                              properties:
+                                  type: array
                                 name:
-                                  description: Name of the environment variable. Must
-                                    be a C_IDENTIFIER.
+                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                    TODO: Add other useful fields. apiVersion, kind,
+                                    uid?'
                                   type: string
-                                value:
-                                  description: 'Variable references $(VAR_NAME) are
-                                  expanded using the previous defined environment
-                                  variables in the container and any service environment
-                                  variables. If a variable cannot be resolved, the
-                                  reference in the input string will be unchanged.
-                                  The $(VAR_NAME) syntax can be escaped with a double
-                                  $$, ie: $$(VAR_NAME). Escaped references will never
-                                  be expanded, regardless of whether the variable
-                                  exists or not. Defaults to "".'
+                                optional:
+                                  description: Specify whether the ConfigMap or its
+                                    keys must be defined
+                                  type: boolean
+                              type: object
+                            csi:
+                              description: CSI (Container Storage Interface) represents
+                                storage that is handled by an external CSI driver
+                                (Alpha feature).
+                              properties:
+                                driver:
+                                  description: Driver is the name of the CSI driver
+                                    that handles this volume. Consult with your admin
+                                    for the correct name as registered in the cluster.
                                   type: string
-                                valueFrom:
-                                  description: Source for the environment variable's
-                                    value. Cannot be used if value is not empty.
+                                fsType:
+                                  description: Filesystem type to mount. Ex. "ext4",
+                                    "xfs", "ntfs". If not provided, the empty value
+                                    is passed to the associated CSI driver which will
+                                    determine the default filesystem to apply.
+                                  type: string
+                                nodePublishSecretRef:
+                                  description: NodePublishSecretRef is a reference
+                                    to the secret object containing sensitive information
+                                    to pass to the CSI driver to complete the CSI
+                                    NodePublishVolume and NodeUnpublishVolume calls.
+                                    This field is optional, and  may be empty if no
+                                    secret is required. If the secret object contains
+                                    more than one secret, all secret references are
+                                    passed.
                                   properties:
-                                    configMapKeyRef:
-                                      description: Selects a key of a ConfigMap.
-                                      properties:
-                                        key:
-                                          description: The key to select.
-                                          type: string
-                                        name:
-                                          description: 'Name of the referent. More info:
-                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                          TODO: Add other useful fields. apiVersion,
-                                          kind, uid?'
-                                          type: string
-                                        optional:
-                                          description: Specify whether the ConfigMap
-                                            or its key must be defined
-                                          type: boolean
-                                      required:
-                                        - key
-                                      type: object
-                                    fieldRef:
-                                      description: 'Selects a field of the pod: supports
-                                      metadata.name, metadata.namespace, metadata.labels,
-                                      metadata.annotations, spec.nodeName, spec.serviceAccountName,
-                                      status.hostIP, status.podIP, status.podIPs.'
-                                      properties:
-                                        apiVersion:
-                                          description: Version of the schema the FieldPath
-                                            is written in terms of, defaults to "v1".
-                                          type: string
-                                        fieldPath:
-                                          description: Path of the field to select in
-                                            the specified API version.
-                                          type: string
-                                      required:
-                                        - fieldPath
-                                      type: object
-                                    resourceFieldRef:
-                                      description: 'Selects a resource of the container:
-                                      only resources limits and requests (limits.cpu,
-                                      limits.memory, limits.ephemeral-storage, requests.cpu,
-                                      requests.memory and requests.ephemeral-storage)
-                                      are currently supported.'
-                                      properties:
-                                        containerName:
-                                          description: 'Container name: required for
-                                          volumes, optional for env vars'
-                                          type: string
-                                        divisor:
-                                          anyOf:
-                                            - type: integer
-                                            - type: string
-                                          description: Specifies the output format of
-                                            the exposed resources, defaults to "1"
-                                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
-                                          x-kubernetes-int-or-string: true
-                                        resource:
-                                          description: 'Required: resource to select'
-                                          type: string
-                                      required:
-                                        - resource
-                                      type: object
-                                    secretKeyRef:
-                                      description: Selects a key of a secret in the
-                                        pod's namespace
-                                      properties:
-                                        key:
-                                          description: The key of the secret to select
-                                            from.  Must be a valid secret key.
-                                          type: string
-                                        name:
-                                          description: 'Name of the referent. More info:
-                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                          TODO: Add other useful fields. apiVersion,
-                                          kind, uid?'
-                                          type: string
-                                        optional:
-                                          description: Specify whether the Secret or
-                                            its key must be defined
-                                          type: boolean
-                                      required:
-                                        - key
-                                      type: object
+                                    name:
+                                      description: 'Name of the referent. More info:
+                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                        TODO: Add other useful fields. apiVersion,
+                                        kind, uid?'
+                                      type: string
+                                  type: object
+                                readOnly:
+                                  description: Specifies a read-only configuration
+                                    for the volume. Defaults to false (read/write).
+                                  type: boolean
+                                volumeAttributes:
+                                  additionalProperties:
+                                    type: string
+                                  description: VolumeAttributes stores driver-specific
+                                    properties that are passed to the CSI driver.
+                                    Consult your driver's documentation for supported
+                                    values.
                                   type: object
                               required:
-                                - name
+                                - driver
                               type: object
-                            type: array
-                          image:
-                            type: string
-                          name:
-                            type: string
-                          securityContext:
-                            description: SecurityContext holds security configuration
-                              that will be applied to a container. Some fields are present
-                              in both SecurityContext and PodSecurityContext.  When
-                              both are set, the values in SecurityContext take precedence.
-                            properties:
-                              allowPrivilegeEscalation:
-                                description: 'AllowPrivilegeEscalation controls whether
-                                a process can gain more privileges than its parent
-                                process. This bool directly controls if the no_new_privs
-                                flag will be set on the container process. AllowPrivilegeEscalation
-                                is true always when the container is: 1) run as Privileged
-                                2) has CAP_SYS_ADMIN'
-                                type: boolean
-                              capabilities:
-                                description: The capabilities to add/drop when running
-                                  containers. Defaults to the default set of capabilities
-                                  granted by the container runtime.
-                                properties:
-                                  add:
-                                    description: Added capabilities
-                                    items:
-                                      description: Capability represent POSIX capabilities
-                                        type
-                                      type: string
-                                    type: array
-                                  drop:
-                                    description: Removed capabilities
-                                    items:
-                                      description: Capability represent POSIX capabilities
-                                        type
-                                      type: string
-                                    type: array
-                                type: object
-                              privileged:
-                                description: Run container in privileged mode. Processes
-                                  in privileged containers are essentially equivalent
-                                  to root on the host. Defaults to false.
-                                type: boolean
-                              procMount:
-                                description: procMount denotes the type of proc mount
-                                  to use for the containers. The default is DefaultProcMount
-                                  which uses the container runtime defaults for readonly
-                                  paths and masked paths. This requires the ProcMountType
-                                  feature flag to be enabled.
-                                type: string
-                              readOnlyRootFilesystem:
-                                description: Whether this container has a read-only
-                                  root filesystem. Default is false.
-                                type: boolean
-                              runAsGroup:
-                                description: The GID to run the entrypoint of the container
-                                  process. Uses runtime default if unset. May also be
-                                  set in PodSecurityContext.  If set in both SecurityContext
-                                  and PodSecurityContext, the value specified in SecurityContext
-                                  takes precedence.
-                                format: int64
-                                type: integer
-                              runAsNonRoot:
-                                description: Indicates that the container must run as
-                                  a non-root user. If true, the Kubelet will validate
-                                  the image at runtime to ensure that it does not run
-                                  as UID 0 (root) and fail to start the container if
-                                  it does. If unset or false, no such validation will
-                                  be performed. May also be set in PodSecurityContext.  If
-                                  set in both SecurityContext and PodSecurityContext,
-                                  the value specified in SecurityContext takes precedence.
-                                type: boolean
-                              runAsUser:
-                                description: The UID to run the entrypoint of the container
-                                  process. Defaults to user specified in image metadata
-                                  if unspecified. May also be set in PodSecurityContext.  If
-                                  set in both SecurityContext and PodSecurityContext,
-                                  the value specified in SecurityContext takes precedence.
-                                format: int64
-                                type: integer
-                              seLinuxOptions:
-                                description: The SELinux context to be applied to the
-                                  container. If unspecified, the container runtime will
-                                  allocate a random SELinux context for each container.  May
-                                  also be set in PodSecurityContext.  If set in both
-                                  SecurityContext and PodSecurityContext, the value
-                                  specified in SecurityContext takes precedence.
-                                properties:
-                                  level:
-                                    description: Level is SELinux level label that applies
-                                      to the container.
-                                    type: string
-                                  role:
-                                    description: Role is a SELinux role label that applies
-                                      to the container.
-                                    type: string
-                                  type:
-                                    description: Type is a SELinux type label that applies
-                                      to the container.
-                                    type: string
-                                  user:
-                                    description: User is a SELinux user label that applies
-                                      to the container.
-                                    type: string
-                                type: object
-                              windowsOptions:
-                                description: The Windows specific settings applied to
-                                  all containers. If unspecified, the options from the
-                                  PodSecurityContext will be used. If set in both SecurityContext
-                                  and PodSecurityContext, the value specified in SecurityContext
-                                  takes precedence.
-                                properties:
-                                  gmsaCredentialSpec:
-                                    description: GMSACredentialSpec is where the GMSA
-                                      admission webhook (https://github.com/kubernetes-sigs/windows-gmsa)
-                                      inlines the contents of the GMSA credential spec
-                                      named by the GMSACredentialSpecName field.
-                                    type: string
-                                  gmsaCredentialSpecName:
-                                    description: GMSACredentialSpecName is the name
-                                      of the GMSA credential spec to use.
-                                    type: string
-                                  runAsUserName:
-                                    description: The UserName in Windows to run the
-                                      entrypoint of the container process. Defaults
-                                      to the user specified in image metadata if unspecified.
-                                      May also be set in PodSecurityContext. If set
-                                      in both SecurityContext and PodSecurityContext,
-                                      the value specified in SecurityContext takes precedence.
-                                    type: string
-                                type: object
-                            type: object
-                          volumeMounts:
-                            items:
-                              description: VolumeMount describes a mounting of a Volume
-                                within a container.
+                            downwardAPI:
+                              description: DownwardAPI represents downward API about
+                                the pod that should populate this volume
                               properties:
-                                mountPath:
-                                  description: Path within the container at which the
-                                    volume should be mounted.  Must not contain ':'.
+                                defaultMode:
+                                  description: 'Optional: mode bits to use on created
+                                    files by default. Must be a value between 0 and
+                                    0777. Defaults to 0644. Directories within the
+                                    path are not affected by this setting. This might
+                                    be in conflict with other options that affect
+                                    the file mode, like fsGroup, and the result can
+                                    be other mode bits set.'
+                                  format: int32
+                                  type: integer
+                                items:
+                                  description: Items is a list of downward API volume
+                                    file
+                                  items:
+                                    description: DownwardAPIVolumeFile represents
+                                      information to create the file containing the
+                                      pod field
+                                    properties:
+                                      fieldRef:
+                                        description: 'Required: Selects a field of
+                                          the pod: only annotations, labels, name
+                                          and namespace are supported.'
+                                        properties:
+                                          apiVersion:
+                                            description: Version of the schema the
+                                              FieldPath is written in terms of, defaults
+                                              to "v1".
+                                            type: string
+                                          fieldPath:
+                                            description: Path of the field to select
+                                              in the specified API version.
+                                            type: string
+                                        required:
+                                          - fieldPath
+                                        type: object
+                                      mode:
+                                        description: 'Optional: mode bits to use on
+                                          this file, must be a value between 0 and
+                                          0777. If not specified, the volume defaultMode
+                                          will be used. This might be in conflict
+                                          with other options that affect the file
+                                          mode, like fsGroup, and the result can be
+                                          other mode bits set.'
+                                        format: int32
+                                        type: integer
+                                      path:
+                                        description: 'Required: Path is  the relative
+                                          path name of the file to be created. Must
+                                          not be absolute or contain the ''..'' path.
+                                          Must be utf-8 encoded. The first item of
+                                          the relative path must not start with ''..'''
+                                        type: string
+                                      resourceFieldRef:
+                                        description: 'Selects a resource of the container:
+                                          only resources limits and requests (limits.cpu,
+                                          limits.memory, requests.cpu and requests.memory)
+                                          are currently supported.'
+                                        properties:
+                                          containerName:
+                                            description: 'Container name: required
+                                              for volumes, optional for env vars'
+                                            type: string
+                                          divisor:
+                                            anyOf:
+                                              - type: integer
+                                              - type: string
+                                            description: Specifies the output format
+                                              of the exposed resources, defaults to
+                                              "1"
+                                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+                                            x-kubernetes-int-or-string: true
+                                          resource:
+                                            description: 'Required: resource to select'
+                                            type: string
+                                        required:
+                                          - resource
+                                        type: object
+                                    required:
+                                      - path
+                                    type: object
+                                  type: array
+                              type: object
+                            emptyDir:
+                              description: 'EmptyDir represents a temporary directory
+                                that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
+                              properties:
+                                medium:
+                                  description: 'What type of storage medium should
+                                    back this directory. The default is "" which means
+                                    to use the node''s default medium. Must be an
+                                    empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
                                   type: string
-                                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.
+                                sizeLimit:
+                                  anyOf:
+                                    - type: integer
+                                    - type: string
+                                  description: 'Total amount of local storage required
+                                    for this EmptyDir volume. The size limit is also
+                                    applicable for memory medium. The maximum usage
+                                    on memory medium EmptyDir would be the minimum
+                                    value between the SizeLimit specified here and
+                                    the sum of memory limits of all containers in
+                                    a pod. The default is nil which means that the
+                                    limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir'
+                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+                                  x-kubernetes-int-or-string: true
+                              type: object
+                            fc:
+                              description: FC represents a Fibre Channel resource
+                                that is attached to a kubelet's host machine and then
+                                exposed to the pod.
+                              properties:
+                                fsType:
+                                  description: 'Filesystem type to mount. Must be
+                                    a filesystem type supported by the host operating
+                                    system. Ex. "ext4", "xfs", "ntfs". Implicitly
+                                    inferred to be "ext4" if unspecified. TODO: how
+                                    do we prevent errors in the filesystem from compromising
+                                    the machine'
                                   type: string
-                                name:
-                                  description: This must match the Name of a Volume.
+                                lun:
+                                  description: 'Optional: FC target lun number'
+                                  format: int32
+                                  type: integer
+                                readOnly:
+                                  description: 'Optional: Defaults to false (read/write).
+                                    ReadOnly here will force the ReadOnly setting
+                                    in VolumeMounts.'
+                                  type: boolean
+                                targetWWNs:
+                                  description: 'Optional: FC target worldwide names
+                                    (WWNs)'
+                                  items:
+                                    type: string
+                                  type: array
+                                wwids:
+                                  description: 'Optional: FC volume world wide identifiers
+                                    (wwids) Either wwids or combination of targetWWNs
+                                    and lun must be set, but not both simultaneously.'
+                                  items:
+                                    type: string
+                                  type: array
+                              type: object
+                            flexVolume:
+                              description: FlexVolume represents a generic volume
+                                resource that is provisioned/attached using an exec
+                                based plugin.
+                              properties:
+                                driver:
+                                  description: Driver is the name of the driver to
+                                    use for this volume.
+                                  type: string
+                                fsType:
+                                  description: Filesystem type to mount. Must be a
+                                    filesystem type supported by the host operating
+                                    system. Ex. "ext4", "xfs", "ntfs". The default
+                                    filesystem depends on FlexVolume script.
+                                  type: string
+                                options:
+                                  additionalProperties:
+                                    type: string
+                                  description: 'Optional: Extra command options if
+                                    any.'
+                                  type: object
+                                readOnly:
+                                  description: 'Optional: Defaults to false (read/write).
+                                    ReadOnly here will force the ReadOnly setting
+                                    in VolumeMounts.'
+                                  type: boolean
+                                secretRef:
+                                  description: 'Optional: SecretRef is reference to
+                                    the secret object containing sensitive information
+                                    to pass to the plugin scripts. This may be empty
+                                    if no secret object is specified. If the secret
+                                    object contains more than one secret, all secrets
+                                    are passed to the plugin scripts.'
+                                  properties:
+                                    name:
+                                      description: 'Name of the referent. More info:
+                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                        TODO: Add other useful fields. apiVersion,
+                                        kind, uid?'
+                                      type: string
+                                  type: object
+                              required:
+                                - driver
+                              type: object
+                            flocker:
+                              description: Flocker represents a Flocker volume attached
+                                to a kubelet's host machine. This depends on the Flocker
+                                control service being running
+                              properties:
+                                datasetName:
+                                  description: Name of the dataset stored as metadata
+                                    -> name on the dataset for Flocker should be considered
+                                    as deprecated
+                                  type: string
+                                datasetUUID:
+                                  description: UUID of the dataset. This is unique
+                                    identifier of a Flocker dataset
+                                  type: string
+                              type: object
+                            gcePersistentDisk:
+                              description: 'GCEPersistentDisk represents a GCE Disk
+                                resource that is attached to a kubelet''s host machine
+                                and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+                              properties:
+                                fsType:
+                                  description: 'Filesystem type of the volume that
+                                    you want to mount. Tip: Ensure that the filesystem
+                                    type is supported by the host operating system.
+                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred
+                                    to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
+                                    TODO: how do we prevent errors in the filesystem
+                                    from compromising the machine'
+                                  type: string
+                                partition:
+                                  description: 'The partition in the volume that you
+                                    want to mount. If omitted, the default is to mount
+                                    by volume name. Examples: For volume /dev/sda1,
+                                    you specify the partition as "1". Similarly, the
+                                    volume partition for /dev/sda is "0" (or you can
+                                    leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+                                  format: int32
+                                  type: integer
+                                pdName:
+                                  description: 'Unique name of the PD resource in
+                                    GCE. Used to identify the disk in GCE. More info:
+                                    https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
                                   type: string
                                 readOnly:
-                                  description: Mounted read-only if true, read-write
-                                    otherwise (false or unspecified). Defaults to false.
+                                  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
-                                subPath:
-                                  description: Path within the volume from which the
-                                    container's volume should be mounted. Defaults to
-                                    "" (volume's root).
+                              required:
+                                - pdName
+                              type: object
+                            gitRepo:
+                              description: 'GitRepo represents a git repository at
+                                a particular revision. DEPRECATED: GitRepo is deprecated.
+                                To provision a container with a git repo, mount an
+                                EmptyDir into an InitContainer that clones the repo
+                                using git, then mount the EmptyDir into the Pod''s
+                                container.'
+                              properties:
+                                directory:
+                                  description: Target directory name. Must not contain
+                                    or start with '..'.  If '.' is supplied, the volume
+                                    directory will be the git repository.  Otherwise,
+                                    if specified, the volume will contain the git
+                                    repository in the subdirectory with the given
+                                    name.
                                   type: string
-                                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.
+                                repository:
+                                  description: Repository URL
+                                  type: string
+                                revision:
+                                  description: Commit hash for the specified revision.
                                   type: string
                               required:
-                                - mountPath
-                                - name
+                                - repository
                               type: object
-                            type: array
-                          volumes:
-                            items:
-                              description: Volume represents a named volume in a pod
-                                that may be accessed by any container in the pod.
+                            glusterfs:
+                              description: 'Glusterfs represents a Glusterfs mount
+                                on the host that shares a pod''s lifetime. More info:
+                                https://examples.k8s.io/volumes/glusterfs/README.md'
                               properties:
-                                awsElasticBlockStore:
-                                  description: 'AWSElasticBlockStore represents an AWS
-                                  Disk resource that is attached to a kubelet''s host
-                                  machine and then exposed to the pod. More info:
-                                  https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+                                endpoints:
+                                  description: 'EndpointsName is the endpoint name
+                                    that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+                                  type: string
+                                path:
+                                  description: 'Path is the Glusterfs volume path.
+                                    More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+                                  type: string
+                                readOnly:
+                                  description: 'ReadOnly here will force the Glusterfs
+                                    volume to be mounted with read-only permissions.
+                                    Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+                                  type: boolean
+                              required:
+                                - endpoints
+                                - path
+                              type: object
+                            hostPath:
+                              description: 'HostPath represents a pre-existing file
+                                or directory on the host machine that is directly
+                                exposed to the container. This is generally used for
+                                system agents or other privileged things that are
+                                allowed to see the host machine. Most containers will
+                                NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
+                                --- TODO(jonesdl) We need to restrict who can use
+                                host directory mounts and who can/can not mount host
+                                directories as read/write.'
+                              properties:
+                                path:
+                                  description: 'Path of the directory on the host.
+                                    If the path is a symlink, it will follow the link
+                                    to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
+                                  type: string
+                                type:
+                                  description: 'Type for HostPath Volume Defaults
+                                    to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
+                                  type: string
+                              required:
+                                - path
+                              type: object
+                            iscsi:
+                              description: 'ISCSI represents an ISCSI Disk resource
+                                that is attached to a kubelet''s host machine and
+                                then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'
+                              properties:
+                                chapAuthDiscovery:
+                                  description: whether support iSCSI Discovery CHAP
+                                    authentication
+                                  type: boolean
+                                chapAuthSession:
+                                  description: whether support iSCSI Session CHAP
+                                    authentication
+                                  type: boolean
+                                fsType:
+                                  description: 'Filesystem type of the volume that
+                                    you want to mount. Tip: Ensure that the filesystem
+                                    type is supported by the host operating system.
+                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred
+                                    to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
+                                    TODO: how do we prevent errors in the filesystem
+                                    from compromising the machine'
+                                  type: string
+                                initiatorName:
+                                  description: Custom iSCSI Initiator Name. If initiatorName
+                                    is specified with iscsiInterface simultaneously,
+                                    new iSCSI interface <target portal>:<volume name>
+                                    will be created for the connection.
+                                  type: string
+                                iqn:
+                                  description: Target iSCSI Qualified Name.
+                                  type: string
+                                iscsiInterface:
+                                  description: iSCSI Interface Name that uses an iSCSI
+                                    transport. Defaults to 'default' (tcp).
+                                  type: string
+                                lun:
+                                  description: iSCSI Target Lun number.
+                                  format: int32
+                                  type: integer
+                                portals:
+                                  description: iSCSI Target Portal List. The portal
+                                    is either an IP or ip_addr:port if the port is
+                                    other than default (typically TCP ports 860 and
+                                    3260).
+                                  items:
+                                    type: string
+                                  type: array
+                                readOnly:
+                                  description: ReadOnly here will force the ReadOnly
+                                    setting in VolumeMounts. Defaults to false.
+                                  type: boolean
+                                secretRef:
+                                  description: CHAP Secret for iSCSI target and initiator
+                                    authentication
                                   properties:
-                                    fsType:
-                                      description: 'Filesystem type of the volume that
-                                      you want to mount. Tip: Ensure that the filesystem
-                                      type is supported by the host operating system.
-                                      Examples: "ext4", "xfs", "ntfs". Implicitly
-                                      inferred to be "ext4" if unspecified. More info:
-                                      https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
-                                      TODO: how do we prevent errors in the filesystem
-                                      from compromising the machine'
+                                    name:
+                                      description: 'Name of the referent. More info:
+                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                        TODO: Add other useful fields. apiVersion,
+                                        kind, uid?'
                                       type: string
-                                    partition:
-                                      description: 'The partition in the volume that
-                                      you want to mount. If omitted, the default is
-                                      to mount by volume name. Examples: For volume
-                                      /dev/sda1, you specify the partition as "1".
-                                      Similarly, the volume partition for /dev/sda
-                                      is "0" (or you can leave the property empty).'
+                                  type: object
+                                targetPortal:
+                                  description: iSCSI Target Portal. The Portal is
+                                    either an IP or ip_addr:port if the port is other
+                                    than default (typically TCP ports 860 and 3260).
+                                  type: string
+                              required:
+                                - iqn
+                                - lun
+                                - targetPortal
+                              type: object
+                            name:
+                              description: 'Volume''s name. Must be a DNS_LABEL and
+                                unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+                              type: string
+                            nfs:
+                              description: 'NFS represents an NFS mount on the host
+                                that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+                              properties:
+                                path:
+                                  description: 'Path that is exported by the NFS server.
+                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+                                  type: string
+                                readOnly:
+                                  description: 'ReadOnly here will force the NFS export
+                                    to be mounted with read-only permissions. Defaults
+                                    to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+                                  type: boolean
+                                server:
+                                  description: 'Server is the hostname or IP address
+                                    of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+                                  type: string
+                              required:
+                                - path
+                                - server
+                              type: object
+                            persistentVolumeClaim:
+                              description: 'PersistentVolumeClaimVolumeSource represents
+                                a reference to a PersistentVolumeClaim in the same
+                                namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
+                              properties:
+                                claimName:
+                                  description: 'ClaimName is the name of a PersistentVolumeClaim
+                                    in the same namespace as the pod using this volume.
+                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
+                                  type: string
+                                readOnly:
+                                  description: Will force the ReadOnly setting in
+                                    VolumeMounts. Default false.
+                                  type: boolean
+                              required:
+                                - claimName
+                              type: object
+                            photonPersistentDisk:
+                              description: PhotonPersistentDisk represents a PhotonController
+                                persistent disk attached and mounted on kubelets host
+                                machine
+                              properties:
+                                fsType:
+                                  description: Filesystem type to mount. Must be a
+                                    filesystem type supported by the host operating
+                                    system. Ex. "ext4", "xfs", "ntfs". Implicitly
+                                    inferred to be "ext4" if unspecified.
+                                  type: string
+                                pdID:
+                                  description: ID that identifies Photon Controller
+                                    persistent disk
+                                  type: string
+                              required:
+                                - pdID
+                              type: object
+                            portworxVolume:
+                              description: PortworxVolume represents a portworx volume
+                                attached and mounted on kubelets host machine
+                              properties:
+                                fsType:
+                                  description: FSType represents the filesystem type
+                                    to mount Must be a filesystem type supported by
+                                    the host operating system. Ex. "ext4", "xfs".
+                                    Implicitly inferred to be "ext4" if unspecified.
+                                  type: string
+                                readOnly:
+                                  description: Defaults to false (read/write). ReadOnly
+                                    here will force the ReadOnly setting in VolumeMounts.
+                                  type: boolean
+                                volumeID:
+                                  description: VolumeID uniquely identifies a Portworx
+                                    volume
+                                  type: string
+                              required:
+                                - volumeID
+                              type: object
+                            projected:
+                              description: Items for all in one resources secrets,
+                                configmaps, and downward API
+                              properties:
+                                defaultMode:
+                                  description: Mode bits to use on created files by
+                                    default. Must be a value between 0 and 0777. Directories
+                                    within the path are not affected by this setting.
+                                    This might be in conflict with other options that
+                                    affect the file mode, like fsGroup, and the result
+                                    can be other mode bits set.
+                                  format: int32
+                                  type: integer
+                                sources:
+                                  description: list of volume projections
+                                  items:
+                                    description: Projection that may be projected
+                                      along with other supported volume types
+                                    properties:
+                                      configMap:
+                                        description: information about the configMap
+                                          data to project
+                                        properties:
+                                          items:
+                                            description: If unspecified, each key-value
+                                              pair in the Data field of the referenced
+                                              ConfigMap will be projected into the
+                                              volume as a file whose name is the key
+                                              and content is the value. If specified,
+                                              the listed keys will be projected into
+                                              the specified paths, and unlisted keys
+                                              will not be present. If a key is specified
+                                              which is not present in the ConfigMap,
+                                              the volume setup will error unless it
+                                              is marked optional. Paths must be relative
+                                              and may not contain the '..' path or
+                                              start with '..'.
+                                            items:
+                                              description: Maps a string key to a
+                                                path within a volume.
+                                              properties:
+                                                key:
+                                                  description: The key to project.
+                                                  type: string
+                                                mode:
+                                                  description: 'Optional: mode bits
+                                                    to use on this file, must be a
+                                                    value between 0 and 0777. If not
+                                                    specified, the volume defaultMode
+                                                    will be used. This might be in
+                                                    conflict with other options that
+                                                    affect the file mode, like fsGroup,
+                                                    and the result can be other mode
+                                                    bits set.'
+                                                  format: int32
+                                                  type: integer
+                                                path:
+                                                  description: The relative path of
+                                                    the file to map the key to. May
+                                                    not be an absolute path. May not
+                                                    contain the path element '..'.
+                                                    May not start with the string
+                                                    '..'.
+                                                  type: string
+                                              required:
+                                                - key
+                                                - path
+                                              type: object
+                                            type: array
+                                          name:
+                                            description: 'Name of the referent. More
+                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                              TODO: Add other useful fields. apiVersion,
+                                              kind, uid?'
+                                            type: string
+                                          optional:
+                                            description: Specify whether the ConfigMap
+                                              or its keys must be defined
+                                            type: boolean
+                                        type: object
+                                      downwardAPI:
+                                        description: information about the downwardAPI
+                                          data to project
+                                        properties:
+                                          items:
+                                            description: Items is a list of DownwardAPIVolume
+                                              file
+                                            items:
+                                              description: DownwardAPIVolumeFile represents
+                                                information to create the file containing
+                                                the pod field
+                                              properties:
+                                                fieldRef:
+                                                  description: 'Required: Selects
+                                                    a field of the pod: only annotations,
+                                                    labels, name and namespace are
+                                                    supported.'
+                                                  properties:
+                                                    apiVersion:
+                                                      description: Version of the
+                                                        schema the FieldPath is written
+                                                        in terms of, defaults to "v1".
+                                                      type: string
+                                                    fieldPath:
+                                                      description: Path of the field
+                                                        to select in the specified
+                                                        API version.
+                                                      type: string
+                                                  required:
+                                                    - fieldPath
+                                                  type: object
+                                                mode:
+                                                  description: 'Optional: mode bits
+                                                    to use on this file, must be a
+                                                    value between 0 and 0777. If not
+                                                    specified, the volume defaultMode
+                                                    will be used. This might be in
+                                                    conflict with other options that
+                                                    affect the file mode, like fsGroup,
+                                                    and the result can be other mode
+                                                    bits set.'
+                                                  format: int32
+                                                  type: integer
+                                                path:
+                                                  description: 'Required: Path is  the
+                                                    relative path name of the file
+                                                    to be created. Must not be absolute
+                                                    or contain the ''..'' path. Must
+                                                    be utf-8 encoded. The first item
+                                                    of the relative path must not
+                                                    start with ''..'''
+                                                  type: string
+                                                resourceFieldRef:
+                                                  description: 'Selects a resource
+                                                    of the container: only resources
+                                                    limits and requests (limits.cpu,
+                                                    limits.memory, requests.cpu and
+                                                    requests.memory) are currently
+                                                    supported.'
+                                                  properties:
+                                                    containerName:
+                                                      description: 'Container name:
+                                                        required for volumes, optional
+                                                        for env vars'
+                                                      type: string
+                                                    divisor:
+                                                      anyOf:
+                                                        - type: integer
+                                                        - type: string
+                                                      description: Specifies the output
+                                                        format of the exposed resources,
+                                                        defaults to "1"
+                                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+                                                      x-kubernetes-int-or-string: true
+                                                    resource:
+                                                      description: 'Required: resource
+                                                        to select'
+                                                      type: string
+                                                  required:
+                                                    - resource
+                                                  type: object
+                                              required:
+                                                - path
+                                              type: object
+                                            type: array
+                                        type: object
+                                      secret:
+                                        description: information about the secret
+                                          data to project
+                                        properties:
+                                          items:
+                                            description: If unspecified, each key-value
+                                              pair in the Data field of the referenced
+                                              Secret will be projected into the volume
+                                              as a file whose name is the key and
+                                              content is the value. If specified,
+                                              the listed keys will be projected into
+                                              the specified paths, and unlisted keys
+                                              will not be present. If a key is specified
+                                              which is not present in the Secret,
+                                              the volume setup will error unless it
+                                              is marked optional. Paths must be relative
+                                              and may not contain the '..' path or
+                                              start with '..'.
+                                            items:
+                                              description: Maps a string key to a
+                                                path within a volume.
+                                              properties:
+                                                key:
+                                                  description: The key to project.
+                                                  type: string
+                                                mode:
+                                                  description: 'Optional: mode bits
+                                                    to use on this file, must be a
+                                                    value between 0 and 0777. If not
+                                                    specified, the volume defaultMode
+                                                    will be used. This might be in
+                                                    conflict with other options that
+                                                    affect the file mode, like fsGroup,
+                                                    and the result can be other mode
+                                                    bits set.'
+                                                  format: int32
+                                                  type: integer
+                                                path:
+                                                  description: The relative path of
+                                                    the file to map the key to. May
+                                                    not be an absolute path. May not
+                                                    contain the path element '..'.
+                                                    May not start with the string
+                                                    '..'.
+                                                  type: string
+                                              required:
+                                                - key
+                                                - path
+                                              type: object
+                                            type: array
+                                          name:
+                                            description: 'Name of the referent. More
+                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                              TODO: Add other useful fields. apiVersion,
+                                              kind, uid?'
+                                            type: string
+                                          optional:
+                                            description: Specify whether the Secret
+                                              or its key must be defined
+                                            type: boolean
+                                        type: object
+                                      serviceAccountToken:
+                                        description: information about the serviceAccountToken
+                                          data to project
+                                        properties:
+                                          audience:
+                                            description: Audience is the intended
+                                              audience of the token. A recipient of
+                                              a token must identify itself with an
+                                              identifier specified in the audience
+                                              of the token, and otherwise should reject
+                                              the token. The audience defaults to
+                                              the identifier of the apiserver.
+                                            type: string
+                                          expirationSeconds:
+                                            description: ExpirationSeconds is the
+                                              requested duration of validity of the
+                                              service account token. As the token
+                                              approaches expiration, the kubelet volume
+                                              plugin will proactively rotate the service
+                                              account token. The kubelet will start
+                                              trying to rotate the token if the token
+                                              is older than 80 percent of its time
+                                              to live or if the token is older than
+                                              24 hours.Defaults to 1 hour and must
+                                              be at least 10 minutes.
+                                            format: int64
+                                            type: integer
+                                          path:
+                                            description: Path is the path relative
+                                              to the mount point of the file to project
+                                              the token into.
+                                            type: string
+                                        required:
+                                          - path
+                                        type: object
+                                    type: object
+                                  type: array
+                              required:
+                                - sources
+                              type: object
+                            quobyte:
+                              description: Quobyte represents a Quobyte mount on the
+                                host that shares a pod's lifetime
+                              properties:
+                                group:
+                                  description: Group to map volume access to Default
+                                    is no group
+                                  type: string
+                                readOnly:
+                                  description: ReadOnly here will force the Quobyte
+                                    volume to be mounted with read-only permissions.
+                                    Defaults to false.
+                                  type: boolean
+                                registry:
+                                  description: Registry represents a single or multiple
+                                    Quobyte Registry services specified as a string
+                                    as host:port pair (multiple entries are separated
+                                    with commas) which acts as the central registry
+                                    for volumes
+                                  type: string
+                                tenant:
+                                  description: Tenant owning the given Quobyte volume
+                                    in the Backend Used with dynamically provisioned
+                                    Quobyte volumes, value is set by the plugin
+                                  type: string
+                                user:
+                                  description: User to map volume access to Defaults
+                                    to serivceaccount user
+                                  type: string
+                                volume:
+                                  description: Volume is a string that references
+                                    an already created Quobyte volume by name.
+                                  type: string
+                              required:
+                                - registry
+                                - volume
+                              type: object
+                            rbd:
+                              description: 'RBD represents a Rados Block Device mount
+                                on the host that shares a pod''s lifetime. More info:
+                                https://examples.k8s.io/volumes/rbd/README.md'
+                              properties:
+                                fsType:
+                                  description: 'Filesystem type of the volume that
+                                    you want to mount. Tip: Ensure that the filesystem
+                                    type is supported by the host operating system.
+                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred
+                                    to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
+                                    TODO: how do we prevent errors in the filesystem
+                                    from compromising the machine'
+                                  type: string
+                                image:
+                                  description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+                                  type: string
+                                keyring:
+                                  description: 'Keyring is the path to key ring for
+                                    RBDUser. Default is /etc/ceph/keyring. More info:
+                                    https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+                                  type: string
+                                monitors:
+                                  description: 'A collection of Ceph monitors. More
+                                    info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+                                  items:
+                                    type: string
+                                  type: array
+                                pool:
+                                  description: 'The rados pool name. Default is rbd.
+                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+                                  type: string
+                                readOnly:
+                                  description: 'ReadOnly here will force the ReadOnly
+                                    setting in VolumeMounts. Defaults to false. More
+                                    info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+                                  type: boolean
+                                secretRef:
+                                  description: 'SecretRef is name of the authentication
+                                    secret for RBDUser. If provided overrides keyring.
+                                    Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+                                  properties:
+                                    name:
+                                      description: 'Name of the referent. More info:
+                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                        TODO: Add other useful fields. apiVersion,
+                                        kind, uid?'
+                                      type: string
+                                  type: object
+                                user:
+                                  description: 'The rados user name. Default is admin.
+                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+                                  type: string
+                              required:
+                                - image
+                                - monitors
+                              type: object
+                            scaleIO:
+                              description: ScaleIO represents a ScaleIO persistent
+                                volume attached and mounted on Kubernetes nodes.
+                              properties:
+                                fsType:
+                                  description: Filesystem type to mount. Must be a
+                                    filesystem type supported by the host operating
+                                    system. Ex. "ext4", "xfs", "ntfs". Default is
+                                    "xfs".
+                                  type: string
+                                gateway:
+                                  description: The host address of the ScaleIO API
+                                    Gateway.
+                                  type: string
+                                protectionDomain:
+                                  description: The name of the ScaleIO Protection
+                                    Domain for the configured storage.
+                                  type: string
+                                readOnly:
+                                  description: Defaults to false (read/write). ReadOnly
+                                    here will force the ReadOnly setting in VolumeMounts.
+                                  type: boolean
+                                secretRef:
+                                  description: SecretRef references to the secret
+                                    for ScaleIO user and other sensitive information.
+                                    If this is not provided, Login operation will
+                                    fail.
+                                  properties:
+                                    name:
+                                      description: 'Name of the referent. More info:
+                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                        TODO: Add other useful fields. apiVersion,
+                                        kind, uid?'
+                                      type: string
+                                  type: object
+                                sslEnabled:
+                                  description: Flag to enable/disable SSL communication
+                                    with Gateway, default false
+                                  type: boolean
+                                storageMode:
+                                  description: Indicates whether the storage for a
+                                    volume should be ThickProvisioned or ThinProvisioned.
+                                    Default is ThinProvisioned.
+                                  type: string
+                                storagePool:
+                                  description: The ScaleIO Storage Pool associated
+                                    with the protection domain.
+                                  type: string
+                                system:
+                                  description: The name of the storage system as configured
+                                    in ScaleIO.
+                                  type: string
+                                volumeName:
+                                  description: The name of a volume already created
+                                    in the ScaleIO system that is associated with
+                                    this volume source.
+                                  type: string
+                              required:
+                                - gateway
+                                - secretRef
+                                - system
+                              type: object
+                            secret:
+                              description: 'Secret represents a secret that should
+                                populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
+                              properties:
+                                defaultMode:
+                                  description: 'Optional: mode bits to use on created
+                                    files by default. Must be a value between 0 and
+                                    0777. Defaults to 0644. Directories within the
+                                    path are not affected by this setting. This might
+                                    be in conflict with other options that affect
+                                    the file mode, like fsGroup, and the result can
+                                    be other mode bits set.'
+                                  format: int32
+                                  type: integer
+                                items:
+                                  description: If unspecified, each key-value pair
+                                    in the Data field of the referenced Secret will
+                                    be projected into the volume as a file whose name
+                                    is the key and content is the value. If specified,
+                                    the listed keys will be projected into the specified
+                                    paths, and unlisted keys will not be present.
+                                    If a key is specified which is not present in
+                                    the Secret, the volume setup will error unless
+                                    it is marked optional. Paths must be relative
+                                    and may not contain the '..' path or start with
+                                    '..'.
+                                  items:
+                                    description: Maps a string key to a path within
+                                      a volume.
+                                    properties:
+                                      key:
+                                        description: The key to project.
+                                        type: string
+                                      mode:
+                                        description: 'Optional: mode bits to use on
+                                          this file, must be a value between 0 and
+                                          0777. If not specified, the volume defaultMode
+                                          will be used. This might be in conflict
+                                          with other options that affect the file
+                                          mode, like fsGroup, and the result can be
+                                          other mode bits set.'
+                                        format: int32
+                                        type: integer
+                                      path:
+                                        description: The relative path of the file
+                                          to map the key to. May not be an absolute
+                                          path. May not contain the path element '..'.
+                                          May not start with the string '..'.
+                                        type: string
+                                    required:
+                                      - key
+                                      - path
+                                    type: object
+                                  type: array
+                                optional:
+                                  description: Specify whether the Secret or its keys
+                                    must be defined
+                                  type: boolean
+                                secretName:
+                                  description: 'Name of the secret in the pod''s namespace
+                                    to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
+                                  type: string
+                              type: object
+                            storageos:
+                              description: StorageOS represents a StorageOS volume
+                                attached and mounted on Kubernetes nodes.
+                              properties:
+                                fsType:
+                                  description: Filesystem type to mount. Must be a
+                                    filesystem type supported by the host operating
+                                    system. Ex. "ext4", "xfs", "ntfs". Implicitly
+                                    inferred to be "ext4" if unspecified.
+                                  type: string
+                                readOnly:
+                                  description: Defaults to false (read/write). ReadOnly
+                                    here will force the ReadOnly setting in VolumeMounts.
+                                  type: boolean
+                                secretRef:
+                                  description: SecretRef specifies the secret to use
+                                    for obtaining the StorageOS API credentials.  If
+                                    not specified, default values will be attempted.
+                                  properties:
+                                    name:
+                                      description: 'Name of the referent. More info:
+                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                        TODO: Add other useful fields. apiVersion,
+                                        kind, uid?'
+                                      type: string
+                                  type: object
+                                volumeName:
+                                  description: VolumeName is the human-readable name
+                                    of the StorageOS volume.  Volume names are only
+                                    unique within a namespace.
+                                  type: string
+                                volumeNamespace:
+                                  description: VolumeNamespace specifies the scope
+                                    of the volume within StorageOS.  If no namespace
+                                    is specified then the Pod's namespace will be
+                                    used.  This allows the Kubernetes name scoping
+                                    to be mirrored within StorageOS for tighter integration.
+                                    Set VolumeName to any name to override the default
+                                    behaviour. Set to "default" if you are not using
+                                    namespaces within StorageOS. Namespaces that do
+                                    not pre-exist within StorageOS will be created.
+                                  type: string
+                              type: object
+                            vsphereVolume:
+                              description: VsphereVolume represents a vSphere volume
+                                attached and mounted on kubelets host machine
+                              properties:
+                                fsType:
+                                  description: Filesystem type to mount. Must be a
+                                    filesystem type supported by the host operating
+                                    system. Ex. "ext4", "xfs", "ntfs". Implicitly
+                                    inferred to be "ext4" if unspecified.
+                                  type: string
+                                storagePolicyID:
+                                  description: Storage Policy Based Management (SPBM)
+                                    profile ID associated with the StoragePolicyName.
+                                  type: string
+                                storagePolicyName:
+                                  description: Storage Policy Based Management (SPBM)
+                                    profile name.
+                                  type: string
+                                volumePath:
+                                  description: Path that identifies vSphere volume
+                                    vmdk
+                                  type: string
+                              required:
+                                - volumePath
+                              type: object
+                          required:
+                            - name
+                          type: object
+                        type: array
+                    type: object
+                  image:
+                    description: ImageTask --
+                    properties:
+                      affinity:
+                        description: Affinity is a group of affinity scheduling rules.
+                        properties:
+                          nodeAffinity:
+                            description: Describes node affinity scheduling rules
+                              for the pod.
+                            properties:
+                              preferredDuringSchedulingIgnoredDuringExecution:
+                                description: The scheduler will prefer to schedule
+                                  pods to nodes that satisfy the affinity expressions
+                                  specified by this field, but it may choose a node
+                                  that violates one or more of the expressions. The
+                                  node that is most preferred is the one with the
+                                  greatest sum of weights, i.e. for each node that
+                                  meets all of the scheduling requirements (resource
+                                  request, requiredDuringScheduling affinity expressions,
+                                  etc.), compute a sum by iterating through the elements
+                                  of this field and adding "weight" to the sum if
+                                  the node matches the corresponding matchExpressions;
+                                  the node(s) with the highest sum are the most preferred.
+                                items:
+                                  description: An empty preferred scheduling term
+                                    matches all objects with implicit weight 0 (i.e.
+                                    it's a no-op). A null preferred scheduling term
+                                    matches no objects (i.e. is also a no-op).
+                                  properties:
+                                    preference:
+                                      description: A node selector term, associated
+                                        with the corresponding weight.
+                                      properties:
+                                        matchExpressions:
+                                          description: A list of node selector requirements
+                                            by node's labels.
+                                          items:
+                                            description: A node selector requirement
+                                              is a selector that contains values,
+                                              a key, and an operator that relates
+                                              the key and values.
+                                            properties:
+                                              key:
+                                                description: The label key that the
+                                                  selector applies to.
+                                                type: string
+                                              operator:
+                                                description: Represents a key's relationship
+                                                  to a set of values. Valid operators
+                                                  are In, NotIn, Exists, DoesNotExist.
+                                                  Gt, and Lt.
+                                                type: string
+                                              values:
+                                                description: An array of string values.
+                                                  If the operator is In or NotIn,
+                                                  the values array must be non-empty.
+                                                  If the operator is Exists or DoesNotExist,
+                                                  the values array must be empty.
+                                                  If the operator is Gt or Lt, the
+                                                  values array must have a single
+                                                  element, which will be interpreted
+                                                  as an integer. This array is replaced
+                                                  during a strategic merge patch.
+                                                items:
+                                                  type: string
+                                                type: array
+                                            required:
+                                              - key
+                                              - operator
+                                            type: object
+                                          type: array
+                                        matchFields:
+                                          description: A list of node selector requirements
+                                            by node's fields.
+                                          items:
+                                            description: A node selector requirement
+                                              is a selector that contains values,
+                                              a key, and an operator that relates
+                                              the key and values.
+                                            properties:
+                                              key:
+                                                description: The label key that the
+                                                  selector applies to.
+                                                type: string
+                                              operator:
+                                                description: Represents a key's relationship
+                                                  to a set of values. Valid operators
+                                                  are In, NotIn, Exists, DoesNotExist.
+                                                  Gt, and Lt.
+                                                type: string
+                                              values:
+                                                description: An array of string values.
+                                                  If the operator is In or NotIn,
+                                                  the values array must be non-empty.
+                                                  If the operator is Exists or DoesNotExist,
+                                                  the values array must be empty.
+                                                  If the operator is Gt or Lt, the
+                                                  values array must have a single
+                                                  element, which will be interpreted
+                                                  as an integer. This array is replaced
+                                                  during a strategic merge patch.
+                                                items:
+                                                  type: string
+                                                type: array
+                                            required:
+                                              - key
+                                              - operator
+                                            type: object
+                                          type: array
+                                      type: object
+                                    weight:
+                                      description: Weight associated with matching
+                                        the corresponding nodeSelectorTerm, in the
+                                        range 1-100.
                                       format: int32
                                       type: integer
-                                    readOnly:
-                                      description: 'Specify "true" to force and set
-                                      the ReadOnly property in VolumeMounts to "true".
-                                      If omitted, the default is "false". More info:
-                                      https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
-                                      type: boolean
-                                    volumeID:
-                                      description: 'Unique ID of the persistent disk
-                                      resource in AWS (Amazon EBS volume). More info:
-                                      https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
-                                      type: string
                                   required:
-                                    - volumeID
+                                    - preference
+                                    - weight
                                   type: object
-                                azureDisk:
-                                  description: AzureDisk represents an Azure Data Disk
-                                    mount on the host and bind mount to the pod.
+                                type: array
+                              requiredDuringSchedulingIgnoredDuringExecution:
+                                description: If the affinity requirements specified
+                                  by this field are not met at scheduling time, the
+                                  pod will not be scheduled onto the node. If the
+                                  affinity requirements specified by this field cease
+                                  to be met at some point during pod execution (e.g.
+                                  due to an update), the system may or may not try
+                                  to eventually evict the pod from its node.
+                                properties:
+                                  nodeSelectorTerms:
+                                    description: Required. A list of node selector
+                                      terms. The terms are ORed.
+                                    items:
+                                      description: A null or empty node selector term
+                                        matches no objects. The requirements of them
+                                        are ANDed. The TopologySelectorTerm type implements
+                                        a subset of the NodeSelectorTerm.
+                                      properties:
+                                        matchExpressions:
+                                          description: A list of node selector requirements
+                                            by node's labels.
+                                          items:
+                                            description: A node selector requirement
+                                              is a selector that contains values,
+                                              a key, and an operator that relates
+                                              the key and values.
+                                            properties:
+                                              key:
+                                                description: The label key that the
+                                                  selector applies to.
+                                                type: string
+                                              operator:
+                                                description: Represents a key's relationship
+                                                  to a set of values. Valid operators
+                                                  are In, NotIn, Exists, DoesNotExist.
+                                                  Gt, and Lt.
+                                                type: string
+                                              values:
+                                                description: An array of string values.
+                                                  If the operator is In or NotIn,
+                                                  the values array must be non-empty.
+                                                  If the operator is Exists or DoesNotExist,
+                                                  the values array must be empty.
+                                                  If the operator is Gt or Lt, the
+                                                  values array must have a single
+                                                  element, which will be interpreted
+                                                  as an integer. This array is replaced
+                                                  during a strategic merge patch.
+                                                items:
+                                                  type: string
+                                                type: array
+                                            required:
+                                              - key
+                                              - operator
+                                            type: object
+                                          type: array
+                                        matchFields:
+                                          description: A list of node selector requirements
+                                            by node's fields.
+                                          items:
+                                            description: A node selector requirement
+                                              is a selector that contains values,
+                                              a key, and an operator that relates
+                                              the key and values.
+                                            properties:
+                                              key:
+                                                description: The label key that the
+                                                  selector applies to.
+                                                type: string
+                                              operator:
+                                                description: Represents a key's relationship
+                                                  to a set of values. Valid operators
+                                                  are In, NotIn, Exists, DoesNotExist.
+                                                  Gt, and Lt.
+                                                type: string
+                                              values:
+                                                description: An array of string values.
+                                                  If the operator is In or NotIn,
+                                                  the values array must be non-empty.
+                                                  If the operator is Exists or DoesNotExist,
+                                                  the values array must be empty.
+                                                  If the operator is Gt or Lt, the
+                                                  values array must have a single
+                                                  element, which will be interpreted
+                                                  as an integer. This array is replaced
+                                                  during a strategic merge patch.
+                                                items:
+                                                  type: string
+                                                type: array
+                                            required:
+                                              - key
+                                              - operator
+                                            type: object
+                                          type: array
+                                      type: object
+                                    type: array
+                                required:
+                                  - nodeSelectorTerms
+                                type: object
+                            type: object
+                          podAffinity:
+                            description: Describes pod affinity scheduling rules (e.g.
+                              co-locate this pod in the same node, zone, etc. as some
+                              other pod(s)).
+                            properties:
+                              preferredDuringSchedulingIgnoredDuringExecution:
+                                description: The scheduler will prefer to schedule
+                                  pods to nodes that satisfy the affinity expressions
+                                  specified by this field, but it may choose a node
+                                  that violates one or more of the expressions. The
+                                  node that is most preferred is the one with the
+                                  greatest sum of weights, i.e. for each node that
+                                  meets all of the scheduling requirements (resource
+                                  request, requiredDuringScheduling affinity expressions,
+                                  etc.), compute a sum by iterating through the elements
+                                  of this field and adding "weight" to the sum if
+                                  the node has pods which matches the corresponding
+                                  podAffinityTerm; the node(s) with the highest sum
+                                  are the most preferred.
+                                items:
+                                  description: The weights of all of the matched WeightedPodAffinityTerm
+                                    fields are added per-node to find the most preferred
+                                    node(s)
                                   properties:
-                                    cachingMode:
-                                      description: 'Host Caching mode: None, Read Only,
-                                      Read Write.'
-                                      type: string
-                                    diskName:
-                                      description: The Name of the data disk in the
-                                        blob storage
-                                      type: string
-                                    diskURI:
-                                      description: The URI the data disk in the blob
-                                        storage
-                                      type: string
-                                    fsType:
-                                      description: Filesystem type to mount. Must be
-                                        a filesystem type supported by the host operating
-                                        system. Ex. "ext4", "xfs", "ntfs". Implicitly
-                                        inferred to be "ext4" if unspecified.
-                                      type: string
-                                    kind:
-                                      description: 'Expected values Shared: multiple
-                                      blob disks per storage account  Dedicated: single
-                                      blob disk per storage account  Managed: azure
-                                      managed data disk (only in managed availability
-                                      set). defaults to shared'
-                                      type: string
-                                    readOnly:
-                                      description: Defaults to false (read/write). ReadOnly
-                                        here will force the ReadOnly setting in VolumeMounts.
-                                      type: boolean
+                                    podAffinityTerm:
+                                      description: Required. A pod affinity term,
+                                        associated with the corresponding weight.
+                                      properties:
+                                        labelSelector:
+                                          description: A label query over a set of
+                                            resources, in this case pods.
+                                          properties:
+                                            matchExpressions:
+                                              description: matchExpressions is a list
+                                                of label selector requirements. The
+                                                requirements are ANDed.
+                                              items:
+                                                description: A label selector requirement
+                                                  is a selector that contains values,
+                                                  a key, and an operator that relates
+                                                  the key and values.
+                                                properties:
+                                                  key:
+                                                    description: key is the label
+                                                      key that the selector applies
+                                                      to.
+                                                    type: string
+                                                  operator:
+                                                    description: operator represents
+                                                      a key's relationship to a set
+                                                      of values. Valid operators are
+                                                      In, NotIn, Exists and DoesNotExist.
+                                                    type: string
+                                                  values:
+                                                    description: values is an array
+                                                      of string values. If the operator
+                                                      is In or NotIn, the values array
+                                                      must be non-empty. If the operator
+                                                      is Exists or DoesNotExist, the
+                                                      values array must be empty.
+                                                      This array is replaced during
+                                                      a strategic merge patch.
+                                                    items:
+                                                      type: string
+                                                    type: array
+                                                required:
+                                                  - key
+                                                  - operator
+                                                type: object
+                                              type: array
+                                            matchLabels:
+                                              additionalProperties:
+                                                type: string
+                                              description: matchLabels is a map of
+                                                {key,value} pairs. A single {key,value}
+                                                in the matchLabels map is equivalent
+                                                to an element of matchExpressions,
+                                                whose key field is "key", the operator
+                                                is "In", and the values array contains
+                                                only "value". The requirements are
+                                                ANDed.
+                                              type: object
+                                          type: object
+                                        namespaces:
+                                          description: namespaces specifies which
+                                            namespaces the labelSelector applies to
+                                            (matches against); null or empty list
+                                            means "this pod's namespace"
+                                          items:
+                                            type: string
+                                          type: array
+                                        topologyKey:
+                                          description: This pod should be co-located
+                                            (affinity) or not co-located (anti-affinity)
+                                            with the pods matching the labelSelector
+                                            in the specified namespaces, where co-located
+                                            is defined as running on a node whose
+                                            value of the label with key topologyKey
+                                            matches that of any node on which any
+                                            of the selected pods is running. Empty
+                                            topologyKey is not allowed.
+                                          type: string
+                                      required:
+                                        - topologyKey
+                                      type: object
+                                    weight:
+                                      description: weight associated with matching
+                                        the corresponding podAffinityTerm, in the
+                                        range 1-100.
+                                      format: int32
+                                      type: integer
                                   required:
-                                    - diskName
-                                    - diskURI
+                                    - podAffinityTerm
+                                    - weight
                                   type: object
-                                azureFile:
-                                  description: AzureFile represents an Azure File Service
-                                    mount on the host and bind mount to the pod.
+                                type: array
+                              requiredDuringSchedulingIgnoredDuringExecution:
+                                description: If the affinity requirements specified
+                                  by this field are not met at scheduling time, the
+                                  pod will not be scheduled onto the node. If the
+                                  affinity requirements specified by this field cease
+                                  to be met at some point during pod execution (e.g.
+                                  due to a pod label update), the system may or may
+                                  not try to eventually evict the pod from its node.
+                                  When there are multiple elements, the lists of nodes
+                                  corresponding to each podAffinityTerm are intersected,
+                                  i.e. all terms must be satisfied.
+                                items:
+                                  description: Defines a set of pods (namely those
+                                    matching the labelSelector relative to the given
+                                    namespace(s)) that this pod should be co-located
+                                    (affinity) or not co-located (anti-affinity) with,
+                                    where co-located is defined as running on a node
+                                    whose value of the label with key <topologyKey>
+                                    matches that of any node on which a pod of the
+                                    set of pods is running
                                   properties:
-                                    readOnly:
-                                      description: Defaults to false (read/write). ReadOnly
-                                        here will force the ReadOnly setting in VolumeMounts.
-                                      type: boolean
-                                    secretName:
-                                      description: the name of secret that contains
-                                        Azure Storage Account Name and Key
-                                      type: string
-                                    shareName:
-                                      description: Share Name
-                                      type: string
-                                  required:
-                                    - secretName
-                                    - shareName
-                                  type: object
-                                cephfs:
-                                  description: CephFS represents a Ceph FS mount on
-                                    the host that shares a pod's lifetime
-                                  properties:
-                                    monitors:
-                                      description: 'Required: Monitors is a collection
-                                      of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+                                    labelSelector:
+                                      description: A label query over a set of resources,
+                                        in this case pods.
+                                      properties:
+                                        matchExpressions:
+                                          description: matchExpressions is a list
+                                            of label selector requirements. The requirements
+                                            are ANDed.
+                                          items:
+                                            description: A label selector requirement
+                                              is a selector that contains values,
+                                              a key, and an operator that relates
+                                              the key and values.
+                                            properties:
+                                              key:
+                                                description: key is the label key
+                                                  that the selector applies to.
+                                                type: string
+                                              operator:
+                                                description: operator represents a
+                                                  key's relationship to a set of values.
+                                                  Valid operators are In, NotIn, Exists
+                                                  and DoesNotExist.
+                                                type: string
+                                              values:
+                                                description: values is an array of
+                                                  string values. If the operator is
+                                                  In or NotIn, the values array must
+                                                  be non-empty. If the operator is
+                                                  Exists or DoesNotExist, the values
+                                                  array must be empty. This array
+                                                  is replaced during a strategic merge
+                                                  patch.
+                                                items:
+                                                  type: string
+                                                type: array
+                                            required:
+                                              - key
+                                              - operator
+                                            type: object
+                                          type: array
+                                        matchLabels:
+                                          additionalProperties:
+                                            type: string
+                                          description: matchLabels is a map of {key,value}
+                                            pairs. A single {key,value} in the matchLabels
+                                            map is equivalent to an element of matchExpressions,
+                                            whose key field is "key", the operator
+                                            is "In", and the values array contains
+                                            only "value". The requirements are ANDed.
+                                          type: object
+                                      type: object
+                                    namespaces:
+                                      description: namespaces specifies which namespaces
+                                        the labelSelector applies to (matches against);
+                                        null or empty list means "this pod's namespace"
                                       items:
                                         type: string
                                       type: array
-                                    path:
-                                      description: 'Optional: Used as the mounted root,
-                                      rather than the full Ceph tree, default is /'
-                                      type: string
-                                    readOnly:
-                                      description: 'Optional: Defaults to false (read/write).
-                                      ReadOnly here will force the ReadOnly setting
-                                      in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
-                                      type: boolean
-                                    secretFile:
-                                      description: 'Optional: SecretFile is the path
-                                      to key ring for User, default is /etc/ceph/user.secret
-                                      More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
-                                      type: string
-                                    secretRef:
-                                      description: 'Optional: SecretRef is reference
-                                      to the authentication secret for User, default
-                                      is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
-                                      properties:
-                                        name:
-                                          description: 'Name of the referent. More info:
-                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                          TODO: Add other useful fields. apiVersion,
-                                          kind, uid?'
-                                          type: string
-                                      type: object
-                                    user:
-                                      description: 'Optional: User is the rados user
-                                      name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+                                    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:
-                                    - monitors
+                                    - topologyKey
                                   type: object
-                                cinder:
-                                  description: 'Cinder represents a cinder volume attached
-                                  and mounted on kubelets host machine. More info:
-                                  https://examples.k8s.io/mysql-cinder-pd/README.md'
+                                type: array
+                            type: object
+                          podAntiAffinity:
+                            description: Describes pod anti-affinity scheduling rules
+                              (e.g. avoid putting this pod in the same node, zone,
+                              etc. as some other pod(s)).
+                            properties:
+                              preferredDuringSchedulingIgnoredDuringExecution:
+                                description: The scheduler will prefer to schedule
+                                  pods to nodes that satisfy the anti-affinity expressions
+                                  specified by this field, but it may choose a node
+                                  that violates one or more of the expressions. The
+                                  node that is most preferred is the one with the
+                                  greatest sum of weights, i.e. for each node that
+                                  meets all of the scheduling requirements (resource
+                                  request, requiredDuringScheduling anti-affinity
+                                  expressions, etc.), compute a sum by iterating through
+                                  the elements of this field and adding "weight" to
+                                  the sum if the node has pods which matches the corresponding
+                                  podAffinityTerm; the node(s) with the highest sum
+                                  are the most preferred.
+                                items:
+                                  description: The weights of all of the matched WeightedPodAffinityTerm
+                                    fields are added per-node to find the most preferred
+                                    node(s)
                                   properties:
-                                    fsType:
-                                      description: 'Filesystem type to mount. Must be
-                                      a filesystem type supported by the host operating
-                                      system. Examples: "ext4", "xfs", "ntfs". Implicitly
-                                      inferred to be "ext4" if unspecified. More info:
-                                      https://examples.k8s.io/mysql-cinder-pd/README.md'
-                                      type: string
-                                    readOnly:
-                                      description: 'Optional: Defaults to false (read/write).
-                                      ReadOnly here will force the ReadOnly setting
-                                      in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
-                                      type: boolean
-                                    secretRef:
-                                      description: 'Optional: points to a secret object
-                                      containing parameters used to connect to OpenStack.'
+                                    podAffinityTerm:
+                                      description: Required. A pod affinity term,
+                                        associated with the corresponding weight.
                                       properties:
-                                        name:
-                                          description: 'Name of the referent. More info:
-                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                          TODO: Add other useful fields. apiVersion,
-                                          kind, uid?'
+                                        labelSelector:
+                                          description: A label query over a set of
+                                            resources, in this case pods.
+                                          properties:
+                                            matchExpressions:
+                                              description: matchExpressions is a list
+                                                of label selector requirements. The
+                                                requirements are ANDed.
+                                              items:
+                                                description: A label selector requirement
+                                                  is a selector that contains values,
+                                                  a key, and an operator that relates
+                                                  the key and values.
+                                                properties:
+                                                  key:
+                                                    description: key is the label
+                                                      key that the selector applies
+                                                      to.
+                                                    type: string
+                                                  operator:
+                                                    description: operator represents
+                                                      a key's relationship to a set
+                                                      of values. Valid operators are
+                                                      In, NotIn, Exists and DoesNotExist.
+                                                    type: string
+                                                  values:
+                                                    description: values is an array
+                                                      of string values. If the operator
+                                                      is In or NotIn, the values array
+                                                      must be non-empty. If the operator
+                                                      is Exists or DoesNotExist, the
+                                                      values array must be empty.
+                                                      This array is replaced during
+                                                      a strategic merge patch.
+                                                    items:
+                                                      type: string
+                                                    type: array
+                                                required:
+                                                  - key
+                                                  - operator
+                                                type: object
+                                              type: array
+                                            matchLabels:
+                                              additionalProperties:
+                                                type: string
+                                              description: matchLabels is a map of
+                                                {key,value} pairs. A single {key,value}
+                                                in the matchLabels map is equivalent
+                                                to an element of matchExpressions,
+                                                whose key field is "key", the operator
+                                                is "In", and the values array contains
+                                                only "value". The requirements are
+                                                ANDed.
+                                              type: object
+                                          type: object
+                                        namespaces:
+                                          description: namespaces specifies which
+                                            namespaces the labelSelector applies to
+                                            (matches against); null or empty list
+                                            means "this pod's namespace"
+                                          items:
+                                            type: string
+                                          type: array
+                                        topologyKey:
+                                          description: This pod should be co-located
+                                            (affinity) or not co-located (anti-affinity)
+                                            with the pods matching the labelSelector
+                                            in the specified namespaces, where co-located
+                                            is defined as running on a node whose
+                                            value of the label with key topologyKey
+                                            matches that of any node on which any
+                                            of the selected pods is running. Empty
+                                            topologyKey is not allowed.
                                           type: string
+                                      required:
+                                        - topologyKey
                                       type: object
-                                    volumeID:
-                                      description: 'volume id used to identify the volume
-                                      in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
-                                      type: string
-                                  required:
-                                    - volumeID
-                                  type: object
-                                configMap:
-                                  description: ConfigMap represents a configMap that
-                                    should populate this volume
-                                  properties:
-                                    defaultMode:
-                                      description: 'Optional: mode bits to use on created
-                                      files by default. Must be a value between 0
-                                      and 0777. Defaults to 0644. Directories within
-                                      the path are not affected by this setting. This
-                                      might be in conflict with other options that
-                                      affect the file mode, like fsGroup, and the
-                                      result can be other mode bits set.'
+                                    weight:
+                                      description: weight associated with matching
+                                        the corresponding podAffinityTerm, in the
+                                        range 1-100.
                                       format: int32
                                       type: integer
-                                    items:
-                                      description: If unspecified, each key-value pair
-                                        in the Data field of the referenced ConfigMap
-                                        will be projected into the volume as a file
-                                        whose name is the key and content is the value.
-                                        If specified, the listed keys will be projected
-                                        into the specified paths, and unlisted keys
-                                        will not be present. If a key is specified which
-                                        is not present in the ConfigMap, the volume
-                                        setup will error unless it is marked optional.
-                                        Paths must be relative and may not contain the
-                                        '..' path or start with '..'.
+                                  required:
+                                    - podAffinityTerm
+                                    - weight
+                                  type: object
+                                type: array
+                              requiredDuringSchedulingIgnoredDuringExecution:
+                                description: If the anti-affinity requirements specified
+                                  by this field are not met at scheduling time, the
+                                  pod will not be scheduled onto the node. If the
+                                  anti-affinity requirements specified by this field
+                                  cease to be met at some point during pod execution
+                                  (e.g. due to a pod label update), the system may
+                                  or may not try to eventually evict the pod from
+                                  its node. When there are multiple elements, the
+                                  lists of nodes corresponding to each podAffinityTerm
+                                  are intersected, i.e. all terms must be satisfied.
+                                items:
+                                  description: Defines a set of pods (namely those
+                                    matching the labelSelector relative to the given
+                                    namespace(s)) that this pod should be co-located
+                                    (affinity) or not co-located (anti-affinity) with,
+                                    where co-located is defined as running on a node
+                                    whose value of the label with key <topologyKey>
+                                    matches that of any node on which a pod of the
+                                    set of pods is running
+                                  properties:
+                                    labelSelector:
+                                      description: A label query over a set of resources,
+                                        in this case pods.
+                                      properties:
+                                        matchExpressions:
+                                          description: matchExpressions is a list
+                                            of label selector requirements. The requirements
+                                            are ANDed.
+                                          items:
+                                            description: A label selector requirement
+                                              is a selector that contains values,
+                                              a key, and an operator that relates
+                                              the key and values.
+                                            properties:
+                                              key:
+                                                description: key is the label key
+                                                  that the selector applies to.
+                                                type: string
+                                              operator:
+                                                description: operator represents a
+                                                  key's relationship to a set of values.
+                                                  Valid operators are In, NotIn, Exists
+                                                  and DoesNotExist.
+                                                type: string
+                                              values:
+                                                description: values is an array of
+                                                  string values. If the operator is
+                                                  In or NotIn, the values array must
+                                                  be non-empty. If the operator is
+                                                  Exists or DoesNotExist, the values
+                                                  array must be empty. This array
+                                                  is replaced during a strategic merge
+                                                  patch.
+                                                items:
+                                                  type: string
+                                                type: array
+                                            required:
+                                              - key
+                                              - operator
+                                            type: object
+                                          type: array
+                                        matchLabels:
+                                          additionalProperties:
+                                            type: string
+                                          description: matchLabels is a map of {key,value}
+                                            pairs. A single {key,value} in the matchLabels
+                                            map is equivalent to an element of matchExpressions,
+                                            whose key field is "key", the operator
+                                            is "In", and the values array contains
+                                            only "value". The requirements are ANDed.
+                                          type: object
+                                      type: object
+                                    namespaces:
+                                      description: namespaces specifies which namespaces
+                                        the labelSelector applies to (matches against);
+                                        null or empty list means "this pod's namespace"
                                       items:
-                                        description: Maps a string key to a path within
-                                          a volume.
-                                        properties:
-                                          key:
-                                            description: The key to project.
-                                            type: string
-                                          mode:
-                                            description: 'Optional: mode bits to use
-                                            on this file, must be a value between
-                                            0 and 0777. If not specified, the volume
-                                            defaultMode will be used. This might be
-                                            in conflict with other options that affect
-                                            the file mode, like fsGroup, and the result
-                                            can be other mode bits set.'
-                                            format: int32
-                                            type: integer
-                                          path:
-                                            description: The relative path of the file
-                                              to map the key to. May not be an absolute
-                                              path. May not contain the path element
-                                              '..'. May not start with the string '..'.
-                                            type: string
-                                        required:
-                                          - key
-                                          - path
-                                        type: object
+                                        type: string
                                       type: array
+                                    topologyKey:
+                                      description: This pod should be co-located (affinity)
+                                        or not co-located (anti-affinity) with the
+                                        pods matching the labelSelector in the specified
+                                        namespaces, where co-located is defined as
+                                        running on a node whose value of the label
+                                        with key topologyKey matches that of any node
+                                        on which any of the selected pods is running.
+                                        Empty topologyKey is not allowed.
+                                      type: string
+                                  required:
+                                    - topologyKey
+                                  type: object
+                                type: array
+                            type: object
+                        type: object
+                      args:
+                        items:
+                          type: string
+                        type: array
+                      builtImage:
+                        type: string
+                      command:
+                        items:
+                          type: string
+                        type: array
+                      env:
+                        items:
+                          description: EnvVar represents an environment variable present
+                            in a Container.
+                          properties:
+                            name:
+                              description: Name of the environment variable. Must
+                                be a C_IDENTIFIER.
+                              type: string
+                            value:
+                              description: 'Variable references $(VAR_NAME) are expanded
+                                using the previous defined environment variables in
+                                the container and any service environment variables.
+                                If a variable cannot be resolved, the reference in
+                                the input string will be unchanged. The $(VAR_NAME)
+                                syntax can be escaped with a double $$, ie: $$(VAR_NAME).
+                                Escaped references will never be expanded, regardless
+                                of whether the variable exists or not. Defaults to
+                                "".'
+                              type: string
+                            valueFrom:
+                              description: Source for the environment variable's value.
+                                Cannot be used if value is not empty.
+                              properties:
+                                configMapKeyRef:
+                                  description: Selects a key of a ConfigMap.
+                                  properties:
+                                    key:
+                                      description: The key to select.
+                                      type: string
                                     name:
                                       description: 'Name of the referent. More info:
-                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                      TODO: Add other useful fields. apiVersion, kind,
-                                      uid?'
+                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                        TODO: Add other useful fields. apiVersion,
+                                        kind, uid?'
                                       type: string
                                     optional:
                                       description: Specify whether the ConfigMap or
-                                        its keys must be defined
+                                        its key must be defined
                                       type: boolean
-                                  type: object
-                                csi:
-                                  description: CSI (Container Storage Interface) represents
-                                    storage that is handled by an external CSI driver
-                                    (Alpha feature).
-                                  properties:
-                                    driver:
-                                      description: Driver is the name of the CSI driver
-                                        that handles this volume. Consult with your
-                                        admin for the correct name as registered in
-                                        the cluster.
-                                      type: string
-                                    fsType:
-                                      description: Filesystem type to mount. Ex. "ext4",
-                                        "xfs", "ntfs". If not provided, the empty value
-                                        is passed to the associated CSI driver which
-                                        will determine the default filesystem to apply.
-                                      type: string
-                                    nodePublishSecretRef:
-                                      description: NodePublishSecretRef is a reference
-                                        to the secret object containing sensitive information
-                                        to pass to the CSI driver to complete the CSI
-                                        NodePublishVolume and NodeUnpublishVolume calls.
-                                        This field is optional, and  may be empty if
-                                        no secret is required. If the secret object
-                                        contains more than one secret, all secret references
-                                        are passed.
-                                      properties:
-                                        name:
-                                          description: 'Name of the referent. More info:
-                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                          TODO: Add other useful fields. apiVersion,
-                                          kind, uid?'
-                                          type: string
-                                      type: object
-                                    readOnly:
-                                      description: Specifies a read-only configuration
-                                        for the volume. Defaults to false (read/write).
-                                      type: boolean
-                                    volumeAttributes:
-                                      additionalProperties:
-                                        type: string
-                                      description: VolumeAttributes stores driver-specific
-                                        properties that are passed to the CSI driver.
-                                        Consult your driver's documentation for supported
-                                        values.
-                                      type: object
                                   required:
-                                    - driver
+                                    - key
                                   type: object
-                                downwardAPI:
-                                  description: DownwardAPI represents downward API about
-                                    the pod that should populate this volume
+                                fieldRef:
+                                  description: 'Selects a field of the pod: supports
+                                    metadata.name, metadata.namespace, metadata.labels,
+                                    metadata.annotations, spec.nodeName, spec.serviceAccountName,
+                                    status.hostIP, status.podIP, status.podIPs.'
                                   properties:
-                                    defaultMode:
-                                      description: 'Optional: mode bits to use on created
-                                      files by default. Must be a value between 0
-                                      and 0777. Defaults to 0644. Directories within
-                                      the path are not affected by this setting. This
-                                      might be in conflict with other options that
-                                      affect the file mode, like fsGroup, and the
-                                      result can be other mode bits set.'
-                                      format: int32
-                                      type: integer
-                                    items:
-                                      description: Items is a list of downward API volume
-                                        file
-                                      items:
-                                        description: DownwardAPIVolumeFile represents
-                                          information to create the file containing
-                                          the pod field
-                                        properties:
-                                          fieldRef:
-                                            description: 'Required: Selects a field
-                                            of the pod: only annotations, labels,
-                                            name and namespace are supported.'
-                                            properties:
-                                              apiVersion:
-                                                description: Version of the schema the
-                                                  FieldPath is written in terms of,
-                                                  defaults to "v1".
-                                                type: string
-                                              fieldPath:
-                                                description: Path of the field to select
-                                                  in the specified API version.
-                                                type: string
-                                            required:
-                                              - fieldPath
-                                            type: object
-                                          mode:
-                                            description: 'Optional: mode bits to use
-                                            on this file, must be a value between
-                                            0 and 0777. If not specified, the volume
-                                            defaultMode will be used. This might be
-                                            in conflict with other options that affect
-                                            the file mode, like fsGroup, and the result
-                                            can be other mode bits set.'
-                                            format: int32
-                                            type: integer
-                                          path:
-                                            description: 'Required: Path is  the relative
-                                            path name of the file to be created. Must
-                                            not be absolute or contain the ''..''
-                                            path. Must be utf-8 encoded. The first
-                                            item of the relative path must not start
-                                            with ''..'''
-                                            type: string
-                                          resourceFieldRef:
-                                            description: 'Selects a resource of the
-                                            container: only resources limits and requests
-                                            (limits.cpu, limits.memory, requests.cpu
-                                            and requests.memory) are currently supported.'
-                                            properties:
-                                              containerName:
-                                                description: 'Container name: required
-                                                for volumes, optional for env vars'
-                                                type: string
-                                              divisor:
-                                                anyOf:
-                                                  - type: integer
-                                                  - type: string
-                                                description: Specifies the output format
-                                                  of the exposed resources, defaults
-                                                  to "1"
-                                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
-                                                x-kubernetes-int-or-string: true
-                                              resource:
-                                                description: 'Required: resource to
-                                                select'
-                                                type: string
-                                            required:
-                                              - resource
-                                            type: object
-                                        required:
-                                          - path
-                                        type: object
-                                      type: array
-                                  type: object
-                                emptyDir:
-                                  description: 'EmptyDir represents a temporary directory
-                                  that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
-                                  properties:
-                                    medium:
-                                      description: 'What type of storage medium should
-                                      back this directory. The default is "" which
-                                      means to use the node''s default medium. Must
-                                      be an empty string (default) or Memory. More
-                                      info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
+                                    apiVersion:
+                                      description: Version of the schema the FieldPath
+                                        is written in terms of, defaults to "v1".
                                       type: string
-                                    sizeLimit:
+                                    fieldPath:
+                                      description: Path of the field to select in
+                                        the specified API version.
+                                      type: string
+                                  required:
+                                    - fieldPath
+                                  type: object
+                                resourceFieldRef:
+                                  description: 'Selects a resource of the container:
+                                    only resources limits and requests (limits.cpu,
+                                    limits.memory, limits.ephemeral-storage, requests.cpu,
+                                    requests.memory and requests.ephemeral-storage)
+                                    are currently supported.'
+                                  properties:
+                                    containerName:
+                                      description: 'Container name: required for volumes,
+                                        optional for env vars'
+                                      type: string
+                                    divisor:
                                       anyOf:
                                         - type: integer
                                         - type: string
-                                      description: 'Total amount of local storage required
-                                      for this EmptyDir volume. The size limit is
-                                      also applicable for memory medium. The maximum
-                                      usage on memory medium EmptyDir would be the
-                                      minimum value between the SizeLimit specified
-                                      here and the sum of memory limits of all containers
-                                      in a pod. The default is nil which means that
-                                      the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir'
+                                      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
-                                  type: object
-                                fc:
-                                  description: FC represents a Fibre Channel resource
-                                    that is attached to a kubelet's host machine and
-                                    then exposed to the pod.
-                                  properties:
-                                    fsType:
-                                      description: 'Filesystem type to mount. Must be
-                                      a filesystem type supported by the host operating
-                                      system. Ex. "ext4", "xfs", "ntfs". Implicitly
-                                      inferred to be "ext4" if unspecified. TODO:
-                                      how do we prevent errors in the filesystem from
-                                      compromising the machine'
-                                      type: string
-                                    lun:
-                                      description: 'Optional: FC target lun number'
-                                      format: int32
-                                      type: integer
-                                    readOnly:
-                                      description: 'Optional: Defaults to false (read/write).
-                                      ReadOnly here will force the ReadOnly setting
-                                      in VolumeMounts.'
-                                      type: boolean
-                                    targetWWNs:
-                                      description: 'Optional: FC target worldwide names
-                                      (WWNs)'
-                                      items:
-                                        type: string
-                                      type: array
-                                    wwids:
-                                      description: 'Optional: FC volume world wide identifiers
-                                      (wwids) Either wwids or combination of targetWWNs
-                                      and lun must be set, but not both simultaneously.'
-                                      items:
-                                        type: string
-                                      type: array
-                                  type: object
-                                flexVolume:
-                                  description: FlexVolume represents a generic volume
-                                    resource that is provisioned/attached using an exec
-                                    based plugin.
-                                  properties:
-                                    driver:
-                                      description: Driver is the name of the driver
-                                        to use for this volume.
-                                      type: string
-                                    fsType:
-                                      description: Filesystem type to mount. Must be
-                                        a filesystem type supported by the host operating
-                                        system. Ex. "ext4", "xfs", "ntfs". The default
-                                        filesystem depends on FlexVolume script.
-                                      type: string
-                                    options:
-                                      additionalProperties:
-                                        type: string
-                                      description: 'Optional: Extra command options
-                                      if any.'
-                                      type: object
-                                    readOnly:
-                                      description: 'Optional: Defaults to false (read/write).
-                                      ReadOnly here will force the ReadOnly setting
-                                      in VolumeMounts.'
-                                      type: boolean
-                                    secretRef:
-                                      description: 'Optional: SecretRef is reference
-                                      to the secret object containing sensitive information
-                                      to pass to the plugin scripts. This may be empty
-                                      if no secret object is specified. If the secret
-                                      object contains more than one secret, all secrets
-                                      are passed to the plugin scripts.'
-                                      properties:
-                                        name:
-                                          description: 'Name of the referent. More info:
-                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                          TODO: Add other useful fields. apiVersion,
-                                          kind, uid?'
-                                          type: string
-                                      type: object
-                                  required:
-                                    - driver
-                                  type: object
-                                flocker:
-                                  description: Flocker represents a Flocker volume attached
-                                    to a kubelet's host machine. This depends on the
-                                    Flocker control service being running
-                                  properties:
-                                    datasetName:
-                                      description: Name of the dataset stored as metadata
-                                        -> name on the dataset for Flocker should be
-                                        considered as deprecated
-                                      type: string
-                                    datasetUUID:
-                                      description: UUID of the dataset. This is unique
-                                        identifier of a Flocker dataset
-                                      type: string
-                                  type: object
-                                gcePersistentDisk:
-                                  description: 'GCEPersistentDisk represents a GCE Disk
-                                  resource that is attached to a kubelet''s host machine
-                                  and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
-                                  properties:
-                                    fsType:
-                                      description: 'Filesystem type of the volume that
-                                      you want to mount. Tip: Ensure that the filesystem
-                                      type is supported by the host operating system.
-                                      Examples: "ext4", "xfs", "ntfs". Implicitly
-                                      inferred to be "ext4" if unspecified. More info:
-                                      https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
-                                      TODO: how do we prevent errors in the filesystem
-                                      from compromising the machine'
-                                      type: string
-                                    partition:
-                                      description: 'The partition in the volume that
-                                      you want to mount. If omitted, the default is
-                                      to mount by volume name. Examples: For volume
-                                      /dev/sda1, you specify the partition as "1".
-                                      Similarly, the volume partition for /dev/sda
-                                      is "0" (or you can leave the property empty).
-                                      More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
-                                      format: int32
-                                      type: integer
-                                    pdName:
-                                      description: 'Unique name of the PD resource in
-                                      GCE. Used to identify the disk in GCE. More
-                                      info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
-                                      type: string
-                                    readOnly:
-                                      description: 'ReadOnly here will force the ReadOnly
-                                      setting in VolumeMounts. Defaults to false.
-                                      More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
-                                      type: boolean
-                                  required:
-                                    - pdName
-                                  type: object
-                                gitRepo:
-                                  description: 'GitRepo represents a git repository
-                                  at a particular revision. DEPRECATED: GitRepo is
-                                  deprecated. To provision a container with a git
-                                  repo, mount an EmptyDir into an InitContainer that
-                                  clones the repo using git, then mount the EmptyDir
-                                  into the Pod''s container.'
-                                  properties:
-                                    directory:
-                                      description: Target directory name. Must not contain
-                                        or start with '..'.  If '.' is supplied, the
-                                        volume directory will be the git repository.  Otherwise,
-                                        if specified, the volume will contain the git
-                                        repository in the subdirectory with the given
-                                        name.
-                                      type: string
-                                    repository:
-                                      description: Repository URL
-                                      type: string
-                                    revision:
-                                      description: Commit hash for the specified revision.
+                                    resource:
+                                      description: 'Required: resource to select'
                                       type: string
                                   required:
-                                    - repository
+                                    - resource
                                   type: object
-                                glusterfs:
-                                  description: 'Glusterfs represents a Glusterfs mount
-                                  on the host that shares a pod''s lifetime. More
-                                  info: https://examples.k8s.io/volumes/glusterfs/README.md'
+                                secretKeyRef:
+                                  description: Selects a key of a secret in the pod's
+                                    namespace
                                   properties:
-                                    endpoints:
-                                      description: 'EndpointsName is the endpoint name
-                                      that details Glusterfs topology. More info:
-                                      https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+                                    key:
+                                      description: The key of the secret to select
+                                        from.  Must be a valid secret key.
                                       type: string
-                                    path:
-                                      description: 'Path is the Glusterfs volume path.
-                                      More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+                                    name:
+                                      description: 'Name of the referent. More info:
+                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                        TODO: Add other useful fields. apiVersion,
+                                        kind, uid?'
                                       type: string
-                                    readOnly:
-                                      description: 'ReadOnly here will force the Glusterfs
-                                      volume to be mounted with read-only permissions.
-                                      Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
-                                      type: boolean
-                                  required:
-                                    - endpoints
-                                    - path
-                                  type: object
-                                hostPath:
-                                  description: 'HostPath represents a pre-existing file
-                                  or directory on the host machine that is directly
-                                  exposed to the container. This is generally used
-                                  for system agents or other privileged things that
-                                  are allowed to see the host machine. Most containers
-                                  will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
-                                  --- TODO(jonesdl) We need to restrict who can use
-                                  host directory mounts and who can/can not mount
-                                  host directories as read/write.'
-                                  properties:
-                                    path:
-                                      description: 'Path of the directory on the host.
-                                      If the path is a symlink, it will follow the
-                                      link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
-                                      type: string
-                                    type:
-                                      description: 'Type for HostPath Volume Defaults
-                                      to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
-                                      type: string
-                                  required:
-                                    - path
-                                  type: object
-                                iscsi:
-                                  description: 'ISCSI represents an ISCSI Disk resource
-                                  that is attached to a kubelet''s host machine and
-                                  then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'
-                                  properties:
-                                    chapAuthDiscovery:
-                                      description: whether support iSCSI Discovery CHAP
-                                        authentication
-                                      type: boolean
-                                    chapAuthSession:
-                                      description: whether support iSCSI Session CHAP
-                                        authentication
-                                      type: boolean
-                                    fsType:
-                                      description: 'Filesystem type of the volume that
-                                      you want to mount. Tip: Ensure that the filesystem
-                                      type is supported by the host operating system.
-                                      Examples: "ext4", "xfs", "ntfs". Implicitly
-                                      inferred to be "ext4" if unspecified. More info:
-                                      https://kubernetes.io/docs/concepts/storage/volumes#iscsi
-                                      TODO: how do we prevent errors in the filesystem
-                                      from compromising the machine'
-                                      type: string
-                                    initiatorName:
-                                      description: Custom iSCSI Initiator Name. If initiatorName
-                                        is specified with iscsiInterface simultaneously,
-                                        new iSCSI interface <target portal>:<volume
-                                        name> will be created for the connection.
-                                      type: string
-                                    iqn:
-                                      description: Target iSCSI Qualified Name.
-                                      type: string
-                                    iscsiInterface:
-                                      description: iSCSI Interface Name that uses an
-                                        iSCSI transport. Defaults to 'default' (tcp).
-                                      type: string
-                                    lun:
-                                      description: iSCSI Target Lun number.
-                                      format: int32
-                                      type: integer
-                                    portals:
-                                      description: iSCSI Target Portal List. The portal
-                                        is either an IP or ip_addr:port if the port
-                                        is other than default (typically TCP ports 860
-                                        and 3260).
-                                      items:
-                                        type: string
-                                      type: array
-                                    readOnly:
-                                      description: ReadOnly here will force the ReadOnly
-                                        setting in VolumeMounts. Defaults to false.
-                                      type: boolean
-                                    secretRef:
-                                      description: CHAP Secret for iSCSI target and
-                                        initiator authentication
-                                      properties:
-                                        name:
-                                          description: 'Name of the referent. More info:
-                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                          TODO: Add other useful fields. apiVersion,
-                                          kind, uid?'
-                                          type: string
-                                      type: object
-                                    targetPortal:
-                                      description: iSCSI Target Portal. The Portal is
-                                        either an IP or ip_addr:port if the port is
-                                        other than default (typically TCP ports 860
-                                        and 3260).
-                                      type: string
-                                  required:
-                                    - iqn
-                                    - lun
-                                    - targetPortal
-                                  type: object
-                                name:
-                                  description: 'Volume''s name. Must be a DNS_LABEL
-                                  and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
-                                  type: string
-                                nfs:
-                                  description: 'NFS represents an NFS mount on the host
-                                  that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
-                                  properties:
-                                    path:
-                                      description: 'Path that is exported by the NFS
-                                      server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
-                                      type: string
-                                    readOnly:
-                                      description: 'ReadOnly here will force the NFS
-                                      export to be mounted with read-only permissions.
-                                      Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
-                                      type: boolean
-                                    server:
-                                      description: 'Server is the hostname or IP address
-                                      of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
-                                      type: string
-                                  required:
-                                    - path
-                                    - server
-                                  type: object
-                                persistentVolumeClaim:
-                                  description: 'PersistentVolumeClaimVolumeSource represents
-                                  a reference to a PersistentVolumeClaim in the same
-                                  namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
-                                  properties:
-                                    claimName:
-                                      description: 'ClaimName is the name of a PersistentVolumeClaim
-                                      in the same namespace as the pod using this
-                                      volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
-                                      type: string
-                                    readOnly:
-                                      description: Will force the ReadOnly setting in
-                                        VolumeMounts. Default false.
-                                      type: boolean
-                                  required:
-                                    - claimName
-                                  type: object
-                                photonPersistentDisk:
-                                  description: PhotonPersistentDisk represents a PhotonController
-                                    persistent disk attached and mounted on kubelets
-                                    host machine
-                                  properties:
-                                    fsType:
-                                      description: Filesystem type to mount. Must be
-                                        a filesystem type supported by the host operating
-                                        system. Ex. "ext4", "xfs", "ntfs". Implicitly
-                                        inferred to be "ext4" if unspecified.
-                                      type: string
-                                    pdID:
-                                      description: ID that identifies Photon Controller
-                                        persistent disk
-                                      type: string
-                                  required:
-                                    - pdID
-                                  type: object
-                                portworxVolume:
-                                  description: PortworxVolume represents a portworx
-                                    volume attached and mounted on kubelets host machine
-                                  properties:
-                                    fsType:
-                                      description: FSType represents the filesystem
-                                        type to mount Must be a filesystem type supported
-                                        by the host operating system. Ex. "ext4", "xfs".
-                                        Implicitly inferred to be "ext4" if unspecified.
-                                      type: string
-                                    readOnly:
-                                      description: Defaults to false (read/write). ReadOnly
-                                        here will force the ReadOnly setting in VolumeMounts.
-                                      type: boolean
-                                    volumeID:
-                                      description: VolumeID uniquely identifies a Portworx
-                                        volume
-                                      type: string
-                                  required:
-                                    - volumeID
-                                  type: object
-                                projected:
-                                  description: Items for all in one resources secrets,
-                                    configmaps, and downward API
-                                  properties:
-                                    defaultMode:
-                                      description: Mode bits to use on created files
-                                        by default. Must be a value between 0 and 0777.
-                                        Directories within the path are not affected
-                                        by this setting. This might be in conflict with
-                                        other options that affect the file mode, like
-                                        fsGroup, and the result can be other mode bits
-                                        set.
-                                      format: int32
-                                      type: integer
-                                    sources:
-                                      description: list of volume projections
-                                      items:
-                                        description: Projection that may be projected
-                                          along with other supported volume types
-                                        properties:
-                                          configMap:
-                                            description: information about the configMap
-                                              data to project
-                                            properties:
-                                              items:
-                                                description: If unspecified, each key-value
-                                                  pair in the Data field of the referenced
-                                                  ConfigMap will be projected into the
-                                                  volume as a file whose name is the
-                                                  key and content is the value. If specified,
-                                                  the listed keys will be projected
-                                                  into the specified paths, and unlisted
-                                                  keys will not be present. If a key
-                                                  is specified which is not present
-                                                  in the ConfigMap, the volume setup
-                                                  will error unless it is marked optional.
-                                                  Paths must be relative and may not
-                                                  contain the '..' path or start with
-                                                  '..'.
-                                                items:
-                                                  description: Maps a string key to
-                                                    a path within a volume.
-                                                  properties:
-                                                    key:
-                                                      description: The key to project.
-                                                      type: string
-                                                    mode:
-                                                      description: 'Optional: mode bits
-                                                      to use on this file, must be
-                                                      a value between 0 and 0777.
-                                                      If not specified, the volume
-                                                      defaultMode will be used. This
-                                                      might be in conflict with other
-                                                      options that affect the file
-                                                      mode, like fsGroup, and the
-                                                      result can be other mode bits
-                                                      set.'
-                                                      format: int32
-                                                      type: integer
-                                                    path:
-                                                      description: The relative path
-                                                        of the file to map the key to.
-                                                        May not be an absolute path.
-                                                        May not contain the path element
-                                                        '..'. May not start with the
-                                                        string '..'.
-                                                      type: string
-                                                  required:
-                                                    - key
-                                                    - path
-                                                  type: object
-                                                type: array
-                                              name:
-                                                description: 'Name of the referent.
-                                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Add other useful fields. apiVersion,
-                                                kind, uid?'
-                                                type: string
-                                              optional:
-                                                description: Specify whether the ConfigMap
-                                                  or its keys must be defined
-                                                type: boolean
-                                            type: object
-                                          downwardAPI:
-                                            description: information about the downwardAPI
-                                              data to project
-                                            properties:
-                                              items:
-                                                description: Items is a list of DownwardAPIVolume
-                                                  file
-                                                items:
-                                                  description: DownwardAPIVolumeFile
-                                                    represents information to create
-                                                    the file containing the pod field
-                                                  properties:
-                                                    fieldRef:
-                                                      description: 'Required: Selects
-                                                      a field of the pod: only annotations,
-                                                      labels, name and namespace are
-                                                      supported.'
-                                                      properties:
-                                                        apiVersion:
-                                                          description: Version of the
-                                                            schema the FieldPath is
-                                                            written in terms of, defaults
-                                                            to "v1".
-                                                          type: string
-                                                        fieldPath:
-                                                          description: Path of the field
-                                                            to select in the specified
-                                                            API version.
-                                                          type: string
-                                                      required:
-                                                        - fieldPath
-                                                      type: object
-                                                    mode:
-                                                      description: 'Optional: mode bits
-                                                      to use on this file, must be
-                                                      a value between 0 and 0777.
-                                                      If not specified, the volume
-                                                      defaultMode will be used. This
-                                                      might be in conflict with other
-                                                      options that affect the file
-                                                      mode, like fsGroup, and the
-                                                      result can be other mode bits
-                                                      set.'
-                                                      format: int32
-                                                      type: integer
-                                                    path:
-                                                      description: 'Required: Path is  the
-                                                      relative path name of the file
-                                                      to be created. Must not be absolute
-                                                      or contain the ''..'' path.
-                                                      Must be utf-8 encoded. The first
-                                                      item of the relative path must
-                                                      not start with ''..'''
-                                                      type: string
-                                                    resourceFieldRef:
-                                                      description: 'Selects a resource
-                                                      of the container: only resources
-                                                      limits and requests (limits.cpu,
-                                                      limits.memory, requests.cpu
-                                                      and requests.memory) are currently
-                                                      supported.'
-                                                      properties:
-                                                        containerName:
-                                                          description: 'Container name:
-                                                          required for volumes, optional
-                                                          for env vars'
-                                                          type: string
-                                                        divisor:
-                                                          anyOf:
-                                                            - type: integer
-                                                            - type: string
-                                                          description: Specifies the
-                                                            output format of the exposed
-                                                            resources, defaults to "1"
-                                                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
-                                                          x-kubernetes-int-or-string: true
-                                                        resource:
-                                                          description: 'Required: resource
-                                                          to select'
-                                                          type: string
-                                                      required:
-                                                        - resource
-                                                      type: object
-                                                  required:
-                                                    - path
-                                                  type: object
-                                                type: array
-                                            type: object
-                                          secret:
-                                            description: information about the secret
-                                              data to project
-                                            properties:
-                                              items:
-                                                description: If unspecified, each key-value
-                                                  pair in the Data field of the referenced
-                                                  Secret will be projected into the
-                                                  volume as a file whose name is the
-                                                  key and content is the value. If specified,
-                                                  the listed keys will be projected
-                                                  into the specified paths, and unlisted
-                                                  keys will not be present. If a key
-                                                  is specified which is not present
-                                                  in the Secret, the volume setup will
-                                                  error unless it is marked optional.
-                                                  Paths must be relative and may not
-                                                  contain the '..' path or start with
-                                                  '..'.
-                                                items:
-                                                  description: Maps a string key to
-                                                    a path within a volume.
-                                                  properties:
-                                                    key:
-                                                      description: The key to project.
-                                                      type: string
-                                                    mode:
-                                                      description: 'Optional: mode bits
-                                                      to use on this file, must be
-                                                      a value between 0 and 0777.
-                                                      If not specified, the volume
-                                                      defaultMode will be used. This
-                                                      might be in conflict with other
-                                                      options that affect the file
-                                                      mode, like fsGroup, and the
-                                                      result can be other mode bits
-                                                      set.'
-                                                      format: int32
-                                                      type: integer
-                                                    path:
-                                                      description: The relative path
-                                                        of the file to map the key to.
-                                                        May not be an absolute path.
-                                                        May not contain the path element
-                                                        '..'. May not start with the
-                                                        string '..'.
-                                                      type: string
-                                                  required:
-                                                    - key
-                                                    - path
-                                                  type: object
-                                                type: array
-                                              name:
-                                                description: 'Name of the referent.
-                                                More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                                TODO: Add other useful fields. apiVersion,
-                                                kind, uid?'
-                                                type: string
-                                              optional:
-                                                description: Specify whether the Secret
-                                                  or its key must be defined
-                                                type: boolean
-                                            type: object
-                                          serviceAccountToken:
-                                            description: information about the serviceAccountToken
-                                              data to project
-                                            properties:
-                                              audience:
-                                                description: Audience is the intended
-                                                  audience of the token. A recipient
-                                                  of a token must identify itself with
-                                                  an identifier specified in the audience
-                                                  of the token, and otherwise should
-                                                  reject the token. The audience defaults
-                                                  to the identifier of the apiserver.
-                                                type: string
-                                              expirationSeconds:
-                                                description: ExpirationSeconds is the
-                                                  requested duration of validity of
-                                                  the service account token. As the
-                                                  token approaches expiration, the kubelet
-                                                  volume plugin will proactively rotate
-                                                  the service account token. The kubelet
-                                                  will start trying to rotate the token
-                                                  if the token is older than 80 percent
-                                                  of its time to live or if the token
-                                                  is older than 24 hours.Defaults to
-                                                  1 hour and must be at least 10 minutes.
-                                                format: int64
-                                                type: integer
-                                              path:
-                                                description: Path is the path relative
-                                                  to the mount point of the file to
-                                                  project the token into.
-                                                type: string
-                                            required:
-                                              - path
-                                            type: object
-                                        type: object
-                                      type: array
-                                  required:
-                                    - sources
-                                  type: object
-                                quobyte:
-                                  description: Quobyte represents a Quobyte mount on
-                                    the host that shares a pod's lifetime
-                                  properties:
-                                    group:
-                                      description: Group to map volume access to Default
-                                        is no group
-                                      type: string
-                                    readOnly:
-                                      description: ReadOnly here will force the Quobyte
-                                        volume to be mounted with read-only permissions.
-                                        Defaults to false.
-                                      type: boolean
-                                    registry:
-                                      description: Registry represents a single or multiple
-                                        Quobyte Registry services specified as a string
-                                        as host:port pair (multiple entries are separated
-                                        with commas) which acts as the central registry
-                                        for volumes
-                                      type: string
-                                    tenant:
-                                      description: Tenant owning the given Quobyte volume
-                                        in the Backend Used with dynamically provisioned
-                                        Quobyte volumes, value is set by the plugin
-                                      type: string
-                                    user:
-                                      description: User to map volume access to Defaults
-                                        to serivceaccount user
-                                      type: string
-                                    volume:
-                                      description: Volume is a string that references
-                                        an already created Quobyte volume by name.
-                                      type: string
-                                  required:
-                                    - registry
-                                    - volume
-                                  type: object
-                                rbd:
-                                  description: 'RBD represents a Rados Block Device
-                                  mount on the host that shares a pod''s lifetime.
-                                  More info: https://examples.k8s.io/volumes/rbd/README.md'
-                                  properties:
-                                    fsType:
-                                      description: 'Filesystem type of the volume that
-                                      you want to mount. Tip: Ensure that the filesystem
-                                      type is supported by the host operating system.
-                                      Examples: "ext4", "xfs", "ntfs". Implicitly
-                                      inferred to be "ext4" if unspecified. More info:
-                                      https://kubernetes.io/docs/concepts/storage/volumes#rbd
-                                      TODO: how do we prevent errors in the filesystem
-                                      from compromising the machine'
-                                      type: string
-                                    image:
-                                      description: 'The rados image name. More info:
-                                      https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
-                                      type: string
-                                    keyring:
-                                      description: 'Keyring is the path to key ring
-                                      for RBDUser. Default is /etc/ceph/keyring. More
-                                      info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
-                                      type: string
-                                    monitors:
-                                      description: 'A collection of Ceph monitors. More
-                                      info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
-                                      items:
-                                        type: string
-                                      type: array
-                                    pool:
-                                      description: 'The rados pool name. Default is
-                                      rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
-                                      type: string
-                                    readOnly:
-                                      description: 'ReadOnly here will force the ReadOnly
-                                      setting in VolumeMounts. Defaults to false.
-                                      More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
-                                      type: boolean
-                                    secretRef:
-                                      description: 'SecretRef is name of the authentication
-                                      secret for RBDUser. If provided overrides keyring.
-                                      Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
-                                      properties:
-                                        name:
-                                          description: 'Name of the referent. More info:
-                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                          TODO: Add other useful fields. apiVersion,
-                                          kind, uid?'
-                                          type: string
-                                      type: object
-                                    user:
-                                      description: 'The rados user name. Default is
-                                      admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
-                                      type: string
-                                  required:
-                                    - image
-                                    - monitors
-                                  type: object
-                                scaleIO:
-                                  description: ScaleIO represents a ScaleIO persistent
-                                    volume attached and mounted on Kubernetes nodes.
-                                  properties:
-                                    fsType:
-                                      description: Filesystem type to mount. Must be
-                                        a filesystem type supported by the host operating
-                                        system. Ex. "ext4", "xfs", "ntfs". Default is
-                                        "xfs".
-                                      type: string
-                                    gateway:
-                                      description: The host address of the ScaleIO API
-                                        Gateway.
-                                      type: string
-                                    protectionDomain:
-                                      description: The name of the ScaleIO Protection
-                                        Domain for the configured storage.
-                                      type: string
-                                    readOnly:
-                                      description: Defaults to false (read/write). ReadOnly
-                                        here will force the ReadOnly setting in VolumeMounts.
-                                      type: boolean
-                                    secretRef:
-                                      description: SecretRef references to the secret
-                                        for ScaleIO user and other sensitive information.
-                                        If this is not provided, Login operation will
-                                        fail.
-                                      properties:
-                                        name:
-                                          description: 'Name of the referent. More info:
-                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                          TODO: Add other useful fields. apiVersion,
-                                          kind, uid?'
-                                          type: string
-                                      type: object
-                                    sslEnabled:
-                                      description: Flag to enable/disable SSL communication
-                                        with Gateway, default false
-                                      type: boolean
-                                    storageMode:
-                                      description: Indicates whether the storage for
-                                        a volume should be ThickProvisioned or ThinProvisioned.
-                                        Default is ThinProvisioned.
-                                      type: string
-                                    storagePool:
-                                      description: The ScaleIO Storage Pool associated
-                                        with the protection domain.
-                                      type: string
-                                    system:
-                                      description: The name of the storage system as
-                                        configured in ScaleIO.
-                                      type: string
-                                    volumeName:
-                                      description: The name of a volume already created
-                                        in the ScaleIO system that is associated with
-                                        this volume source.
-                                      type: string
-                                  required:
-                                    - gateway
-                                    - secretRef
-                                    - system
-                                  type: object
-                                secret:
-                                  description: 'Secret represents a secret that should
-                                  populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
-                                  properties:
-                                    defaultMode:
-                                      description: 'Optional: mode bits to use on created
-                                      files by default. Must be a value between 0
-                                      and 0777. Defaults to 0644. Directories within
-                                      the path are not affected by this setting. This
-                                      might be in conflict with other options that
-                                      affect the file mode, like fsGroup, and the
-                                      result can be other mode bits set.'
-                                      format: int32
-                                      type: integer
-                                    items:
-                                      description: If unspecified, each key-value pair
-                                        in the Data field of the referenced Secret will
-                                        be projected into the volume as a file whose
-                                        name is the key and content is the value. If
-                                        specified, the listed keys will be projected
-                                        into the specified paths, and unlisted keys
-                                        will not be present. If a key is specified which
-                                        is not present in the Secret, the volume setup
-                                        will error unless it is marked optional. Paths
-                                        must be relative and may not contain the '..'
-                                        path or start with '..'.
-                                      items:
-                                        description: Maps a string key to a path within
-                                          a volume.
-                                        properties:
-                                          key:
-                                            description: The key to project.
-                                            type: string
-                                          mode:
-                                            description: 'Optional: mode bits to use
-                                            on this file, must be a value between
-                                            0 and 0777. If not specified, the volume
-                                            defaultMode will be used. This might be
-                                            in conflict with other options that affect
-                                            the file mode, like fsGroup, and the result
-                                            can be other mode bits set.'
-                                            format: int32
-                                            type: integer
-                                          path:
-                                            description: The relative path of the file
-                                              to map the key to. May not be an absolute
-                                              path. May not contain the path element
-                                              '..'. May not start with the string '..'.
-                                            type: string
-                                        required:
-                                          - key
-                                          - path
-                                        type: object
-                                      type: array
                                     optional:
                                       description: Specify whether the Secret or its
-                                        keys must be defined
+                                        key must be defined
                                       type: boolean
-                                    secretName:
-                                      description: 'Name of the secret in the pod''s
-                                      namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
-                                      type: string
-                                  type: object
-                                storageos:
-                                  description: StorageOS represents a StorageOS volume
-                                    attached and mounted on Kubernetes nodes.
-                                  properties:
-                                    fsType:
-                                      description: Filesystem type to mount. Must be
-                                        a filesystem type supported by the host operating
-                                        system. Ex. "ext4", "xfs", "ntfs". Implicitly
-                                        inferred to be "ext4" if unspecified.
-                                      type: string
-                                    readOnly:
-                                      description: Defaults to false (read/write). ReadOnly
-                                        here will force the ReadOnly setting in VolumeMounts.
-                                      type: boolean
-                                    secretRef:
-                                      description: SecretRef specifies the secret to
-                                        use for obtaining the StorageOS API credentials.  If
-                                        not specified, default values will be attempted.
-                                      properties:
-                                        name:
-                                          description: 'Name of the referent. More info:
-                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                          TODO: Add other useful fields. apiVersion,
-                                          kind, uid?'
-                                          type: string
-                                      type: object
-                                    volumeName:
-                                      description: VolumeName is the human-readable
-                                        name of the StorageOS volume.  Volume names
-                                        are only unique within a namespace.
-                                      type: string
-                                    volumeNamespace:
-                                      description: VolumeNamespace specifies the scope
-                                        of the volume within StorageOS.  If no namespace
-                                        is specified then the Pod's namespace will be
-                                        used.  This allows the Kubernetes name scoping
-                                        to be mirrored within StorageOS for tighter
-                                        integration. Set VolumeName to any name to override
-                                        the default behaviour. Set to "default" if you
-                                        are not using namespaces within StorageOS. Namespaces
-                                        that do not pre-exist within StorageOS will
-                                        be created.
-                                      type: string
-                                  type: object
-                                vsphereVolume:
-                                  description: VsphereVolume represents a vSphere volume
-                                    attached and mounted on kubelets host machine
-                                  properties:
-                                    fsType:
-                                      description: Filesystem type to mount. Must be
-                                        a filesystem type supported by the host operating
-                                        system. Ex. "ext4", "xfs", "ntfs". Implicitly
-                                        inferred to be "ext4" if unspecified.
-                                      type: string
-                                    storagePolicyID:
-                                      description: Storage Policy Based Management (SPBM)
-                                        profile ID associated with the StoragePolicyName.
-                                      type: string
-                                    storagePolicyName:
-                                      description: Storage Policy Based Management (SPBM)
-                                        profile name.
-                                      type: string
-                                    volumePath:
-                                      description: Path that identifies vSphere volume
-                                        vmdk
-                                      type: string
                                   required:
-                                    - volumePath
+                                    - key
+                                  type: object
+                              type: object
+                          required:
+                            - name
+                          type: object
+                        type: array
+                      image:
+                        type: string
+                      name:
+                        type: string
+                      securityContext:
+                        description: SecurityContext holds security configuration
+                          that will be applied to a container. Some fields are present
+                          in both SecurityContext and PodSecurityContext.  When both
+                          are set, the values in SecurityContext take precedence.
+                        properties:
+                          allowPrivilegeEscalation:
+                            description: 'AllowPrivilegeEscalation controls whether
+                              a process can gain more privileges than its parent process.
+                              This bool directly controls if the no_new_privs flag
+                              will be set on the container process. AllowPrivilegeEscalation
+                              is true always when the container is: 1) run as Privileged
+                              2) has CAP_SYS_ADMIN'
+                            type: boolean
+                          capabilities:
+                            description: The capabilities to add/drop when running
+                              containers. Defaults to the default set of capabilities
+                              granted by the container runtime.
+                            properties:
+                              add:
+                                description: Added capabilities
+                                items:
+                                  description: Capability represent POSIX capabilities
+                                    type
+                                  type: string
+                                type: array
+                              drop:
+                                description: Removed capabilities
+                                items:
+                                  description: Capability represent POSIX capabilities
+                                    type
+                                  type: string
+                                type: array
+                            type: object
+                          privileged:
+                            description: Run container in privileged mode. Processes
+                              in privileged containers are essentially equivalent
+                              to root on the host. Defaults to false.
+                            type: boolean
+                          procMount:
+                            description: procMount denotes the type of proc mount
+                              to use for the containers. The default is DefaultProcMount
+                              which uses the container runtime defaults for readonly
+                              paths and masked paths. This requires the ProcMountType
+                              feature flag to be enabled.
+                            type: string
+                          readOnlyRootFilesystem:
+                            description: Whether this container has a read-only root
+                              filesystem. Default is false.
+                            type: boolean
+                          runAsGroup:
+                            description: The GID to run the entrypoint of the container
+                              process. Uses runtime default if unset. May also be
+                              set in PodSecurityContext.  If set in both SecurityContext
+                              and PodSecurityContext, the value specified in SecurityContext
+                              takes precedence.
+                            format: int64
+                            type: integer
+                          runAsNonRoot:
+                            description: Indicates that the container must run as
+                              a non-root user. If true, the Kubelet will validate
+                              the image at runtime to ensure that it does not run
+                              as UID 0 (root) and fail to start the container if it
+                              does. If unset or false, no such validation will be
+                              performed. May also be set in PodSecurityContext.  If
+                              set in both SecurityContext and PodSecurityContext,
+                              the value specified in SecurityContext takes precedence.
+                            type: boolean
+                          runAsUser:
+                            description: The UID to run the entrypoint of the container
+                              process. Defaults to user specified in image metadata
+                              if unspecified. May also be set in PodSecurityContext.  If
+                              set in both SecurityContext and PodSecurityContext,
+                              the value specified in SecurityContext takes precedence.
+                            format: int64
+                            type: integer
+                          seLinuxOptions:
+                            description: The SELinux context to be applied to the
+                              container. If unspecified, the container runtime will
+                              allocate a random SELinux context for each container.  May
+                              also be set in PodSecurityContext.  If set in both SecurityContext
+                              and PodSecurityContext, the value specified in SecurityContext
+                              takes precedence.
+                            properties:
+                              level:
+                                description: Level is SELinux level label that applies
+                                  to the container.
+                                type: string
+                              role:
+                                description: Role is a SELinux role label that applies
+                                  to the container.
+                                type: string
+                              type:
+                                description: Type is a SELinux type label that applies
+                                  to the container.
+                                type: string
+                              user:
+                                description: User is a SELinux user label that applies
+                                  to the container.
+                                type: string
+                            type: object
+                          windowsOptions:
+                            description: The Windows specific settings applied to
+                              all containers. If unspecified, the options from the
+                              PodSecurityContext will be used. If set in both SecurityContext
+                              and PodSecurityContext, the value specified in SecurityContext
+                              takes precedence.
+                            properties:
+                              gmsaCredentialSpec:
+                                description: GMSACredentialSpec is where the GMSA
+                                  admission webhook (https://github.com/kubernetes-sigs/windows-gmsa)
+                                  inlines the contents of the GMSA credential spec
+                                  named by the GMSACredentialSpecName field.
+                                type: string
+                              gmsaCredentialSpecName:
+                                description: GMSACredentialSpecName is the name of
+                                  the GMSA credential spec to use.
+                                type: string
+                              runAsUserName:
+                                description: The UserName in Windows to run the entrypoint
+                                  of the container process. Defaults to the user specified
+                                  in image metadata if unspecified. May also be set
+                                  in PodSecurityContext. If set in both SecurityContext
+                                  and PodSecurityContext, the value specified in SecurityContext
+                                  takes precedence.
+                                type: string
+                            type: object
+                        type: object
+                      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.
+                              type: string
+                            name:
+                              description: This must match the Name of a Volume.
+                              type: string
+                            readOnly:
+                              description: Mounted read-only if true, read-write otherwise
+                                (false or unspecified). Defaults to false.
+                              type: boolean
+                            subPath:
+                              description: Path within the volume from which the container's
+                                volume should be mounted. Defaults to "" (volume's
+                                root).
+                              type: string
+                            subPathExpr:
+                              description: Expanded path within the volume from which
+                                the container's volume should be mounted. Behaves
+                                similarly to SubPath but environment variable references
+                                $(VAR_NAME) are expanded using the container's environment.
+                                Defaults to "" (volume's root). SubPathExpr and SubPath
+                                are mutually exclusive.
+                              type: string
+                          required:
+                            - mountPath
+                            - name
+                          type: object
+                        type: array
+                      volumes:
+                        items:
+                          description: Volume represents a named volume in a pod that
+                            may be accessed by any container in the pod.
+                          properties:
+                            awsElasticBlockStore:
+                              description: 'AWSElasticBlockStore represents an AWS
+                                Disk resource that is attached to a kubelet''s host
+                                machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+                              properties:
+                                fsType:
+                                  description: 'Filesystem type of the volume that
+                                    you want to mount. Tip: Ensure that the filesystem
+                                    type is supported by the host operating system.
+                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred
+                                    to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
+                                    TODO: how do we prevent errors in the filesystem
+                                    from compromising the machine'
+                                  type: string
+                                partition:
+                                  description: 'The partition in the volume that you
+                                    want to mount. If omitted, the default is to mount
+                                    by volume name. Examples: For volume /dev/sda1,
+                                    you specify the partition as "1". Similarly, the
+                                    volume partition for /dev/sda is "0" (or you can
+                                    leave the property empty).'
+                                  format: int32
+                                  type: integer
+                                readOnly:
+                                  description: 'Specify "true" to force and set the
+                                    ReadOnly property in VolumeMounts to "true". If
+                                    omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+                                  type: boolean
+                                volumeID:
+                                  description: 'Unique ID of the persistent disk resource
+                                    in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
+                                  type: string
+                              required:
+                                - volumeID
+                              type: object
+                            azureDisk:
+                              description: AzureDisk represents an Azure Data Disk
+                                mount on the host and bind mount to the pod.
+                              properties:
+                                cachingMode:
+                                  description: 'Host Caching mode: None, Read Only,
+                                    Read Write.'
+                                  type: string
+                                diskName:
+                                  description: The Name of the data disk in the blob
+                                    storage
+                                  type: string
+                                diskURI:
+                                  description: The URI the data disk in the blob storage
+                                  type: string
+                                fsType:
+                                  description: Filesystem type to mount. Must be a
+                                    filesystem type supported by the host operating
+                                    system. Ex. "ext4", "xfs", "ntfs". Implicitly
+                                    inferred to be "ext4" if unspecified.
+                                  type: string
+                                kind:
+                                  description: 'Expected values Shared: multiple blob
+                                    disks per storage account  Dedicated: single blob
+                                    disk per storage account  Managed: azure managed
+                                    data disk (only in managed availability set).
+                                    defaults to shared'
+                                  type: string
+                                readOnly:
+                                  description: Defaults to false (read/write). ReadOnly
+                                    here will force the ReadOnly setting in VolumeMounts.
+                                  type: boolean
+                              required:
+                                - diskName
+                                - diskURI
+                              type: object
+                            azureFile:
+                              description: AzureFile represents an Azure File Service
+                                mount on the host and bind mount to the pod.
+                              properties:
+                                readOnly:
+                                  description: Defaults to false (read/write). ReadOnly
+                                    here will force the ReadOnly setting in VolumeMounts.
+                                  type: boolean
+                                secretName:
+                                  description: the name of secret that contains Azure
+                                    Storage Account Name and Key
+                                  type: string
+                                shareName:
+                                  description: Share Name
+                                  type: string
+                              required:
+                                - secretName
+                                - shareName
+                              type: object
+                            cephfs:
+                              description: CephFS represents a Ceph FS mount on the
+                                host that shares a pod's lifetime
+                              properties:
+                                monitors:
+                                  description: 'Required: Monitors is a collection
+                                    of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+                                  items:
+                                    type: string
+                                  type: array
+                                path:
+                                  description: 'Optional: Used as the mounted root,
+                                    rather than the full Ceph tree, default is /'
+                                  type: string
+                                readOnly:
+                                  description: 'Optional: Defaults to false (read/write).
+                                    ReadOnly here will force the ReadOnly setting
+                                    in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+                                  type: boolean
+                                secretFile:
+                                  description: 'Optional: SecretFile is the path to
+                                    key ring for User, default is /etc/ceph/user.secret
+                                    More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+                                  type: string
+                                secretRef:
+                                  description: 'Optional: SecretRef is reference to
+                                    the authentication secret for User, default is
+                                    empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+                                  properties:
+                                    name:
+                                      description: 'Name of the referent. More info:
+                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                        TODO: Add other useful fields. apiVersion,
+                                        kind, uid?'
+                                      type: string
+                                  type: object
+                                user:
+                                  description: 'Optional: User is the rados user name,
+                                    default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
+                                  type: string
+                              required:
+                                - monitors
+                              type: object
+                            cinder:
+                              description: 'Cinder represents a cinder volume attached
+                                and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+                              properties:
+                                fsType:
+                                  description: 'Filesystem type to mount. Must be
+                                    a filesystem type supported by the host operating
+                                    system. Examples: "ext4", "xfs", "ntfs". Implicitly
+                                    inferred to be "ext4" if unspecified. More info:
+                                    https://examples.k8s.io/mysql-cinder-pd/README.md'
+                                  type: string
+                                readOnly:
+                                  description: 'Optional: Defaults to false (read/write).
+                                    ReadOnly here will force the ReadOnly setting
+                                    in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+                                  type: boolean
+                                secretRef:
+                                  description: 'Optional: points to a secret object
+                                    containing parameters used to connect to OpenStack.'
+                                  properties:
+                                    name:
+                                      description: 'Name of the referent. More info:
+                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                        TODO: Add other useful fields. apiVersion,
+                                        kind, uid?'
+                                      type: string
+                                  type: object
+                                volumeID:
+                                  description: 'volume id used to identify the volume
+                                    in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
+                                  type: string
+                              required:
+                                - volumeID
+                              type: object
+                            configMap:
+                              description: ConfigMap represents a configMap that should
+                                populate this volume
+                              properties:
+                                defaultMode:
+                                  description: 'Optional: mode bits to use on created
+                                    files by default. Must be a value between 0 and
+                                    0777. Defaults to 0644. Directories within the
+                                    path are not affected by this setting. This might
+                                    be in conflict with other options that affect
+                                    the file mode, like fsGroup, and the result can
+                                    be other mode bits set.'
+                                  format: int32
+                                  type: integer
+                                items:
+                                  description: If unspecified, each key-value pair
+                                    in the Data field of the referenced ConfigMap
+                                    will be projected into the volume as a file whose
+                                    name is the key and content is the value. If specified,
+                                    the listed keys will be projected into the specified
+                                    paths, and unlisted keys will not be present.
+                                    If a key is specified which is not present in
+                                    the ConfigMap, the volume setup will error unless
+                                    it is marked optional. Paths must be relative
+                                    and may not contain the '..' path or start with
+                                    '..'.
+                                  items:
+                                    description: Maps a string key to a path within
+                                      a volume.
+                                    properties:
+                                      key:
+                                        description: The key to project.
+                                        type: string
+                                      mode:
+                                        description: 'Optional: mode bits to use on
+                                          this file, must be a value between 0 and
+                                          0777. If not specified, the volume defaultMode
+                                          will be used. This might be in conflict
+                                          with other options that affect the file
+                                          mode, like fsGroup, and the result can be
+                                          other mode bits set.'
+                                        format: int32
+                                        type: integer
+                                      path:
+                                        description: The relative path of the file
+                                          to map the key to. May not be an absolute
+                                          path. May not contain the path element '..'.
+                                          May not start with the string '..'.
+                                        type: string
+                                    required:
+                                      - key
+                                      - path
+                                    type: object
+                                  type: array
+                                name:
+                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                    TODO: Add other useful fields. apiVersion, kind,
+                                    uid?'
+                                  type: string
+                                optional:
+                                  description: Specify whether the ConfigMap or its
+                                    keys must be defined
+                                  type: boolean
+                              type: object
+                            csi:
+                              description: CSI (Container Storage Interface) represents
+                                storage that is handled by an external CSI driver
+                                (Alpha feature).
+                              properties:
+                                driver:
+                                  description: Driver is the name of the CSI driver
+                                    that handles this volume. Consult with your admin
+                                    for the correct name as registered in the cluster.
+                                  type: string
+                                fsType:
+                                  description: Filesystem type to mount. Ex. "ext4",
+                                    "xfs", "ntfs". If not provided, the empty value
+                                    is passed to the associated CSI driver which will
+                                    determine the default filesystem to apply.
+                                  type: string
+                                nodePublishSecretRef:
+                                  description: NodePublishSecretRef is a reference
+                                    to the secret object containing sensitive information
+                                    to pass to the CSI driver to complete the CSI
+                                    NodePublishVolume and NodeUnpublishVolume calls.
+                                    This field is optional, and  may be empty if no
+                                    secret is required. If the secret object contains
+                                    more than one secret, all secret references are
+                                    passed.
+                                  properties:
+                                    name:
+                                      description: 'Name of the referent. More info:
+                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                        TODO: Add other useful fields. apiVersion,
+                                        kind, uid?'
+                                      type: string
+                                  type: object
+                                readOnly:
+                                  description: Specifies a read-only configuration
+                                    for the volume. Defaults to false (read/write).
+                                  type: boolean
+                                volumeAttributes:
+                                  additionalProperties:
+                                    type: string
+                                  description: VolumeAttributes stores driver-specific
+                                    properties that are passed to the CSI driver.
+                                    Consult your driver's documentation for supported
+                                    values.
                                   type: object
                               required:
-                                - name
+                                - driver
                               type: object
-                            type: array
-                          workingDir:
-                            type: string
-                        type: object
+                            downwardAPI:
+                              description: DownwardAPI represents downward API about
+                                the pod that should populate this volume
+                              properties:
+                                defaultMode:
+                                  description: 'Optional: mode bits to use on created
+                                    files by default. Must be a value between 0 and
+                                    0777. Defaults to 0644. Directories within the
+                                    path are not affected by this setting. This might
+                                    be in conflict with other options that affect
+                                    the file mode, like fsGroup, and the result can
+                                    be other mode bits set.'
+                                  format: int32
+                                  type: integer
+                                items:
+                                  description: Items is a list of downward API volume
+                                    file
+                                  items:
+                                    description: DownwardAPIVolumeFile represents
+                                      information to create the file containing the
+                                      pod field
+                                    properties:
+                                      fieldRef:
+                                        description: 'Required: Selects a field of
+                                          the pod: only annotations, labels, name
+                                          and namespace are supported.'
+                                        properties:
+                                          apiVersion:
+                                            description: Version of the schema the
+                                              FieldPath is written in terms of, defaults
+                                              to "v1".
+                                            type: string
+                                          fieldPath:
+                                            description: Path of the field to select
+                                              in the specified API version.
+                                            type: string
+                                        required:
+                                          - fieldPath
+                                        type: object
+                                      mode:
+                                        description: 'Optional: mode bits to use on
+                                          this file, must be a value between 0 and
+                                          0777. If not specified, the volume defaultMode
+                                          will be used. This might be in conflict
+                                          with other options that affect the file
+                                          mode, like fsGroup, and the result can be
+                                          other mode bits set.'
+                                        format: int32
+                                        type: integer
+                                      path:
+                                        description: 'Required: Path is  the relative
+                                          path name of the file to be created. Must
+                                          not be absolute or contain the ''..'' path.
+                                          Must be utf-8 encoded. The first item of
+                                          the relative path must not start with ''..'''
+                                        type: string
+                                      resourceFieldRef:
+                                        description: 'Selects a resource of the container:
+                                          only resources limits and requests (limits.cpu,
+                                          limits.memory, requests.cpu and requests.memory)
+                                          are currently supported.'
+                                        properties:
+                                          containerName:
+                                            description: 'Container name: required
+                                              for volumes, optional for env vars'
+                                            type: string
+                                          divisor:
+                                            anyOf:
+                                              - type: integer
+                                              - type: string
+                                            description: Specifies the output format
+                                              of the exposed resources, defaults to
+                                              "1"
+                                            pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+                                            x-kubernetes-int-or-string: true
+                                          resource:
+                                            description: 'Required: resource to select'
+                                            type: string
+                                        required:
+                                          - resource
+                                        type: object
+                                    required:
+                                      - path
+                                    type: object
+                                  type: array
+                              type: object
+                            emptyDir:
+                              description: 'EmptyDir represents a temporary directory
+                                that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
+                              properties:
+                                medium:
+                                  description: 'What type of storage medium should
+                                    back this directory. The default is "" which means
+                                    to use the node''s default medium. Must be an
+                                    empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
+                                  type: string
+                                sizeLimit:
+                                  anyOf:
+                                    - type: integer
+                                    - type: string
+                                  description: 'Total amount of local storage required
+                                    for this EmptyDir volume. The size limit is also
+                                    applicable for memory medium. The maximum usage
+                                    on memory medium EmptyDir would be the minimum
+                                    value between the SizeLimit specified here and
+                                    the sum of memory limits of all containers in
+                                    a pod. The default is nil which means that the
+                                    limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir'
+                                  pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+                                  x-kubernetes-int-or-string: true
+                              type: object
+                            fc:
+                              description: FC represents a Fibre Channel resource
+                                that is attached to a kubelet's host machine and then
+                                exposed to the pod.
+                              properties:
+                                fsType:
+                                  description: 'Filesystem type to mount. Must be
+                                    a filesystem type supported by the host operating
+                                    system. Ex. "ext4", "xfs", "ntfs". Implicitly
+                                    inferred to be "ext4" if unspecified. TODO: how
+                                    do we prevent errors in the filesystem from compromising
+                                    the machine'
+                                  type: string
+                                lun:
+                                  description: 'Optional: FC target lun number'
+                                  format: int32
+                                  type: integer
+                                readOnly:
+                                  description: 'Optional: Defaults to false (read/write).
+                                    ReadOnly here will force the ReadOnly setting
+                                    in VolumeMounts.'
+                                  type: boolean
+                                targetWWNs:
+                                  description: 'Optional: FC target worldwide names
+                                    (WWNs)'
+                                  items:
+                                    type: string
+                                  type: array
+                                wwids:
+                                  description: 'Optional: FC volume world wide identifiers
+                                    (wwids) Either wwids or combination of targetWWNs
+                                    and lun must be set, but not both simultaneously.'
+                                  items:
+                                    type: string
+                                  type: array
+                              type: object
+                            flexVolume:
+                              description: FlexVolume represents a generic volume
+                                resource that is provisioned/attached using an exec
+                                based plugin.
+                              properties:
+                                driver:
+                                  description: Driver is the name of the driver to
+                                    use for this volume.
+                                  type: string
+                                fsType:
+                                  description: Filesystem type to mount. Must be a
+                                    filesystem type supported by the host operating
+                                    system. Ex. "ext4", "xfs", "ntfs". The default
+                                    filesystem depends on FlexVolume script.
+                                  type: string
+                                options:
+                                  additionalProperties:
+                                    type: string
+                                  description: 'Optional: Extra command options if
+                                    any.'
+                                  type: object
+                                readOnly:
+                                  description: 'Optional: Defaults to false (read/write).
+                                    ReadOnly here will force the ReadOnly setting
+                                    in VolumeMounts.'
+                                  type: boolean
+                                secretRef:
+                                  description: 'Optional: SecretRef is reference to
+                                    the secret object containing sensitive information
+                                    to pass to the plugin scripts. This may be empty
+                                    if no secret object is specified. If the secret
+                                    object contains more than one secret, all secrets
+                                    are passed to the plugin scripts.'
+                                  properties:
+                                    name:
+                                      description: 'Name of the referent. More info:
+                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                        TODO: Add other useful fields. apiVersion,
+                                        kind, uid?'
+                                      type: string
+                                  type: object
+                              required:
+                                - driver
+                              type: object
+                            flocker:
+                              description: Flocker represents a Flocker volume attached
+                                to a kubelet's host machine. This depends on the Flocker
+                                control service being running
+                              properties:
+                                datasetName:
+                                  description: Name of the dataset stored as metadata
+                                    -> name on the dataset for Flocker should be considered
+                                    as deprecated
+                                  type: string
+                                datasetUUID:
+                                  description: UUID of the dataset. This is unique
+                                    identifier of a Flocker dataset
+                                  type: string
+                              type: object
+                            gcePersistentDisk:
+                              description: 'GCEPersistentDisk represents a GCE Disk
+                                resource that is attached to a kubelet''s host machine
+                                and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+                              properties:
+                                fsType:
+                                  description: 'Filesystem type of the volume that
+                                    you want to mount. Tip: Ensure that the filesystem
+                                    type is supported by the host operating system.
+                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred
+                                    to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
+                                    TODO: how do we prevent errors in the filesystem
+                                    from compromising the machine'
+                                  type: string
+                                partition:
+                                  description: 'The partition in the volume that you
+                                    want to mount. If omitted, the default is to mount
+                                    by volume name. Examples: For volume /dev/sda1,
+                                    you specify the partition as "1". Similarly, the
+                                    volume partition for /dev/sda is "0" (or you can
+                                    leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+                                  format: int32
+                                  type: integer
+                                pdName:
+                                  description: 'Unique name of the PD resource in
+                                    GCE. Used to identify the disk in GCE. More info:
+                                    https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+                                  type: string
+                                readOnly:
+                                  description: 'ReadOnly here will force the ReadOnly
+                                    setting in VolumeMounts. Defaults to false. More
+                                    info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
+                                  type: boolean
+                              required:
+                                - pdName
+                              type: object
+                            gitRepo:
+                              description: 'GitRepo represents a git repository at
+                                a particular revision. DEPRECATED: GitRepo is deprecated.
+                                To provision a container with a git repo, mount an
+                                EmptyDir into an InitContainer that clones the repo
+                                using git, then mount the EmptyDir into the Pod''s
+                                container.'
+                              properties:
+                                directory:
+                                  description: Target directory name. Must not contain
+                                    or start with '..'.  If '.' is supplied, the volume
+                                    directory will be the git repository.  Otherwise,
+                                    if specified, the volume will contain the git
+                                    repository in the subdirectory with the given
+                                    name.
+                                  type: string
+                                repository:
+                                  description: Repository URL
+                                  type: string
+                                revision:
+                                  description: Commit hash for the specified revision.
+                                  type: string
+                              required:
+                                - repository
+                              type: object
+                            glusterfs:
+                              description: 'Glusterfs represents a Glusterfs mount
+                                on the host that shares a pod''s lifetime. More info:
+                                https://examples.k8s.io/volumes/glusterfs/README.md'
+                              properties:
+                                endpoints:
+                                  description: 'EndpointsName is the endpoint name
+                                    that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+                                  type: string
+                                path:
+                                  description: 'Path is the Glusterfs volume path.
+                                    More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+                                  type: string
+                                readOnly:
+                                  description: 'ReadOnly here will force the Glusterfs
+                                    volume to be mounted with read-only permissions.
+                                    Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
+                                  type: boolean
+                              required:
+                                - endpoints
+                                - path
+                              type: object
+                            hostPath:
+                              description: 'HostPath represents a pre-existing file
+                                or directory on the host machine that is directly
+                                exposed to the container. This is generally used for
+                                system agents or other privileged things that are
+                                allowed to see the host machine. Most containers will
+                                NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
+                                --- TODO(jonesdl) We need to restrict who can use
+                                host directory mounts and who can/can not mount host
+                                directories as read/write.'
+                              properties:
+                                path:
+                                  description: 'Path of the directory on the host.
+                                    If the path is a symlink, it will follow the link
+                                    to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
+                                  type: string
+                                type:
+                                  description: 'Type for HostPath Volume Defaults
+                                    to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
+                                  type: string
+                              required:
+                                - path
+                              type: object
+                            iscsi:
+                              description: 'ISCSI represents an ISCSI Disk resource
+                                that is attached to a kubelet''s host machine and
+                                then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md'
+                              properties:
+                                chapAuthDiscovery:
+                                  description: whether support iSCSI Discovery CHAP
+                                    authentication
+                                  type: boolean
+                                chapAuthSession:
+                                  description: whether support iSCSI Session CHAP
+                                    authentication
+                                  type: boolean
+                                fsType:
+                                  description: 'Filesystem type of the volume that
+                                    you want to mount. Tip: Ensure that the filesystem
+                                    type is supported by the host operating system.
+                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred
+                                    to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
+                                    TODO: how do we prevent errors in the filesystem
+                                    from compromising the machine'
+                                  type: string
+                                initiatorName:
+                                  description: Custom iSCSI Initiator Name. If initiatorName
+                                    is specified with iscsiInterface simultaneously,
+                                    new iSCSI interface <target portal>:<volume name>
+                                    will be created for the connection.
+                                  type: string
+                                iqn:
+                                  description: Target iSCSI Qualified Name.
+                                  type: string
+                                iscsiInterface:
+                                  description: iSCSI Interface Name that uses an iSCSI
+                                    transport. Defaults to 'default' (tcp).
+                                  type: string
+                                lun:
+                                  description: iSCSI Target Lun number.
+                                  format: int32
+                                  type: integer
+                                portals:
+                                  description: iSCSI Target Portal List. The portal
+                                    is either an IP or ip_addr:port if the port is
+                                    other than default (typically TCP ports 860 and
+                                    3260).
+                                  items:
+                                    type: string
+                                  type: array
+                                readOnly:
+                                  description: ReadOnly here will force the ReadOnly
+                                    setting in VolumeMounts. Defaults to false.
+                                  type: boolean
+                                secretRef:
+                                  description: CHAP Secret for iSCSI target and initiator
+                                    authentication
+                                  properties:
+                                    name:
+                                      description: 'Name of the referent. More info:
+                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                        TODO: Add other useful fields. apiVersion,
+                                        kind, uid?'
+                                      type: string
+                                  type: object
+                                targetPortal:
+                                  description: iSCSI Target Portal. The Portal is
+                                    either an IP or ip_addr:port if the port is other
+                                    than default (typically TCP ports 860 and 3260).
+                                  type: string
+                              required:
+                                - iqn
+                                - lun
+                                - targetPortal
+                              type: object
+                            name:
+                              description: 'Volume''s name. Must be a DNS_LABEL and
+                                unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
+                              type: string
+                            nfs:
+                              description: 'NFS represents an NFS mount on the host
+                                that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+                              properties:
+                                path:
+                                  description: 'Path that is exported by the NFS server.
+                                    More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+                                  type: string
+                                readOnly:
+                                  description: 'ReadOnly here will force the NFS export
+                                    to be mounted with read-only permissions. Defaults
+                                    to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+                                  type: boolean
+                                server:
+                                  description: 'Server is the hostname or IP address
+                                    of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
+                                  type: string
+                              required:
+                                - path
+                                - server
+                              type: object
+                            persistentVolumeClaim:
+                              description: 'PersistentVolumeClaimVolumeSource represents
+                                a reference to a PersistentVolumeClaim in the same
+                                namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
+                              properties:
+                                claimName:
+                                  description: 'ClaimName is the name of a PersistentVolumeClaim
+                                    in the same namespace as the pod using this volume.
+                                    More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
+                                  type: string
+                                readOnly:
+                                  description: Will force the ReadOnly setting in
+                                    VolumeMounts. Default false.
+                                  type: boolean
+                              required:
+                                - claimName
+                              type: object
+                            photonPersistentDisk:
+                              description: PhotonPersistentDisk represents a PhotonController
+                                persistent disk attached and mounted on kubelets host
+                                machine
+                              properties:
+                                fsType:
+                                  description: Filesystem type to mount. Must be a
+                                    filesystem type supported by the host operating
+                                    system. Ex. "ext4", "xfs", "ntfs". Implicitly
+                                    inferred to be "ext4" if unspecified.
+                                  type: string
+                                pdID:
+                                  description: ID that identifies Photon Controller
+                                    persistent disk
+                                  type: string
+                              required:
+                                - pdID
+                              type: object
+                            portworxVolume:
+                              description: PortworxVolume represents a portworx volume
+                                attached and mounted on kubelets host machine
+                              properties:
+                                fsType:
+                                  description: FSType represents the filesystem type
+                                    to mount Must be a filesystem type supported by
+                                    the host operating system. Ex. "ext4", "xfs".
+                                    Implicitly inferred to be "ext4" if unspecified.
+                                  type: string
+                                readOnly:
+                                  description: Defaults to false (read/write). ReadOnly
+                                    here will force the ReadOnly setting in VolumeMounts.
+                                  type: boolean
+                                volumeID:
+                                  description: VolumeID uniquely identifies a Portworx
+                                    volume
+                                  type: string
+                              required:
+                                - volumeID
+                              type: object
+                            projected:
+                              description: Items for all in one resources secrets,
+                                configmaps, and downward API
+                              properties:
+                                defaultMode:
+                                  description: Mode bits to use on created files by
+                                    default. Must be a value between 0 and 0777. Directories
+                                    within the path are not affected by this setting.
+                                    This might be in conflict with other options that
+                                    affect the file mode, like fsGroup, and the result
+                                    can be other mode bits set.
+                                  format: int32
+                                  type: integer
+                                sources:
+                                  description: list of volume projections
+                                  items:
+                                    description: Projection that may be projected
+                                      along with other supported volume types
+                                    properties:
+                                      configMap:
+                                        description: information about the configMap
+                                          data to project
+                                        properties:
+                                          items:
+                                            description: If unspecified, each key-value
+                                              pair in the Data field of the referenced
+                                              ConfigMap will be projected into the
+                                              volume as a file whose name is the key
+                                              and content is the value. If specified,
+                                              the listed keys will be projected into
+                                              the specified paths, and unlisted keys
+                                              will not be present. If a key is specified
+                                              which is not present in the ConfigMap,
+                                              the volume setup will error unless it
+                                              is marked optional. Paths must be relative
+                                              and may not contain the '..' path or
+                                              start with '..'.
+                                            items:
+                                              description: Maps a string key to a
+                                                path within a volume.
+                                              properties:
+                                                key:
+                                                  description: The key to project.
+                                                  type: string
+                                                mode:
+                                                  description: 'Optional: mode bits
+                                                    to use on this file, must be a
+                                                    value between 0 and 0777. If not
+                                                    specified, the volume defaultMode
+                                                    will be used. This might be in
+                                                    conflict with other options that
+                                                    affect the file mode, like fsGroup,
+                                                    and the result can be other mode
+                                                    bits set.'
+                                                  format: int32
+                                                  type: integer
+                                                path:
+                                                  description: The relative path of
+                                                    the file to map the key to. May
+                                                    not be an absolute path. May not
+                                                    contain the path element '..'.
+                                                    May not start with the string
+                                                    '..'.
+                                                  type: string
+                                              required:
+                                                - key
+                                                - path
+                                              type: object
+                                            type: array
+                                          name:
+                                            description: 'Name of the referent. More
+                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                              TODO: Add other useful fields. apiVersion,
+                                              kind, uid?'
+                                            type: string
+                                          optional:
+                                            description: Specify whether the ConfigMap
+                                              or its keys must be defined
+                                            type: boolean
+                                        type: object
+                                      downwardAPI:
+                                        description: information about the downwardAPI
+                                          data to project
+                                        properties:
+                                          items:
+                                            description: Items is a list of DownwardAPIVolume
+                                              file
+                                            items:
+                                              description: DownwardAPIVolumeFile represents
+                                                information to create the file containing
+                                                the pod field
+                                              properties:
+                                                fieldRef:
+                                                  description: 'Required: Selects
+                                                    a field of the pod: only annotations,
+                                                    labels, name and namespace are
+                                                    supported.'
+                                                  properties:
+                                                    apiVersion:
+                                                      description: Version of the
+                                                        schema the FieldPath is written
+                                                        in terms of, defaults to "v1".
+                                                      type: string
+                                                    fieldPath:
+                                                      description: Path of the field
+                                                        to select in the specified
+                                                        API version.
+                                                      type: string
+                                                  required:
+                                                    - fieldPath
+                                                  type: object
+                                                mode:
+                                                  description: 'Optional: mode bits
+                                                    to use on this file, must be a
+                                                    value between 0 and 0777. If not
+                                                    specified, the volume defaultMode
+                                                    will be used. This might be in
+                                                    conflict with other options that
+                                                    affect the file mode, like fsGroup,
+                                                    and the result can be other mode
+                                                    bits set.'
+                                                  format: int32
+                                                  type: integer
+                                                path:
+                                                  description: 'Required: Path is  the
+                                                    relative path name of the file
+                                                    to be created. Must not be absolute
+                                                    or contain the ''..'' path. Must
+                                                    be utf-8 encoded. The first item
+                                                    of the relative path must not
+                                                    start with ''..'''
+                                                  type: string
+                                                resourceFieldRef:
+                                                  description: 'Selects a resource
+                                                    of the container: only resources
+                                                    limits and requests (limits.cpu,
+                                                    limits.memory, requests.cpu and
+                                                    requests.memory) are currently
+                                                    supported.'
+                                                  properties:
+                                                    containerName:
+                                                      description: 'Container name:
+                                                        required for volumes, optional
+                                                        for env vars'
+                                                      type: string
+                                                    divisor:
+                                                      anyOf:
+                                                        - type: integer
+                                                        - type: string
+                                                      description: Specifies the output
+                                                        format of the exposed resources,
+                                                        defaults to "1"
+                                                      pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
+                                                      x-kubernetes-int-or-string: true
+                                                    resource:
+                                                      description: 'Required: resource
+                                                        to select'
+                                                      type: string
+                                                  required:
+                                                    - resource
+                                                  type: object
+                                              required:
+                                                - path
+                                              type: object
+                                            type: array
+                                        type: object
+                                      secret:
+                                        description: information about the secret
+                                          data to project
+                                        properties:
+                                          items:
+                                            description: If unspecified, each key-value
+                                              pair in the Data field of the referenced
+                                              Secret will be projected into the volume
+                                              as a file whose name is the key and
+                                              content is the value. If specified,
+                                              the listed keys will be projected into
+                                              the specified paths, and unlisted keys
+                                              will not be present. If a key is specified
+                                              which is not present in the Secret,
+                                              the volume setup will error unless it
+                                              is marked optional. Paths must be relative
+                                              and may not contain the '..' path or
+                                              start with '..'.
+                                            items:
+                                              description: Maps a string key to a
+                                                path within a volume.
+                                              properties:
+                                                key:
+                                                  description: The key to project.
+                                                  type: string
+                                                mode:
+                                                  description: 'Optional: mode bits
+                                                    to use on this file, must be a
+                                                    value between 0 and 0777. If not
+                                                    specified, the volume defaultMode
+                                                    will be used. This might be in
+                                                    conflict with other options that
+                                                    affect the file mode, like fsGroup,
+                                                    and the result can be other mode
+                                                    bits set.'
+                                                  format: int32
+                                                  type: integer
+                                                path:
+                                                  description: The relative path of
+                                                    the file to map the key to. May
+                                                    not be an absolute path. May not
+                                                    contain the path element '..'.
+                                                    May not start with the string
+                                                    '..'.
+                                                  type: string
+                                              required:
+                                                - key
+                                                - path
+                                              type: object
+                                            type: array
+                                          name:
+                                            description: 'Name of the referent. More
+                                              info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                              TODO: Add other useful fields. apiVersion,
+                                              kind, uid?'
+                                            type: string
+                                          optional:
+                                            description: Specify whether the Secret
+                                              or its key must be defined
+                                            type: boolean
+                                        type: object
+                                      serviceAccountToken:
+                                        description: information about the serviceAccountToken
+                                          data to project
+                                        properties:
+                                          audience:
+                                            description: Audience is the intended
+                                              audience of the token. A recipient of
+                                              a token must identify itself with an
+                                              identifier specified in the audience
+                                              of the token, and otherwise should reject
+                                              the token. The audience defaults to
+                                              the identifier of the apiserver.
+                                            type: string
+                                          expirationSeconds:
+                                            description: ExpirationSeconds is the
+                                              requested duration of validity of the
+                                              service account token. As the token
+                                              approaches expiration, the kubelet volume
+                                              plugin will proactively rotate the service
+                                              account token. The kubelet will start
+                                              trying to rotate the token if the token
+                                              is older than 80 percent of its time
+                                              to live or if the token is older than
+                                              24 hours.Defaults to 1 hour and must
+                                              be at least 10 minutes.
+                                            format: int64
+                                            type: integer
+                                          path:
+                                            description: Path is the path relative
+                                              to the mount point of the file to project
+                                              the token into.
+                                            type: string
+                                        required:
+                                          - path
+                                        type: object
+                                    type: object
+                                  type: array
+                              required:
+                                - sources
+                              type: object
+                            quobyte:
+                              description: Quobyte represents a Quobyte mount on the
+                                host that shares a pod's lifetime
+                              properties:
+                                group:
+                                  description: Group to map volume access to Default
+                                    is no group
+                                  type: string
+                                readOnly:
+                                  description: ReadOnly here will force the Quobyte
+                                    volume to be mounted with read-only permissions.
+                                    Defaults to false.
+                                  type: boolean
+                                registry:
+                                  description: Registry represents a single or multiple
+                                    Quobyte Registry services specified as a string
+                                    as host:port pair (multiple entries are separated
+                                    with commas) which acts as the central registry
+                                    for volumes
+                                  type: string
+                                tenant:
+                                  description: Tenant owning the given Quobyte volume
+                                    in the Backend Used with dynamically provisioned
+                                    Quobyte volumes, value is set by the plugin
+                                  type: string
+                                user:
+                                  description: User to map volume access to Defaults
+                                    to serivceaccount user
+                                  type: string
+                                volume:
+                                  description: Volume is a string that references
+                                    an already created Quobyte volume by name.
+                                  type: string
+                              required:
+                                - registry
+                                - volume
+                              type: object
+                            rbd:
+                              description: 'RBD represents a Rados Block Device mount
+                                on the host that shares a pod''s lifetime. More info:
+                                https://examples.k8s.io/volumes/rbd/README.md'
+                              properties:
+                                fsType:
+                                  description: 'Filesystem type of the volume that
+                                    you want to mount. Tip: Ensure that the filesystem
+                                    type is supported by the host operating system.
+                                    Examples: "ext4", "xfs", "ntfs". Implicitly inferred
+                                    to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd
+                                    TODO: how do we prevent errors in the filesystem
+                                    from compromising the machine'
+                                  type: string
+                                image:
+                                  description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+                                  type: string
+                                keyring:
+                                  description: 'Keyring is the path to key ring for
+                                    RBDUser. Default is /etc/ceph/keyring. More info:
+                                    https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+                                  type: string
+                                monitors:
+                                  description: 'A collection of Ceph monitors. More
+                                    info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+                                  items:
+                                    type: string
+                                  type: array
+                                pool:
+                                  description: 'The rados pool name. Default is rbd.
+                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+                                  type: string
+                                readOnly:
+                                  description: 'ReadOnly here will force the ReadOnly
+                                    setting in VolumeMounts. Defaults to false. More
+                                    info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+                                  type: boolean
+                                secretRef:
+                                  description: 'SecretRef is name of the authentication
+                                    secret for RBDUser. If provided overrides keyring.
+                                    Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+                                  properties:
+                                    name:
+                                      description: 'Name of the referent. More info:
+                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                        TODO: Add other useful fields. apiVersion,
+                                        kind, uid?'
+                                      type: string
+                                  type: object
+                                user:
+                                  description: 'The rados user name. Default is admin.
+                                    More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
+                                  type: string
+                              required:
+                                - image
+                                - monitors
+                              type: object
+                            scaleIO:
+                              description: ScaleIO represents a ScaleIO persistent
+                                volume attached and mounted on Kubernetes nodes.
+                              properties:
+                                fsType:
+                                  description: Filesystem type to mount. Must be a
+                                    filesystem type supported by the host operating
+                                    system. Ex. "ext4", "xfs", "ntfs". Default is
+                                    "xfs".
+                                  type: string
+                                gateway:
+                                  description: The host address of the ScaleIO API
+                                    Gateway.
+                                  type: string
+                                protectionDomain:
+                                  description: The name of the ScaleIO Protection
+                                    Domain for the configured storage.
+                                  type: string
+                                readOnly:
+                                  description: Defaults to false (read/write). ReadOnly
+                                    here will force the ReadOnly setting in VolumeMounts.
+                                  type: boolean
+                                secretRef:
+                                  description: SecretRef references to the secret
+                                    for ScaleIO user and other sensitive information.
+                                    If this is not provided, Login operation will
+                                    fail.
+                                  properties:
+                                    name:
+                                      description: 'Name of the referent. More info:
+                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                        TODO: Add other useful fields. apiVersion,
+                                        kind, uid?'
+                                      type: string
+                                  type: object
+                                sslEnabled:
+                                  description: Flag to enable/disable SSL communication
+                                    with Gateway, default false
+                                  type: boolean
+                                storageMode:
+                                  description: Indicates whether the storage for a
+                                    volume should be ThickProvisioned or ThinProvisioned.
+                                    Default is ThinProvisioned.
+                                  type: string
+                                storagePool:
+                                  description: The ScaleIO Storage Pool associated
+                                    with the protection domain.
+                                  type: string
+                                system:
+                                  description: The name of the storage system as configured
+                                    in ScaleIO.
+                                  type: string
+                                volumeName:
+                                  description: The name of a volume already created
+                                    in the ScaleIO system that is associated with
+                                    this volume source.
+                                  type: string
+                              required:
+                                - gateway
+                                - secretRef
+                                - system
+                              type: object
+                            secret:
+                              description: 'Secret represents a secret that should
+                                populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
+                              properties:
+                                defaultMode:
+                                  description: 'Optional: mode bits to use on created
+                                    files by default. Must be a value between 0 and
+                                    0777. Defaults to 0644. Directories within the
+                                    path are not affected by this setting. This might
+                                    be in conflict with other options that affect
+                                    the file mode, like fsGroup, and the result can
+                                    be other mode bits set.'
+                                  format: int32
+                                  type: integer
+                                items:
+                                  description: If unspecified, each key-value pair
+                                    in the Data field of the referenced Secret will
+                                    be projected into the volume as a file whose name
+                                    is the key and content is the value. If specified,
+                                    the listed keys will be projected into the specified
+                                    paths, and unlisted keys will not be present.
+                                    If a key is specified which is not present in
+                                    the Secret, the volume setup will error unless
+                                    it is marked optional. Paths must be relative
+                                    and may not contain the '..' path or start with
+                                    '..'.
+                                  items:
+                                    description: Maps a string key to a path within
+                                      a volume.
+                                    properties:
+                                      key:
+                                        description: The key to project.
+                                        type: string
+                                      mode:
+                                        description: 'Optional: mode bits to use on
+                                          this file, must be a value between 0 and
+                                          0777. If not specified, the volume defaultMode
+                                          will be used. This might be in conflict
+                                          with other options that affect the file
+                                          mode, like fsGroup, and the result can be
+                                          other mode bits set.'
+                                        format: int32
+                                        type: integer
+                                      path:
+                                        description: The relative path of the file
+                                          to map the key to. May not be an absolute
+                                          path. May not contain the path element '..'.
+                                          May not start with the string '..'.
+                                        type: string
+                                    required:
+                                      - key
+                                      - path
+                                    type: object
+                                  type: array
+                                optional:
+                                  description: Specify whether the Secret or its keys
+                                    must be defined
+                                  type: boolean
+                                secretName:
+                                  description: 'Name of the secret in the pod''s namespace
+                                    to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
+                                  type: string
+                              type: object
+                            storageos:
+                              description: StorageOS represents a StorageOS volume
+                                attached and mounted on Kubernetes nodes.
+                              properties:
+                                fsType:
+                                  description: Filesystem type to mount. Must be a
+                                    filesystem type supported by the host operating
+                                    system. Ex. "ext4", "xfs", "ntfs". Implicitly
+                                    inferred to be "ext4" if unspecified.
+                                  type: string
+                                readOnly:
+                                  description: Defaults to false (read/write). ReadOnly
+                                    here will force the ReadOnly setting in VolumeMounts.
+                                  type: boolean
+                                secretRef:
+                                  description: SecretRef specifies the secret to use
+                                    for obtaining the StorageOS API credentials.  If
+                                    not specified, default values will be attempted.
+                                  properties:
+                                    name:
+                                      description: 'Name of the referent. More info:
+                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                        TODO: Add other useful fields. apiVersion,
+                                        kind, uid?'
+                                      type: string
+                                  type: object
+                                volumeName:
+                                  description: VolumeName is the human-readable name
+                                    of the StorageOS volume.  Volume names are only
+                                    unique within a namespace.
+                                  type: string
+                                volumeNamespace:
+                                  description: VolumeNamespace specifies the scope
+                                    of the volume within StorageOS.  If no namespace
+                                    is specified then the Pod's namespace will be
+                                    used.  This allows the Kubernetes name scoping
+                                    to be mirrored within StorageOS for tighter integration.
+                                    Set VolumeName to any name to override the default
+                                    behaviour. Set to "default" if you are not using
+                                    namespaces within StorageOS. Namespaces that do
+                                    not pre-exist within StorageOS will be created.
+                                  type: string
+                              type: object
+                            vsphereVolume:
+                              description: VsphereVolume represents a vSphere volume
+                                attached and mounted on kubelets host machine
+                              properties:
+                                fsType:
+                                  description: Filesystem type to mount. Must be a
+                                    filesystem type supported by the host operating
+                                    system. Ex. "ext4", "xfs", "ntfs". Implicitly
+                                    inferred to be "ext4" if unspecified.
+                                  type: string
+                                storagePolicyID:
+                                  description: Storage Policy Based Management (SPBM)
+                                    profile ID associated with the StoragePolicyName.
+                                  type: string
+                                storagePolicyName:
+                                  description: Storage Policy Based Management (SPBM)
+                                    profile name.
+                                  type: string
+                                volumePath:
+                                  description: Path that identifies vSphere volume
+                                    vmdk
+                                  type: string
+                              required:
+                                - volumePath
+                              type: object
+                          required:
+                            - name
+                          type: object
+                        type: array
+                      workingDir:
+                        type: string
                     type: object
-                  type: array
-              type: object
-            status:
-              description: BuildStatus defines the observed state of Build
+                type: object
+              type: array
+          type: object
+        status:
+          description: BuildStatus defines the observed state of Build
+          properties:
+            artifacts:
+              items:
+                description: Artifact --
+                properties:
+                  checksum:
+                    type: string
+                  id:
+                    type: string
+                  location:
+                    type: string
+                  target:
+                    type: string
+                required:
+                  - id
+                type: object
+              type: array
+            baseImage:
+              type: string
+            conditions:
+              items:
+                description: BuildCondition describes the state of a resource at a
+                  certain point.
+                properties:
+                  lastTransitionTime:
+                    description: Last time the condition transitioned from one status
+                      to another.
+                    format: date-time
+                    type: string
+                  lastUpdateTime:
+                    description: The last time this condition was updated.
+                    format: date-time
+                    type: string
+                  message:
+                    description: A human readable message indicating details about
+                      the transition.
+                    type: string
+                  reason:
+                    description: The reason for the condition's last transition.
+                    type: string
+                  status:
+                    description: Status of the condition, one of True, False, Unknown.
+                    type: string
+                  type:
+                    description: Type of integration condition.
+                    type: string
+                required:
+                  - status
+                  - type
+                type: object
+              type: array
+            digest:
+              type: string
+            duration:
+              description: Change to Duration / ISO 8601 when CRD uses OpenAPI spec
+                v3 https://github.com/OAI/OpenAPI-Specification/issues/845
+              type: string
+            error:
+              type: string
+            failure:
+              description: Failure --
               properties:
-                artifacts:
-                  items:
-                    description: Artifact --
-                    properties:
-                      checksum:
-                        type: string
-                      id:
-                        type: string
-                      location:
-                        type: string
-                      target:
-                        type: string
-                    required:
-                      - id
-                    type: object
-                  type: array
-                baseImage:
+                reason:
                   type: string
-                conditions:
-                  items:
-                    description: BuildCondition describes the state of a resource at
-                      a certain point.
-                    properties:
-                      lastTransitionTime:
-                        description: Last time the condition transitioned from one status
-                          to another.
-                        format: date-time
-                        type: string
-                      lastUpdateTime:
-                        description: The last time this condition was updated.
-                        format: date-time
-                        type: string
-                      message:
-                        description: A human readable message indicating details about
-                          the transition.
-                        type: string
-                      reason:
-                        description: The reason for the condition's last transition.
-                        type: string
-                      status:
-                        description: Status of the condition, one of True, False, Unknown.
-                        type: string
-                      type:
-                        description: Type of integration condition.
-                        type: string
-                    required:
-                      - status
-                      - type
-                    type: object
-                  type: array
-                digest:
-                  type: string
-                duration:
-                  description: Change to Duration / ISO 8601 when CRD uses OpenAPI spec
-                    v3 https://github.com/OAI/OpenAPI-Specification/issues/845
-                  type: string
-                error:
-                  type: string
-                failure:
-                  description: Failure --
+                recovery:
+                  description: FailureRecovery --
                   properties:
-                    reason:
-                      type: string
-                    recovery:
-                      description: FailureRecovery --
-                      properties:
-                        attempt:
-                          type: integer
-                        attemptMax:
-                          type: integer
-                        attemptTime:
-                          format: date-time
-                          type: string
-                      required:
-                        - attempt
-                        - attemptMax
-                      type: object
-                    time:
+                    attempt:
+                      type: integer
+                    attemptMax:
+                      type: integer
+                    attemptTime:
                       format: date-time
                       type: string
                   required:
-                    - reason
-                    - recovery
-                    - time
+                    - attempt
+                    - attemptMax
                   type: object
-                image:
-                  type: string
-                phase:
-                  description: BuildPhase --
-                  type: string
-                platform:
-                  type: string
-                startedAt:
+                time:
                   format: date-time
-                  nullable: true
                   type: string
+              required:
+                - reason
+                - recovery
+                - time
               type: object
+            image:
+              type: string
+            phase:
+              description: BuildPhase --
+              type: string
+            platform:
+              type: string
+            startedAt:
+              format: date-time
+              nullable: true
+              type: string
           type: object
+      type: object
+  version: v1
+  versions:
+    - name: v1
       served: true
       storage: true
-      subresources:
-        status: {}
diff --git a/deploy/crd-camel-catalog.yaml b/deploy/crd-camel-catalog.yaml
index a5b4661..98b1830 100644
--- a/deploy/crd-camel-catalog.yaml
+++ b/deploy/crd-camel-catalog.yaml
@@ -16,13 +16,22 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: apiextensions.k8s.io/v1
+apiVersion: apiextensions.k8s.io/v1beta1
 kind: CustomResourceDefinition
 metadata:
   name: camelcatalogs.camel.apache.org
   labels:
     app: "camel-k"
 spec:
+  additionalPrinterColumns:
+    - JSONPath: .spec.runtime.version
+      description: The Camel K Runtime version
+      name: Runtime Version
+      type: string
+    - JSONPath: .spec.runtime.provider
+      description: The Camel K Runtime provider
+      name: Runtime Provider
+      type: string
   group: camel.apache.org
   names:
     kind: CamelCatalog
@@ -32,126 +41,154 @@
       - cc
     singular: camelcatalog
   scope: Namespaced
-  versions:
-    - additionalPrinterColumns:
-        - description: The Camel K Runtime version
-          jsonPath: .spec.runtime.version
-          name: Runtime Version
+  subresources:
+    status: {}
+  validation:
+    openAPIV3Schema:
+      description: CamelCatalog is the Schema for the camelcatalogs API
+      properties:
+        apiVersion:
+          description: 'APIVersion defines the versioned schema of this representation
+            of an object. Servers should convert recognized schemas to the latest
+            internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
           type: string
-        - description: The Camel K Runtime provider
-          jsonPath: .spec.runtime.provider
-          name: Runtime Provider
+        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
-      name: v1
-      schema:
-        openAPIV3Schema:
-          description: CamelCatalog is the Schema for the camelcatalogs API
+        metadata:
+          type: object
+        spec:
+          description: CamelCatalogSpec defines the desired state of CamelCatalog
           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:
+            artifacts:
+              additionalProperties:
+                description: CamelArtifact --
+                properties:
+                  artifactId:
+                    type: string
+                  dataformats:
+                    items:
+                      type: string
+                    type: array
+                  dependencies:
+                    items:
+                      description: CamelArtifactDependency represent a maven's dependency
+                      properties:
+                        artifactId:
+                          type: string
+                        exclusions:
+                          items:
+                            description: CamelArtifactExclusion --
+                            properties:
+                              artifactId:
+                                type: string
+                              groupId:
+                                type: string
+                            required:
+                              - artifactId
+                              - groupId
+                            type: object
+                          type: array
+                        groupId:
+                          type: string
+                        version:
+                          type: string
+                      required:
+                        - artifactId
+                        - groupId
+                      type: object
+                    type: array
+                  exclusions:
+                    items:
+                      description: CamelArtifactExclusion --
+                      properties:
+                        artifactId:
+                          type: string
+                        groupId:
+                          type: string
+                      required:
+                        - artifactId
+                        - groupId
+                      type: object
+                    type: array
+                  groupId:
+                    type: string
+                  javaTypes:
+                    items:
+                      type: string
+                    type: array
+                  languages:
+                    items:
+                      type: string
+                    type: array
+                  schemes:
+                    items:
+                      description: CamelScheme --
+                      properties:
+                        http:
+                          type: boolean
+                        id:
+                          type: string
+                        passive:
+                          type: boolean
+                      required:
+                        - http
+                        - id
+                        - passive
+                      type: object
+                    type: array
+                  version:
+                    type: string
+                required:
+                  - artifactId
+                  - groupId
+                type: object
               type: object
-            spec:
-              description: CamelCatalogSpec defines the desired state of CamelCatalog
+            loaders:
+              additionalProperties:
+                description: CamelLoader --
+                properties:
+                  artifactId:
+                    type: string
+                  dependencies:
+                    items:
+                      description: MavenArtifact --
+                      properties:
+                        artifactId:
+                          type: string
+                        groupId:
+                          type: string
+                        version:
+                          type: string
+                      required:
+                        - artifactId
+                        - groupId
+                      type: object
+                    type: array
+                  groupId:
+                    type: string
+                  languages:
+                    items:
+                      type: string
+                    type: array
+                  version:
+                    type: string
+                required:
+                  - artifactId
+                  - groupId
+                type: object
+              type: object
+            runtime:
+              description: RuntimeSpec --
               properties:
-                artifacts:
+                applicationClass:
+                  type: string
+                capabilities:
                   additionalProperties:
-                    description: CamelArtifact --
+                    description: Capability --
                     properties:
-                      artifactId:
-                        type: string
-                      dataformats:
-                        items:
-                          type: string
-                        type: array
-                      dependencies:
-                        items:
-                          description: CamelArtifactDependency represent a maven's dependency
-                          properties:
-                            artifactId:
-                              type: string
-                            exclusions:
-                              items:
-                                description: CamelArtifactExclusion --
-                                properties:
-                                  artifactId:
-                                    type: string
-                                  groupId:
-                                    type: string
-                                required:
-                                  - artifactId
-                                  - groupId
-                                type: object
-                              type: array
-                            groupId:
-                              type: string
-                            version:
-                              type: string
-                          required:
-                            - artifactId
-                            - groupId
-                          type: object
-                        type: array
-                      exclusions:
-                        items:
-                          description: CamelArtifactExclusion --
-                          properties:
-                            artifactId:
-                              type: string
-                            groupId:
-                              type: string
-                          required:
-                            - artifactId
-                            - groupId
-                          type: object
-                        type: array
-                      groupId:
-                        type: string
-                      javaTypes:
-                        items:
-                          type: string
-                        type: array
-                      languages:
-                        items:
-                          type: string
-                        type: array
-                      schemes:
-                        items:
-                          description: CamelScheme --
-                          properties:
-                            http:
-                              type: boolean
-                            id:
-                              type: string
-                            passive:
-                              type: boolean
-                          required:
-                            - http
-                            - id
-                            - passive
-                          type: object
-                        type: array
-                      version:
-                        type: string
-                    required:
-                      - artifactId
-                      - groupId
-                    type: object
-                  type: object
-                loaders:
-                  additionalProperties:
-                    description: CamelLoader --
-                    properties:
-                      artifactId:
-                        type: string
                       dependencies:
                         items:
                           description: MavenArtifact --
@@ -167,91 +204,55 @@
                             - groupId
                           type: object
                         type: array
+                      metadata:
+                        additionalProperties:
+                          type: string
+                        type: object
+                    required:
+                      - dependencies
+                    type: object
+                  type: object
+                dependencies:
+                  items:
+                    description: MavenArtifact --
+                    properties:
+                      artifactId:
+                        type: string
                       groupId:
                         type: string
-                      languages:
-                        items:
-                          type: string
-                        type: array
                       version:
                         type: string
                     required:
                       - artifactId
                       - groupId
                     type: object
+                  type: array
+                metadata:
+                  additionalProperties:
+                    type: string
                   type: object
-                runtime:
-                  description: RuntimeSpec --
-                  properties:
-                    applicationClass:
-                      type: string
-                    capabilities:
-                      additionalProperties:
-                        description: Capability --
-                        properties:
-                          dependencies:
-                            items:
-                              description: MavenArtifact --
-                              properties:
-                                artifactId:
-                                  type: string
-                                groupId:
-                                  type: string
-                                version:
-                                  type: string
-                              required:
-                                - artifactId
-                                - groupId
-                              type: object
-                            type: array
-                          metadata:
-                            additionalProperties:
-                              type: string
-                            type: object
-                        required:
-                          - dependencies
-                        type: object
-                      type: object
-                    dependencies:
-                      items:
-                        description: MavenArtifact --
-                        properties:
-                          artifactId:
-                            type: string
-                          groupId:
-                            type: string
-                          version:
-                            type: string
-                        required:
-                          - artifactId
-                          - groupId
-                        type: object
-                      type: array
-                    metadata:
-                      additionalProperties:
-                        type: string
-                      type: object
-                    provider:
-                      description: RuntimeProvider --
-                      type: string
-                    version:
-                      type: string
-                  required:
-                    - applicationClass
-                    - dependencies
-                    - provider
-                    - version
-                  type: object
+                provider:
+                  description: RuntimeProvider --
+                  type: string
+                version:
+                  type: string
               required:
-                - artifacts
-                - loaders
-                - runtime
+                - applicationClass
+                - dependencies
+                - provider
+                - version
               type: object
-            status:
-              description: CamelCatalogStatus defines the observed state of CamelCatalog
-              type: object
+          required:
+            - artifacts
+            - loaders
+            - runtime
           type: object
+        status:
+          description: CamelCatalogStatus defines the observed state of CamelCatalog
+          type: object
+      type: object
+  version: v1
+  versions:
+    - name: v1
       served: true
       storage: true
-      subresources:
-        status: {}
diff --git a/deploy/crd-integration-kit.yaml b/deploy/crd-integration-kit.yaml
index 1258761..0f87257 100644
--- a/deploy/crd-integration-kit.yaml
+++ b/deploy/crd-integration-kit.yaml
@@ -15,13 +15,26 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: apiextensions.k8s.io/v1
+apiVersion: apiextensions.k8s.io/v1beta1
 kind: CustomResourceDefinition
 metadata:
   name: integrationkits.camel.apache.org
   labels:
     app: "camel-k"
 spec:
+  additionalPrinterColumns:
+    - JSONPath: .status.phase
+      description: The integration kit phase
+      name: Phase
+      type: string
+    - JSONPath: .metadata.labels.camel\.apache\.org\/kit\.type
+      description: The integration kit type
+      name: Type
+      type: string
+    - JSONPath: .status.image
+      description: The integration kit image
+      name: Image
+      type: string
   group: camel.apache.org
   names:
     kind: IntegrationKit
@@ -31,178 +44,165 @@
       - ik
     singular: integrationkit
   scope: Namespaced
-  versions:
-    - additionalPrinterColumns:
-        - description: The integration kit phase
-          jsonPath: .status.phase
-          name: Phase
+  subresources:
+    status: {}
+  validation:
+    openAPIV3Schema:
+      description: IntegrationKit is the Schema for the integrationkits API
+      properties:
+        apiVersion:
+          description: 'APIVersion defines the versioned schema of this representation
+            of an object. Servers should convert recognized schemas to the latest
+            internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
           type: string
-        - description: The integration kit type
-          jsonPath: .metadata.labels.camel\.apache\.org\/kit\.type
-          name: Type
+        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
-        - description: The integration kit image
-          jsonPath: .status.image
-          name: Image
-          type: string
-      name: v1
-      schema:
-        openAPIV3Schema:
-          description: IntegrationKit is the Schema for the integrationkits API
+        metadata:
+          type: object
+        spec:
+          description: IntegrationKitSpec defines the desired state of IntegrationKit
           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: IntegrationKitSpec defines the desired state of IntegrationKit
-              properties:
-                configuration:
-                  items:
-                    description: ConfigurationSpec --
-                    properties:
-                      type:
-                        type: string
-                      value:
-                        type: string
-                    required:
-                      - type
-                      - value
-                    type: object
-                  type: array
-                dependencies:
-                  items:
+            configuration:
+              items:
+                description: ConfigurationSpec --
+                properties:
+                  type:
                     type: string
-                  type: array
-                image:
-                  type: string
-                profile:
-                  description: TraitProfile represents lists of traits that are enabled
-                    for the specific installation/integration
-                  type: string
-                repositories:
-                  items:
+                  value:
                     type: string
-                  type: array
-                traits:
-                  additionalProperties:
-                    description: A TraitSpec contains the configuration of a trait
-                    properties:
-                      configuration:
-                        additionalProperties:
-                          type: string
-                        type: object
-                    type: object
-                  type: object
-              type: object
-            status:
-              description: IntegrationKitStatus defines the observed state of IntegrationKit
-              properties:
-                artifacts:
-                  items:
-                    description: Artifact --
-                    properties:
-                      checksum:
-                        type: string
-                      id:
-                        type: string
-                      location:
-                        type: string
-                      target:
-                        type: string
-                    required:
-                      - id
-                    type: object
-                  type: array
-                baseImage:
-                  type: string
-                conditions:
-                  items:
-                    description: IntegrationKitCondition describes the state of a resource
-                      at a certain point.
-                    properties:
-                      lastTransitionTime:
-                        description: Last time the condition transitioned from one status
-                          to another.
-                        format: date-time
-                        type: string
-                      lastUpdateTime:
-                        description: The last time this condition was updated.
-                        format: date-time
-                        type: string
-                      message:
-                        description: A human readable message indicating details about
-                          the transition.
-                        type: string
-                      reason:
-                        description: The reason for the condition's last transition.
-                        type: string
-                      status:
-                        description: Status of the condition, one of True, False, Unknown.
-                        type: string
-                      type:
-                        description: Type of integration condition.
-                        type: string
-                    required:
-                      - status
-                      - type
-                    type: object
-                  type: array
-                digest:
-                  type: string
-                failure:
-                  description: Failure --
-                  properties:
-                    reason:
+                required:
+                  - type
+                  - value
+                type: object
+              type: array
+            dependencies:
+              items:
+                type: string
+              type: array
+            image:
+              type: string
+            profile:
+              description: TraitProfile represents lists of traits that are enabled
+                for the specific installation/integration
+              type: string
+            repositories:
+              items:
+                type: string
+              type: array
+            traits:
+              additionalProperties:
+                description: A TraitSpec contains the configuration of a trait
+                properties:
+                  configuration:
+                    additionalProperties:
                       type: string
-                    recovery:
-                      description: FailureRecovery --
-                      properties:
-                        attempt:
-                          type: integer
-                        attemptMax:
-                          type: integer
-                        attemptTime:
-                          format: date-time
-                          type: string
-                      required:
-                        - attempt
-                        - attemptMax
-                        - attemptTime
-                      type: object
-                    time:
+                    type: object
+                type: object
+              type: object
+          type: object
+        status:
+          description: IntegrationKitStatus defines the observed state of IntegrationKit
+          properties:
+            artifacts:
+              items:
+                description: Artifact --
+                properties:
+                  checksum:
+                    type: string
+                  id:
+                    type: string
+                  location:
+                    type: string
+                  target:
+                    type: string
+                required:
+                  - id
+                type: object
+              type: array
+            baseImage:
+              type: string
+            conditions:
+              items:
+                description: IntegrationKitCondition describes the state of a resource
+                  at a certain point.
+                properties:
+                  lastTransitionTime:
+                    description: Last time the condition transitioned from one status
+                      to another.
+                    format: date-time
+                    type: string
+                  lastUpdateTime:
+                    description: The last time this condition was updated.
+                    format: date-time
+                    type: string
+                  message:
+                    description: A human readable message indicating details about
+                      the transition.
+                    type: string
+                  reason:
+                    description: The reason for the condition's last transition.
+                    type: string
+                  status:
+                    description: Status of the condition, one of True, False, Unknown.
+                    type: string
+                  type:
+                    description: Type of integration condition.
+                    type: string
+                required:
+                  - status
+                  - type
+                type: object
+              type: array
+            digest:
+              type: string
+            failure:
+              description: Failure --
+              properties:
+                reason:
+                  type: string
+                recovery:
+                  description: FailureRecovery --
+                  properties:
+                    attempt:
+                      type: integer
+                    attemptMax:
+                      type: integer
+                    attemptTime:
                       format: date-time
                       type: string
                   required:
-                    - reason
-                    - recovery
-                    - time
+                    - attempt
+                    - attemptMax
                   type: object
-                image:
+                time:
+                  format: date-time
                   type: string
-                phase:
-                  description: IntegrationKitPhase --
-                  type: string
-                platform:
-                  type: string
-                runtimeProvider:
-                  description: RuntimeProvider --
-                  type: string
-                runtimeVersion:
-                  type: string
-                version:
-                  type: string
+              required:
+                - reason
+                - recovery
+                - time
               type: object
+            image:
+              type: string
+            phase:
+              description: IntegrationKitPhase --
+              type: string
+            platform:
+              type: string
+            runtimeProvider:
+              description: RuntimeProvider --
+              type: string
+            runtimeVersion:
+              type: string
+            version:
+              type: string
           type: object
+      type: object
+  version: v1
+  versions:
+    - name: v1
       served: true
       storage: true
-      subresources:
-        status: {}
diff --git a/deploy/crd-integration-platform.yaml b/deploy/crd-integration-platform.yaml
index f53043c..34fd0b8 100644
--- a/deploy/crd-integration-platform.yaml
+++ b/deploy/crd-integration-platform.yaml
@@ -15,13 +15,18 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: apiextensions.k8s.io/v1
+apiVersion: apiextensions.k8s.io/v1beta1
 kind: CustomResourceDefinition
 metadata:
   name: integrationplatforms.camel.apache.org
   labels:
     app: "camel-k"
 spec:
+  additionalPrinterColumns:
+    - JSONPath: .status.phase
+      description: The integration platform phase
+      name: Phase
+      type: string
   group: camel.apache.org
   names:
     kind: IntegrationPlatform
@@ -31,347 +36,339 @@
       - ip
     singular: integrationplatform
   scope: Namespaced
-  versions:
-    - additionalPrinterColumns:
-        - description: The integration platform phase
-          jsonPath: .status.phase
-          name: Phase
+  subresources:
+    status: {}
+  validation:
+    openAPIV3Schema:
+      description: IntegrationPlatform is the Schema for the integrationplatforms
+        API
+      properties:
+        apiVersion:
+          description: 'APIVersion defines the versioned schema of this representation
+            of an object. Servers should convert recognized schemas to the latest
+            internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
           type: string
-      name: v1
-      schema:
-        openAPIV3Schema:
-          description: IntegrationPlatform is the Schema for the integrationplatforms
-            API
+        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: IntegrationPlatformSpec defines the desired state of IntegrationPlatform
           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: IntegrationPlatformSpec defines the desired state of IntegrationPlatform
+            build:
+              description: IntegrationPlatformBuildSpec contains platform related
+                build information
               properties:
-                build:
-                  description: IntegrationPlatformBuildSpec contains platform related
-                    build information
+                baseImage:
+                  type: string
+                buildStrategy:
+                  description: IntegrationPlatformBuildStrategy enumerates all implemented
+                    build strategies
+                  type: string
+                httpProxySecret:
+                  type: string
+                kanikoBuildCache:
+                  type: boolean
+                maven:
+                  description: MavenSpec --
                   properties:
-                    baseImage:
+                    localRepository:
                       type: string
-                    buildStrategy:
-                      description: IntegrationPlatformBuildStrategy enumerates all implemented
-                        build strategies
-                      type: string
-                    httpProxySecret:
-                      type: string
-                    kanikoBuildCache:
-                      type: boolean
-                    maven:
-                      description: MavenSpec --
+                    settings:
+                      description: ValueSource --
                       properties:
-                        localRepository:
-                          type: string
-                        settings:
-                          description: ValueSource --
+                        configMapKeyRef:
+                          description: Selects a key of a ConfigMap.
                           properties:
-                            configMapKeyRef:
-                              description: Selects a key of a ConfigMap.
-                              properties:
-                                key:
-                                  description: The key to select.
-                                  type: string
-                                name:
-                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                  type: string
-                                optional:
-                                  description: Specify whether the ConfigMap or its
-                                    key must be defined
-                                  type: boolean
-                              required:
-                                - key
-                              type: object
-                            secretKeyRef:
-                              description: 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:
-                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                  type: string
-                                optional:
-                                  description: Specify whether the Secret or its key
-                                    must be defined
-                                  type: boolean
-                              required:
-                                - key
-                              type: object
+                            key:
+                              description: The key to select.
+                              type: string
+                            name:
+                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                TODO: Add other useful fields. apiVersion, kind, uid?'
+                              type: string
+                            optional:
+                              description: Specify whether the ConfigMap or its key
+                                must be defined
+                              type: boolean
+                          required:
+                            - key
                           type: object
-                        timeout:
-                          type: string
+                        secretKeyRef:
+                          description: 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:
+                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                TODO: Add other useful fields. apiVersion, kind, uid?'
+                              type: string
+                            optional:
+                              description: Specify whether the Secret or its key must
+                                be defined
+                              type: boolean
+                          required:
+                            - key
+                          type: object
                       type: object
-                    persistentVolumeClaim:
-                      type: string
-                    properties:
-                      additionalProperties:
-                        type: string
-                      type: object
-                    publishStrategy:
-                      description: IntegrationPlatformBuildPublishStrategy enumerates
-                        all implemented publish strategies
-                      type: string
-                    registry:
-                      description: IntegrationPlatformRegistrySpec --
-                      properties:
-                        address:
-                          type: string
-                        ca:
-                          type: string
-                        insecure:
-                          type: boolean
-                        organization:
-                          type: string
-                        secret:
-                          type: string
-                      type: object
-                    runtimeProvider:
-                      description: RuntimeProvider --
-                      type: string
-                    runtimeVersion:
-                      type: string
                     timeout:
                       type: string
                   type: object
-                cluster:
-                  description: IntegrationPlatformCluster is the kind of orchestration
-                    cluster the platform is installed into
+                persistentVolumeClaim:
                   type: string
-                configuration:
-                  items:
-                    description: ConfigurationSpec --
-                    properties:
-                      type:
-                        type: string
-                      value:
-                        type: string
-                    required:
-                      - type
-                      - value
-                    type: object
-                  type: array
-                profile:
-                  description: TraitProfile represents lists of traits that are enabled
-                    for the specific installation/integration
-                  type: string
-                resources:
-                  description: IntegrationPlatformResourcesSpec contains platform related
-                    resources
-                  properties:
-                    kits:
-                      items:
-                        type: string
-                      type: array
-                  type: object
-                traits:
+                properties:
                   additionalProperties:
-                    description: A TraitSpec contains the configuration of a trait
-                    properties:
-                      configuration:
-                        additionalProperties:
-                          type: string
-                        type: object
-                    type: object
+                    type: string
                   type: object
-              type: object
-            status:
-              description: IntegrationPlatformStatus defines the observed state of IntegrationPlatform
-              properties:
-                build:
-                  description: IntegrationPlatformBuildSpec contains platform related
-                    build information
+                publishStrategy:
+                  description: IntegrationPlatformBuildPublishStrategy enumerates
+                    all implemented publish strategies
+                  type: string
+                registry:
+                  description: IntegrationPlatformRegistrySpec --
                   properties:
-                    baseImage:
+                    address:
                       type: string
-                    buildStrategy:
-                      description: IntegrationPlatformBuildStrategy enumerates all implemented
-                        build strategies
+                    ca:
                       type: string
-                    httpProxySecret:
-                      type: string
-                    kanikoBuildCache:
+                    insecure:
                       type: boolean
-                    maven:
-                      description: MavenSpec --
-                      properties:
-                        localRepository:
-                          type: string
-                        settings:
-                          description: ValueSource --
-                          properties:
-                            configMapKeyRef:
-                              description: Selects a key of a ConfigMap.
-                              properties:
-                                key:
-                                  description: The key to select.
-                                  type: string
-                                name:
-                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                  type: string
-                                optional:
-                                  description: Specify whether the ConfigMap or its
-                                    key must be defined
-                                  type: boolean
-                              required:
-                                - key
-                              type: object
-                            secretKeyRef:
-                              description: 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:
-                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                  type: string
-                                optional:
-                                  description: Specify whether the Secret or its key
-                                    must be defined
-                                  type: boolean
-                              required:
-                                - key
-                              type: object
-                          type: object
-                        timeout:
-                          type: string
-                      type: object
-                    persistentVolumeClaim:
+                    organization:
                       type: string
-                    properties:
-                      additionalProperties:
-                        type: string
-                      type: object
-                    publishStrategy:
-                      description: IntegrationPlatformBuildPublishStrategy enumerates
-                        all implemented publish strategies
-                      type: string
-                    registry:
-                      description: IntegrationPlatformRegistrySpec --
-                      properties:
-                        address:
-                          type: string
-                        ca:
-                          type: string
-                        insecure:
-                          type: boolean
-                        organization:
-                          type: string
-                        secret:
-                          type: string
-                      type: object
-                    runtimeProvider:
-                      description: RuntimeProvider --
-                      type: string
-                    runtimeVersion:
-                      type: string
-                    timeout:
+                    secret:
                       type: string
                   type: object
-                cluster:
-                  description: IntegrationPlatformCluster is the kind of orchestration
-                    cluster the platform is installed into
+                runtimeProvider:
+                  description: RuntimeProvider --
                   type: string
-                conditions:
+                runtimeVersion:
+                  type: string
+                timeout:
+                  type: string
+              type: object
+            cluster:
+              description: IntegrationPlatformCluster is the kind of orchestration
+                cluster the platform is installed into
+              type: string
+            configuration:
+              items:
+                description: ConfigurationSpec --
+                properties:
+                  type:
+                    type: string
+                  value:
+                    type: string
+                required:
+                  - type
+                  - value
+                type: object
+              type: array
+            profile:
+              description: TraitProfile represents lists of traits that are enabled
+                for the specific installation/integration
+              type: string
+            resources:
+              description: IntegrationPlatformResourcesSpec contains platform related
+                resources
+              properties:
+                kits:
                   items:
-                    description: IntegrationPlatformCondition describes the state of
-                      a resource at a certain point.
-                    properties:
-                      lastTransitionTime:
-                        description: Last time the condition transitioned from one status
-                          to another.
-                        format: date-time
-                        type: string
-                      lastUpdateTime:
-                        description: The last time this condition was updated.
-                        format: date-time
-                        type: string
-                      message:
-                        description: A human readable message indicating details about
-                          the transition.
-                        type: string
-                      reason:
-                        description: The reason for the condition's last transition.
-                        type: string
-                      status:
-                        description: Status of the condition, one of True, False, Unknown.
-                        type: string
-                      type:
-                        description: Type of integration condition.
-                        type: string
-                    required:
-                      - status
-                      - type
-                    type: object
+                    type: string
                   type: array
-                configuration:
-                  items:
-                    description: ConfigurationSpec --
-                    properties:
-                      type:
-                        type: string
-                      value:
-                        type: string
-                    required:
-                      - type
-                      - value
+              type: object
+            traits:
+              additionalProperties:
+                description: A TraitSpec contains the configuration of a trait
+                properties:
+                  configuration:
+                    additionalProperties:
+                      type: string
                     type: object
-                  type: array
-                phase:
-                  description: IntegrationPlatformPhase --
-                  type: string
-                profile:
-                  description: TraitProfile represents lists of traits that are enabled
-                    for the specific installation/integration
-                  type: string
-                resources:
-                  description: IntegrationPlatformResourcesSpec contains platform related
-                    resources
-                  properties:
-                    kits:
-                      items:
-                        type: string
-                      type: array
-                  type: object
-                traits:
-                  additionalProperties:
-                    description: A TraitSpec contains the configuration of a trait
-                    properties:
-                      configuration:
-                        additionalProperties:
-                          type: string
-                        type: object
-                    type: object
-                  type: object
-                version:
-                  type: string
+                type: object
               type: object
           type: object
+        status:
+          description: IntegrationPlatformStatus defines the observed state of IntegrationPlatform
+          properties:
+            build:
+              description: IntegrationPlatformBuildSpec contains platform related
+                build information
+              properties:
+                baseImage:
+                  type: string
+                buildStrategy:
+                  description: IntegrationPlatformBuildStrategy enumerates all implemented
+                    build strategies
+                  type: string
+                httpProxySecret:
+                  type: string
+                kanikoBuildCache:
+                  type: boolean
+                maven:
+                  description: MavenSpec --
+                  properties:
+                    localRepository:
+                      type: string
+                    settings:
+                      description: ValueSource --
+                      properties:
+                        configMapKeyRef:
+                          description: Selects a key of a ConfigMap.
+                          properties:
+                            key:
+                              description: The key to select.
+                              type: string
+                            name:
+                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                TODO: Add other useful fields. apiVersion, kind, uid?'
+                              type: string
+                            optional:
+                              description: Specify whether the ConfigMap or its key
+                                must be defined
+                              type: boolean
+                          required:
+                            - key
+                          type: object
+                        secretKeyRef:
+                          description: 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:
+                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
+                                TODO: Add other useful fields. apiVersion, kind, uid?'
+                              type: string
+                            optional:
+                              description: Specify whether the Secret or its key must
+                                be defined
+                              type: boolean
+                          required:
+                            - key
+                          type: object
+                      type: object
+                    timeout:
+                      type: string
+                  type: object
+                persistentVolumeClaim:
+                  type: string
+                properties:
+                  additionalProperties:
+                    type: string
+                  type: object
+                publishStrategy:
+                  description: IntegrationPlatformBuildPublishStrategy enumerates
+                    all implemented publish strategies
+                  type: string
+                registry:
+                  description: IntegrationPlatformRegistrySpec --
+                  properties:
+                    address:
+                      type: string
+                    ca:
+                      type: string
+                    insecure:
+                      type: boolean
+                    organization:
+                      type: string
+                    secret:
+                      type: string
+                  type: object
+                runtimeProvider:
+                  description: RuntimeProvider --
+                  type: string
+                runtimeVersion:
+                  type: string
+                timeout:
+                  type: string
+              type: object
+            cluster:
+              description: IntegrationPlatformCluster is the kind of orchestration
+                cluster the platform is installed into
+              type: string
+            conditions:
+              items:
+                description: IntegrationPlatformCondition describes the state of a
+                  resource at a certain point.
+                properties:
+                  lastTransitionTime:
+                    description: Last time the condition transitioned from one status
+                      to another.
+                    format: date-time
+                    type: string
+                  lastUpdateTime:
+                    description: The last time this condition was updated.
+                    format: date-time
+                    type: string
+                  message:
+                    description: A human readable message indicating details about
+                      the transition.
+                    type: string
+                  reason:
+                    description: The reason for the condition's last transition.
+                    type: string
+                  status:
+                    description: Status of the condition, one of True, False, Unknown.
+                    type: string
+                  type:
+                    description: Type of integration condition.
+                    type: string
+                required:
+                  - status
+                  - type
+                type: object
+              type: array
+            configuration:
+              items:
+                description: ConfigurationSpec --
+                properties:
+                  type:
+                    type: string
+                  value:
+                    type: string
+                required:
+                  - type
+                  - value
+                type: object
+              type: array
+            phase:
+              description: IntegrationPlatformPhase --
+              type: string
+            profile:
+              description: TraitProfile represents lists of traits that are enabled
+                for the specific installation/integration
+              type: string
+            resources:
+              description: IntegrationPlatformResourcesSpec contains platform related
+                resources
+              properties:
+                kits:
+                  items:
+                    type: string
+                  type: array
+              type: object
+            traits:
+              additionalProperties:
+                description: A TraitSpec contains the configuration of a trait
+                properties:
+                  configuration:
+                    additionalProperties:
+                      type: string
+                    type: object
+                type: object
+              type: object
+            version:
+              type: string
+          type: object
+      type: object
+  version: v1
+  versions:
+    - name: v1
       served: true
       storage: true
-      subresources:
-        status: {}
diff --git a/deploy/crd-integration.yaml b/deploy/crd-integration.yaml
index 30d8dce..18d0e57 100644
--- a/deploy/crd-integration.yaml
+++ b/deploy/crd-integration.yaml
@@ -15,13 +15,26 @@
 # limitations under the License.
 # ---------------------------------------------------------------------------
 
-apiVersion: apiextensions.k8s.io/v1
+apiVersion: apiextensions.k8s.io/v1beta1
 kind: CustomResourceDefinition
 metadata:
   name: integrations.camel.apache.org
   labels:
     app: "camel-k"
 spec:
+  additionalPrinterColumns:
+    - JSONPath: .status.phase
+      description: The integration phase
+      name: Phase
+      type: string
+    - JSONPath: .status.kit
+      description: The integration kit
+      name: Kit
+      type: string
+    - JSONPath: .status.replicas
+      description: The number of pods
+      name: Replicas
+      type: integer
   group: camel.apache.org
   names:
     kind: Integration
@@ -31,304 +44,291 @@
       - it
     singular: integration
   scope: Namespaced
-  versions:
-    - additionalPrinterColumns:
-        - description: The integration phase
-          jsonPath: .status.phase
-          name: Phase
+  subresources:
+    scale:
+      specReplicasPath: .spec.replicas
+      statusReplicasPath: .status.replicas
+    status: {}
+  validation:
+    openAPIV3Schema:
+      description: Integration is the Schema for the integrations API
+      properties:
+        apiVersion:
+          description: 'APIVersion defines the versioned schema of this representation
+            of an object. Servers should convert recognized schemas to the latest
+            internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
           type: string
-        - description: The integration kit
-          jsonPath: .status.kit
-          name: Kit
+        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
-        - description: The number of pods
-          jsonPath: .status.replicas
-          name: Replicas
-          type: integer
-      name: v1
-      schema:
-        openAPIV3Schema:
-          description: Integration is the Schema for the integrations API
+        metadata:
+          type: object
+        spec:
+          description: IntegrationSpec defines the desired state of Integration
           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'
+            configuration:
+              items:
+                description: ConfigurationSpec --
+                properties:
+                  type:
+                    type: string
+                  value:
+                    type: string
+                required:
+                  - type
+                  - value
+                type: object
+              type: array
+            dependencies:
+              items:
+                type: string
+              type: array
+            flows:
+              items:
+                description: Flow is an unstructured object representing a Camel Flow
+                  in YAML/JSON DSL
+                type: string
+              type: array
+            kit:
               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'
+            profile:
+              description: TraitProfile represents lists of traits that are enabled
+                for the specific installation/integration
               type: string
-            metadata:
-              type: object
-            spec:
-              description: IntegrationSpec defines the desired state of Integration
-              properties:
-                configuration:
-                  items:
-                    description: ConfigurationSpec --
-                    properties:
-                      type:
-                        type: string
-                      value:
-                        type: string
-                    required:
-                      - type
-                      - value
-                    type: object
-                  type: array
-                dependencies:
-                  items:
+            replicas:
+              format: int32
+              type: integer
+            repositories:
+              items:
+                type: string
+              type: array
+            resources:
+              items:
+                description: ResourceSpec --
+                properties:
+                  compression:
+                    type: boolean
+                  content:
                     type: string
-                  type: array
-                flows:
-                  items:
-                    description: Flow is an unstructured object representing a Camel
-                      Flow in YAML/JSON DSL
+                  contentKey:
                     type: string
-                  type: array
-                kit:
-                  type: string
-                profile:
-                  description: TraitProfile represents lists of traits that are enabled
-                    for the specific installation/integration
-                  type: string
-                replicas:
-                  format: int32
-                  type: integer
-                repositories:
-                  items:
+                  contentRef:
                     type: string
-                  type: array
-                resources:
-                  items:
-                    description: ResourceSpec --
-                    properties:
-                      compression:
-                        type: boolean
-                      content:
-                        type: string
-                      contentKey:
-                        type: string
-                      contentRef:
-                        type: string
-                      mountPath:
-                        type: string
-                      name:
-                        type: string
-                      type:
-                        description: ResourceType --
-                        type: string
-                    type: object
-                  type: array
-                serviceAccountName:
-                  type: string
-                sources:
-                  items:
-                    description: SourceSpec --
-                    properties:
-                      compression:
-                        type: boolean
-                      content:
-                        type: string
-                      contentKey:
-                        type: string
-                      contentRef:
-                        type: string
-                      interceptors:
-                        description: Interceptors are optional identifiers the org.apache.camel.k.RoutesLoader
-                          uses to pre/post process sources
-                        items:
-                          type: string
-                        type: array
-                      language:
-                        description: Language --
-                        type: string
-                      loader:
-                        description: Loader is an optional id of the org.apache.camel.k.RoutesLoader
-                          that will interpret this source at runtime
-                        type: string
-                      name:
-                        type: string
-                    type: object
-                  type: array
-                traits:
-                  additionalProperties:
-                    description: A TraitSpec contains the configuration of a trait
-                    properties:
-                      configuration:
-                        additionalProperties:
-                          type: string
-                        type: object
-                    type: object
-                  type: object
-              type: object
-            status:
-              description: IntegrationStatus defines the observed state of Integration
-              properties:
-                capabilities:
-                  items:
+                  mountPath:
                     type: string
-                  type: array
-                conditions:
-                  items:
-                    description: IntegrationCondition describes the state of a resource
-                      at a certain point.
-                    properties:
-                      lastTransitionTime:
-                        description: Last time the condition transitioned from one status
-                          to another.
-                        format: date-time
-                        type: string
-                      lastUpdateTime:
-                        description: The last time this condition was updated.
-                        format: date-time
-                        type: string
-                      message:
-                        description: A human readable message indicating details about
-                          the transition.
-                        type: string
-                      reason:
-                        description: The reason for the condition's last transition.
-                        type: string
-                      status:
-                        description: Status of the condition, one of True, False, Unknown.
-                        type: string
-                      type:
-                        description: Type of integration condition.
-                        type: string
-                    required:
-                      - status
-                      - type
-                    type: object
-                  type: array
-                configuration:
-                  items:
-                    description: ConfigurationSpec --
-                    properties:
-                      type:
-                        type: string
-                      value:
-                        type: string
-                    required:
-                      - type
-                      - value
-                    type: object
-                  type: array
-                dependencies:
-                  items:
+                  name:
                     type: string
-                  type: array
-                digest:
-                  type: string
-                failure:
-                  description: Failure --
-                  properties:
-                    reason:
+                  type:
+                    description: ResourceType --
+                    type: string
+                type: object
+              type: array
+            serviceAccountName:
+              type: string
+            sources:
+              items:
+                description: SourceSpec --
+                properties:
+                  compression:
+                    type: boolean
+                  content:
+                    type: string
+                  contentKey:
+                    type: string
+                  contentRef:
+                    type: string
+                  interceptors:
+                    description: Interceptors are optional identifiers the org.apache.camel.k.RoutesLoader
+                      uses to pre/post process sources
+                    items:
                       type: string
-                    recovery:
-                      description: FailureRecovery --
-                      properties:
-                        attempt:
-                          type: integer
-                        attemptMax:
-                          type: integer
-                        attemptTime:
-                          format: date-time
-                          type: string
-                      required:
-                        - attempt
-                        - attemptMax
-                        - attemptTime
-                      type: object
-                    time:
+                    type: array
+                  language:
+                    description: Language --
+                    type: string
+                  loader:
+                    description: Loader is an optional id of the org.apache.camel.k.RoutesLoader
+                      that will interpret this source at runtime
+                    type: string
+                  name:
+                    type: string
+                type: object
+              type: array
+            traits:
+              additionalProperties:
+                description: A TraitSpec contains the configuration of a trait
+                properties:
+                  configuration:
+                    additionalProperties:
+                      type: string
+                    type: object
+                type: object
+              type: object
+          type: object
+        status:
+          description: IntegrationStatus defines the observed state of Integration
+          properties:
+            capabilities:
+              items:
+                type: string
+              type: array
+            conditions:
+              items:
+                description: IntegrationCondition describes the state of a resource
+                  at a certain point.
+                properties:
+                  lastTransitionTime:
+                    description: Last time the condition transitioned from one status
+                      to another.
+                    format: date-time
+                    type: string
+                  lastUpdateTime:
+                    description: The last time this condition was updated.
+                    format: date-time
+                    type: string
+                  message:
+                    description: A human readable message indicating details about
+                      the transition.
+                    type: string
+                  reason:
+                    description: The reason for the condition's last transition.
+                    type: string
+                  status:
+                    description: Status of the condition, one of True, False, Unknown.
+                    type: string
+                  type:
+                    description: Type of integration condition.
+                    type: string
+                required:
+                  - status
+                  - type
+                type: object
+              type: array
+            configuration:
+              items:
+                description: ConfigurationSpec --
+                properties:
+                  type:
+                    type: string
+                  value:
+                    type: string
+                required:
+                  - type
+                  - value
+                type: object
+              type: array
+            dependencies:
+              items:
+                type: string
+              type: array
+            digest:
+              type: string
+            failure:
+              description: Failure --
+              properties:
+                reason:
+                  type: string
+                recovery:
+                  description: FailureRecovery --
+                  properties:
+                    attempt:
+                      type: integer
+                    attemptMax:
+                      type: integer
+                    attemptTime:
                       format: date-time
                       type: string
                   required:
-                    - reason
-                    - recovery
-                    - time
+                    - attempt
+                    - attemptMax
                   type: object
-                generatedResources:
-                  items:
-                    description: ResourceSpec --
-                    properties:
-                      compression:
-                        type: boolean
-                      content:
-                        type: string
-                      contentKey:
-                        type: string
-                      contentRef:
-                        type: string
-                      mountPath:
-                        type: string
-                      name:
-                        type: string
-                      type:
-                        description: ResourceType --
-                        type: string
-                    type: object
-                  type: array
-                generatedSources:
-                  items:
-                    description: SourceSpec --
-                    properties:
-                      compression:
-                        type: boolean
-                      content:
-                        type: string
-                      contentKey:
-                        type: string
-                      contentRef:
-                        type: string
-                      interceptors:
-                        description: Interceptors are optional identifiers the org.apache.camel.k.RoutesLoader
-                          uses to pre/post process sources
-                        items:
-                          type: string
-                        type: array
-                      language:
-                        description: Language --
-                        type: string
-                      loader:
-                        description: Loader is an optional id of the org.apache.camel.k.RoutesLoader
-                          that will interpret this source at runtime
-                        type: string
-                      name:
-                        type: string
-                    type: object
-                  type: array
-                image:
+                time:
+                  format: date-time
                   type: string
-                kit:
-                  type: string
-                phase:
-                  description: IntegrationPhase --
-                  type: string
-                platform:
-                  type: string
-                profile:
-                  description: TraitProfile represents lists of traits that are enabled
-                    for the specific installation/integration
-                  type: string
-                replicas:
-                  format: int32
-                  type: integer
-                runtimeProvider:
-                  description: RuntimeProvider --
-                  type: string
-                runtimeVersion:
-                  type: string
-                version:
-                  type: string
+              required:
+                - reason
+                - recovery
+                - time
               type: object
+            generatedResources:
+              items:
+                description: ResourceSpec --
+                properties:
+                  compression:
+                    type: boolean
+                  content:
+                    type: string
+                  contentKey:
+                    type: string
+                  contentRef:
+                    type: string
+                  mountPath:
+                    type: string
+                  name:
+                    type: string
+                  type:
+                    description: ResourceType --
+                    type: string
+                type: object
+              type: array
+            generatedSources:
+              items:
+                description: SourceSpec --
+                properties:
+                  compression:
+                    type: boolean
+                  content:
+                    type: string
+                  contentKey:
+                    type: string
+                  contentRef:
+                    type: string
+                  interceptors:
+                    description: Interceptors are optional identifiers the org.apache.camel.k.RoutesLoader
+                      uses to pre/post process sources
+                    items:
+                      type: string
+                    type: array
+                  language:
+                    description: Language --
+                    type: string
+                  loader:
+                    description: Loader is an optional id of the org.apache.camel.k.RoutesLoader
+                      that will interpret this source at runtime
+                    type: string
+                  name:
+                    type: string
+                type: object
+              type: array
+            image:
+              type: string
+            kit:
+              type: string
+            phase:
+              description: IntegrationPhase --
+              type: string
+            platform:
+              type: string
+            profile:
+              description: TraitProfile represents lists of traits that are enabled
+                for the specific installation/integration
+              type: string
+            replicas:
+              format: int32
+              type: integer
+            runtimeProvider:
+              description: RuntimeProvider --
+              type: string
+            runtimeVersion:
+              type: string
+            version:
+              type: string
           type: object
+      type: object
+  version: v1
+  versions:
+    - name: v1
       served: true
       storage: true
-      subresources:
-        scale:
-          specReplicasPath: .spec.replicas
-          statusReplicasPath: .status.replicas
-        status: {}
diff --git a/pkg/cmd/uninstall.go b/pkg/cmd/uninstall.go
index a19393e..c6aeb6a 100644
--- a/pkg/cmd/uninstall.go
+++ b/pkg/cmd/uninstall.go
@@ -237,7 +237,7 @@
 }
 
 func (o *uninstallCmdOptions) uninstallCrd(c kubernetes.Interface) error {
-	restClient, err := customclient.GetClientFor(c, "apiextensions.k8s.io", "v1")
+	restClient, err := customclient.GetClientFor(c, "apiextensions.k8s.io", "v1beta1")
 	if err != nil {
 		return err
 	}
diff --git a/pkg/install/cluster.go b/pkg/install/cluster.go
index d779d46..9b67062 100644
--- a/pkg/install/cluster.go
+++ b/pkg/install/cluster.go
@@ -183,7 +183,7 @@
 	if err != nil {
 		return err
 	}
-	restClient, err := customclient.GetClientFor(c, "apiextensions.k8s.io", "v1")
+	restClient, err := customclient.GetClientFor(c, "apiextensions.k8s.io", "v1beta1")
 	if err != nil {
 		return err
 	}
diff --git a/script/gen_crd.sh b/script/gen_crd.sh
index 5e3b1df..44150d2 100755
--- a/script/gen_crd.sh
+++ b/script/gen_crd.sh
@@ -21,4 +21,4 @@
 echo "Generating CRDs..."
 
 cd $rootdir
-go run sigs.k8s.io/controller-tools/cmd/controller-gen crd paths=./... output:crd:dir=../../../deploy/crds crd:crdVersions=v1
+go run sigs.k8s.io/controller-tools/cmd/controller-gen crd paths=./... output:crd:dir=../../../deploy/crds crd:crdVersions=v1beta1