apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: anzographs.anzograph.clusters.cambridgesemantics.com
spec:
  group: anzograph.clusters.cambridgesemantics.com
  names:
    kind: AnzoGraph
    listKind: AnzoGraphList
    plural: anzographs
    singular: anzograph
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The number of DB replicas of AnzoGraph cluster
      jsonPath: .spec.dbSpec.size
      name: clusterSize
      type: integer
    - description: Current phase of AnzoGraph cluster
      jsonPath: .status.phase
      name: phase
      type: string
    - description: Number of current ready pods in AnzoGraph cluster
      jsonPath: .status.readyReplicas
      name: readyReplicas
      type: integer
    - jsonPath: .metadata.creationTimestamp
      name: age
      type: date
    name: v1
    schema:
      openAPIV3Schema:
        description: AnzoGraph is the Schema for the anzographs API
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: AnzoGraphSpec defines the desired state of AnzoGraph
            properties:
              allInOneImage:
                description: ImageSpec Defines the docker container image to be used
                properties:
                  name:
                    type: string
                  pullPolicy:
                    description: PullPolicy describes a policy for if/when to pull
                      a container image
                    type: string
                  pullSecrets:
                    items:
                      type: string
                    type: array
                  registry:
                    type: string
                  tag:
                    type: string
                type: object
              azgSettings:
                additionalProperties:
                  type: string
                type: object
              azgSettingsProfile:
                type: string
              dbSpec:
                description: AnzoGraphComponentSpec defines the desired state of UnstructuredSpec
                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.
                            properties:
                              nodeSelectorTerms:
                                description: Required. A list of node selector terms.
                                  The terms are ORed.
                                items:
                                  description: A null or empty node selector term
                                    matches no objects. The requirements of them are
                                    ANDed. The TopologySelectorTerm type implements
                                    a subset of the NodeSelectorTerm.
                                  properties:
                                    matchExpressions:
                                      description: A list of node selector requirements
                                        by node's labels.
                                      items:
                                        description: A node selector requirement is
                                          a selector that contains values, a key,
                                          and an operator that relates the key and
                                          values.
                                        properties:
                                          key:
                                            description: The label key that the selector
                                              applies to.
                                            type: string
                                          operator:
                                            description: Represents a key's relationship
                                              to a set of values. Valid operators
                                              are In, NotIn, Exists, DoesNotExist.
                                              Gt, and Lt.
                                            type: string
                                          values:
                                            description: An array of string values.
                                              If the operator is In or NotIn, the
                                              values array must be non-empty. If the
                                              operator is Exists or DoesNotExist,
                                              the values array must be empty. If the
                                              operator is Gt or Lt, the values array
                                              must have a single element, which will
                                              be interpreted as an integer. This array
                                              is replaced during a strategic merge
                                              patch.
                                            items:
                                              type: string
                                            type: array
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                    matchFields:
                                      description: A list of node selector requirements
                                        by node's fields.
                                      items:
                                        description: A node selector requirement is
                                          a selector that contains values, a key,
                                          and an operator that relates the key and
                                          values.
                                        properties:
                                          key:
                                            description: The label key that the selector
                                              applies to.
                                            type: string
                                          operator:
                                            description: Represents a key's relationship
                                              to a set of values. Valid operators
                                              are In, NotIn, Exists, DoesNotExist.
                                              Gt, and Lt.
                                            type: string
                                          values:
                                            description: An array of string values.
                                              If the operator is In or NotIn, the
                                              values array must be non-empty. If the
                                              operator is Exists or DoesNotExist,
                                              the values array must be empty. If the
                                              operator is Gt or Lt, the values array
                                              must have a single element, which will
                                              be interpreted as an integer. This array
                                              is replaced during a strategic merge
                                              patch.
                                            items:
                                              type: string
                                            type: array
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                  type: object
                                type: array
                            required:
                            - nodeSelectorTerms
                            type: object
                        type: object
                      podAffinity:
                        description: Describes pod affinity scheduling rules (e.g.
                          co-locate this pod in the same node, zone, etc. as some
                          other pod(s)).
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            description: The scheduler will prefer to schedule pods
                              to nodes that satisfy the affinity expressions specified
                              by this field, but it may choose a node that violates
                              one or more of the expressions. The node that is most
                              preferred is the one with the greatest sum of weights,
                              i.e. for each node that meets all of the scheduling
                              requirements (resource request, requiredDuringScheduling
                              affinity expressions, etc.), compute a sum by iterating
                              through the elements of this field and adding "weight"
                              to the sum if the node has pods which matches the corresponding
                              podAffinityTerm; the node(s) with the highest sum are
                              the most preferred.
                            items:
                              description: The weights of all of the matched WeightedPodAffinityTerm
                                fields are added per-node to find the most preferred
                                node(s)
                              properties:
                                podAffinityTerm:
                                  description: Required. A pod affinity term, associated
                                    with the corresponding weight.
                                  properties:
                                    labelSelector:
                                      description: A label query over a set of resources,
                                        in this case pods.
                                      properties:
                                        matchExpressions:
                                          description: matchExpressions is a list
                                            of label selector requirements. The requirements
                                            are ANDed.
                                          items:
                                            description: A label selector requirement
                                              is a selector that contains values,
                                              a key, and an operator that relates
                                              the key and values.
                                            properties:
                                              key:
                                                description: key is the label key
                                                  that the selector applies to.
                                                type: string
                                              operator:
                                                description: operator represents a
                                                  key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists
                                                  and DoesNotExist.
                                                type: string
                                              values:
                                                description: values is an array of
                                                  string values. If the operator is
                                                  In or NotIn, the values array must
                                                  be non-empty. If the operator is
                                                  Exists or DoesNotExist, the values
                                                  array must be empty. This array
                                                  is replaced during a strategic merge
                                                  patch.
                                                items:
                                                  type: string
                                                type: array
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: matchLabels is a map of {key,value}
                                            pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions,
                                            whose key field is "key", the operator
                                            is "In", and the values array contains
                                            only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                    namespaces:
                                      description: namespaces specifies which namespaces
                                        the labelSelector applies to (matches against);
                                        null or empty list means "this pod's namespace"
                                      items:
                                        type: string
                                      type: array
                                    topologyKey:
                                      description: This pod should be co-located (affinity)
                                        or not co-located (anti-affinity) with the
                                        pods matching the labelSelector in the specified
                                        namespaces, where co-located is defined as
                                        running on a node whose value of the label
                                        with key topologyKey matches that of any node
                                        on which any of the selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                weight:
                                  description: weight associated with matching the
                                    corresponding podAffinityTerm, in the range 1-100.
                                  format: int32
                                  type: integer
                              required:
                              - podAffinityTerm
                              - weight
                              type: object
                            type: array
                          requiredDuringSchedulingIgnoredDuringExecution:
                            description: If the affinity requirements specified by
                              this field are not met at scheduling time, the pod will
                              not be scheduled onto the node. If the affinity requirements
                              specified by this field cease to be met at some point
                              during pod execution (e.g. due to a pod label update),
                              the system may or may not try to eventually evict the
                              pod from its node. When there are multiple elements,
                              the lists of nodes corresponding to each podAffinityTerm
                              are intersected, i.e. all terms must be satisfied.
                            items:
                              description: Defines a set of pods (namely those matching
                                the labelSelector relative to the given namespace(s))
                                that this pod should be co-located (affinity) or not
                                co-located (anti-affinity) with, where co-located
                                is defined as running on a node whose value of the
                                label with key <topologyKey> matches that of any node
                                on which a pod of the set of pods is running
                              properties:
                                labelSelector:
                                  description: A label query over a set of resources,
                                    in this case pods.
                                  properties:
                                    matchExpressions:
                                      description: matchExpressions is a list of label
                                        selector requirements. The requirements are
                                        ANDed.
                                      items:
                                        description: A label selector requirement
                                          is a selector that contains values, a key,
                                          and an operator that relates the key and
                                          values.
                                        properties:
                                          key:
                                            description: key is the label key that
                                              the selector applies to.
                                            type: string
                                          operator:
                                            description: operator represents a key's
                                              relationship to a set of values. Valid
                                              operators are In, NotIn, Exists and
                                              DoesNotExist.
                                            type: string
                                          values:
                                            description: values is an array of string
                                              values. If the operator is In or NotIn,
                                              the values array must be non-empty.
                                              If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This
                                              array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: matchLabels is a map of {key,value}
                                        pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions,
                                        whose key field is "key", the operator is
                                        "In", and the values array contains only "value".
                                        The requirements are ANDed.
                                      type: object
                                  type: object
                                namespaces:
                                  description: namespaces specifies which namespaces
                                    the labelSelector applies to (matches against);
                                    null or empty list means "this pod's namespace"
                                  items:
                                    type: string
                                  type: array
                                topologyKey:
                                  description: This pod should be co-located (affinity)
                                    or not co-located (anti-affinity) with the pods
                                    matching the labelSelector in the specified namespaces,
                                    where co-located is defined as running on a node
                                    whose value of the label with key topologyKey
                                    matches that of any node on which any of the selected
                                    pods is running. Empty topologyKey is not allowed.
                                  type: string
                              required:
                              - topologyKey
                              type: object
                            type: array
                        type: object
                      podAntiAffinity:
                        description: Describes pod anti-affinity scheduling rules
                          (e.g. avoid putting this pod in the same node, zone, etc.
                          as some other pod(s)).
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            description: The scheduler will prefer to schedule pods
                              to nodes that satisfy the anti-affinity expressions
                              specified by this field, but it may choose a node that
                              violates one or more of the expressions. The node that
                              is most preferred is the one with the greatest sum of
                              weights, i.e. for each node that meets all of the scheduling
                              requirements (resource request, requiredDuringScheduling
                              anti-affinity expressions, etc.), compute a sum by iterating
                              through the elements of this field and adding "weight"
                              to the sum if the node has pods which matches the corresponding
                              podAffinityTerm; the node(s) with the highest sum are
                              the most preferred.
                            items:
                              description: The weights of all of the matched WeightedPodAffinityTerm
                                fields are added per-node to find the most preferred
                                node(s)
                              properties:
                                podAffinityTerm:
                                  description: Required. A pod affinity term, associated
                                    with the corresponding weight.
                                  properties:
                                    labelSelector:
                                      description: A label query over a set of resources,
                                        in this case pods.
                                      properties:
                                        matchExpressions:
                                          description: matchExpressions is a list
                                            of label selector requirements. The requirements
                                            are ANDed.
                                          items:
                                            description: A label selector requirement
                                              is a selector that contains values,
                                              a key, and an operator that relates
                                              the key and values.
                                            properties:
                                              key:
                                                description: key is the label key
                                                  that the selector applies to.
                                                type: string
                                              operator:
                                                description: operator represents a
                                                  key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists
                                                  and DoesNotExist.
                                                type: string
                                              values:
                                                description: values is an array of
                                                  string values. If the operator is
                                                  In or NotIn, the values array must
                                                  be non-empty. If the operator is
                                                  Exists or DoesNotExist, the values
                                                  array must be empty. This array
                                                  is replaced during a strategic merge
                                                  patch.
                                                items:
                                                  type: string
                                                type: array
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: matchLabels is a map of {key,value}
                                            pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions,
                                            whose key field is "key", the operator
                                            is "In", and the values array contains
                                            only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                    namespaces:
                                      description: namespaces specifies which namespaces
                                        the labelSelector applies to (matches against);
                                        null or empty list means "this pod's namespace"
                                      items:
                                        type: string
                                      type: array
                                    topologyKey:
                                      description: This pod should be co-located (affinity)
                                        or not co-located (anti-affinity) with the
                                        pods matching the labelSelector in the specified
                                        namespaces, where co-located is defined as
                                        running on a node whose value of the label
                                        with key topologyKey matches that of any node
                                        on which any of the selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                weight:
                                  description: weight associated with matching the
                                    corresponding podAffinityTerm, in the range 1-100.
                                  format: int32
                                  type: integer
                              required:
                              - podAffinityTerm
                              - weight
                              type: object
                            type: array
                          requiredDuringSchedulingIgnoredDuringExecution:
                            description: If the anti-affinity requirements specified
                              by this field are not met at scheduling time, the pod
                              will not be scheduled onto the node. If the anti-affinity
                              requirements specified by this field cease to be met
                              at some point during pod execution (e.g. due to a pod
                              label update), the system may or may not try to eventually
                              evict the pod from its node. When there are multiple
                              elements, the lists of nodes corresponding to each podAffinityTerm
                              are intersected, i.e. all terms must be satisfied.
                            items:
                              description: Defines a set of pods (namely those matching
                                the labelSelector relative to the given namespace(s))
                                that this pod should be co-located (affinity) or not
                                co-located (anti-affinity) with, where co-located
                                is defined as running on a node whose value of the
                                label with key <topologyKey> matches that of any node
                                on which a pod of the set of pods is running
                              properties:
                                labelSelector:
                                  description: A label query over a set of resources,
                                    in this case pods.
                                  properties:
                                    matchExpressions:
                                      description: matchExpressions is a list of label
                                        selector requirements. The requirements are
                                        ANDed.
                                      items:
                                        description: A label selector requirement
                                          is a selector that contains values, a key,
                                          and an operator that relates the key and
                                          values.
                                        properties:
                                          key:
                                            description: key is the label key that
                                              the selector applies to.
                                            type: string
                                          operator:
                                            description: operator represents a key's
                                              relationship to a set of values. Valid
                                              operators are In, NotIn, Exists and
                                              DoesNotExist.
                                            type: string
                                          values:
                                            description: values is an array of string
                                              values. If the operator is In or NotIn,
                                              the values array must be non-empty.
                                              If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This
                                              array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: matchLabels is a map of {key,value}
                                        pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions,
                                        whose key field is "key", the operator is
                                        "In", and the values array contains only "value".
                                        The requirements are ANDed.
                                      type: object
                                  type: object
                                namespaces:
                                  description: namespaces specifies which namespaces
                                    the labelSelector applies to (matches against);
                                    null or empty list means "this pod's namespace"
                                  items:
                                    type: string
                                  type: array
                                topologyKey:
                                  description: This pod should be co-located (affinity)
                                    or not co-located (anti-affinity) with the pods
                                    matching the labelSelector in the specified namespaces,
                                    where co-located is defined as running on a node
                                    whose value of the label with key topologyKey
                                    matches that of any node on which any of the selected
                                    pods is running. Empty topologyKey is not allowed.
                                  type: string
                              required:
                              - topologyKey
                              type: object
                            type: array
                        type: object
                    type: object
                  image:
                    description: ImageSpec Defines the docker container image to be
                      used
                    properties:
                      name:
                        type: string
                      pullPolicy:
                        description: PullPolicy describes a policy for if/when to
                          pull a container image
                        type: string
                      pullSecrets:
                        items:
                          type: string
                        type: array
                      registry:
                        type: string
                      tag:
                        type: string
                    type: object
                  resources:
                    description: ResourceRequirements describes the compute resource
                      requirements.
                    properties:
                      limits:
                        additionalProperties:
                          anyOf:
                          - type: integer
                          - type: string
                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                          x-kubernetes-int-or-string: true
                        description: 'Limits describes the maximum amount of compute
                          resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                        type: object
                      requests:
                        additionalProperties:
                          anyOf:
                          - type: integer
                          - type: string
                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                          x-kubernetes-int-or-string: true
                        description: 'Requests describes the minimum amount of compute
                          resources required. If Requests is omitted for a container,
                          it defaults to Limits if that is explicitly specified, otherwise
                          to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                        type: object
                    type: object
                  service:
                    description: Service defines the properties to configure Anzograph
                      service
                    properties:
                      metadata:
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      spec:
                        description: ServiceSpec describes the attributes that a user
                          creates on a service.
                        properties:
                          clusterIP:
                            description: 'clusterIP is the IP address of the service
                              and is usually assigned randomly by the master. If an
                              address is specified manually and is not in use by others,
                              it will be allocated to the service; otherwise, creation
                              of the service will fail. This field can not be changed
                              through updates. Valid values are "None", empty string
                              (""), or a valid IP address. "None" can be specified
                              for headless services when proxying is not required.
                              Only applies to types ClusterIP, NodePort, and LoadBalancer.
                              Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies'
                            type: string
                          externalIPs:
                            description: externalIPs is a list of IP addresses for
                              which nodes in the cluster will also accept traffic
                              for this service.  These IPs are not managed by Kubernetes.  The
                              user is responsible for ensuring that traffic arrives
                              at a node with this IP.  A common example is external
                              load-balancers that are not part of the Kubernetes system.
                            items:
                              type: string
                            type: array
                          externalName:
                            description: externalName is the external reference that
                              kubedns or equivalent will return as a CNAME record
                              for this service. No proxying will be involved. Must
                              be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123)
                              and requires Type to be ExternalName.
                            type: string
                          externalTrafficPolicy:
                            description: externalTrafficPolicy denotes if this Service
                              desires to route external traffic to node-local or cluster-wide
                              endpoints. "Local" preserves the client source IP and
                              avoids a second hop for LoadBalancer and Nodeport type
                              services, but risks potentially imbalanced traffic spreading.
                              "Cluster" obscures the client source IP and may cause
                              a second hop to another node, but should have good overall
                              load-spreading.
                            type: string
                          healthCheckNodePort:
                            description: healthCheckNodePort specifies the healthcheck
                              nodePort for the service. If not specified, HealthCheckNodePort
                              is created by the service api backend with the allocated
                              nodePort. Will use user-specified nodePort value if
                              specified by the client. Only effects when Type is set
                              to LoadBalancer and ExternalTrafficPolicy is set to
                              Local.
                            format: int32
                            type: integer
                          ipFamily:
                            description: ipFamily specifies whether this Service has
                              a preference for a particular IP family (e.g. IPv4 vs.
                              IPv6).  If a specific IP family is requested, the clusterIP
                              field will be allocated from that family, if it is available
                              in the cluster.  If no IP family is requested, the cluster's
                              primary IP family will be used. Other IP fields (loadBalancerIP,
                              loadBalancerSourceRanges, externalIPs) and controllers
                              which allocate external load-balancers should use the
                              same IP family.  Endpoints for this Service will be
                              of this family.  This field is immutable after creation.
                              Assigning a ServiceIPFamily not available in the cluster
                              (e.g. IPv6 in IPv4 only cluster) is an error condition
                              and will fail during clusterIP assignment.
                            type: string
                          loadBalancerIP:
                            description: 'Only applies to Service Type: LoadBalancer
                              LoadBalancer will get created with the IP specified
                              in this field. This feature depends on whether the underlying
                              cloud-provider supports specifying the loadBalancerIP
                              when a load balancer is created. This field will be
                              ignored if the cloud-provider does not support the feature.'
                            type: string
                          loadBalancerSourceRanges:
                            description: 'If specified and supported by the platform,
                              this will restrict traffic through the cloud-provider
                              load-balancer will be restricted to the specified client
                              IPs. This field will be ignored if the cloud-provider
                              does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/'
                            items:
                              type: string
                            type: array
                          ports:
                            description: 'The list of ports that are exposed by this
                              service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies'
                            items:
                              description: ServicePort contains information on service's
                                port.
                              properties:
                                name:
                                  description: The name of this port within the service.
                                    This must be a DNS_LABEL. All ports within a ServiceSpec
                                    must have unique names. When considering the endpoints
                                    for a Service, this must match the 'name' field
                                    in the EndpointPort. Optional if only one ServicePort
                                    is defined on this service.
                                  type: string
                                nodePort:
                                  description: 'The port on each node on which this
                                    service is exposed when type=NodePort or LoadBalancer.
                                    Usually assigned by the system. If specified,
                                    it will be allocated to the service if unused
                                    or else creation of the service will fail. Default
                                    is to auto-allocate a port if the ServiceType
                                    of this Service requires one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport'
                                  format: int32
                                  type: integer
                                port:
                                  description: The port that will be exposed by this
                                    service.
                                  format: int32
                                  type: integer
                                protocol:
                                  description: The IP protocol for this port. Supports
                                    "TCP", "UDP", and "SCTP". Default is TCP.
                                  type: string
                                targetPort:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: 'Number or name of the port to access
                                    on the pods targeted by the service. Number must
                                    be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
                                    If this is a string, it will be looked up as a
                                    named port in the target Pod''s container ports.
                                    If this is not specified, the value of the ''port''
                                    field is used (an identity map). This field is
                                    ignored for services with clusterIP=None, and
                                    should be omitted or set equal to the ''port''
                                    field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service'
                                  x-kubernetes-int-or-string: true
                              required:
                              - port
                              - protocol
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - port
                            - protocol
                            x-kubernetes-list-type: map
                          publishNotReadyAddresses:
                            description: publishNotReadyAddresses, when set to true,
                              indicates that DNS implementations must publish the
                              notReadyAddresses of subsets for the Endpoints associated
                              with the Service. The default value is false. The primary
                              use case for setting this field is to use a StatefulSet's
                              Headless Service to propagate SRV records for its Pods
                              without respect to their readiness for purpose of peer
                              discovery.
                            type: boolean
                          selector:
                            additionalProperties:
                              type: string
                            description: 'Route service traffic to pods with label
                              keys and values matching this selector. If empty or
                              not present, the service is assumed to have an external
                              process managing its endpoints, which Kubernetes will
                              not modify. Only applies to types ClusterIP, NodePort,
                              and LoadBalancer. Ignored if type is ExternalName. More
                              info: https://kubernetes.io/docs/concepts/services-networking/service/'
                            type: object
                          sessionAffinity:
                            description: 'Supports "ClientIP" and "None". Used to
                              maintain session affinity. Enable client IP based session
                              affinity. Must be ClientIP or None. Defaults to None.
                              More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies'
                            type: string
                          sessionAffinityConfig:
                            description: sessionAffinityConfig contains the configurations
                              of session affinity.
                            properties:
                              clientIP:
                                description: clientIP contains the configurations
                                  of Client IP based session affinity.
                                properties:
                                  timeoutSeconds:
                                    description: timeoutSeconds specifies the seconds
                                      of ClientIP type session sticky time. The value
                                      must be >0 && <=86400(for 1 day) if ServiceAffinity
                                      == "ClientIP". Default value is 10800(for 3
                                      hours).
                                    format: int32
                                    type: integer
                                type: object
                            type: object
                          type:
                            description: 'type determines how the Service is exposed.
                              Defaults to ClusterIP. Valid options are ExternalName,
                              ClusterIP, NodePort, and LoadBalancer. "ExternalName"
                              maps to the specified externalName. "ClusterIP" allocates
                              a cluster-internal IP address for load-balancing to
                              endpoints. Endpoints are determined by the selector
                              or if that is not specified, by manual construction
                              of an Endpoints object. If clusterIP is "None", no virtual
                              IP is allocated and the endpoints are published as a
                              set of endpoints rather than a stable IP. "NodePort"
                              builds on ClusterIP and allocates a port on every node
                              which routes to the clusterIP. "LoadBalancer" builds
                              on NodePort and creates an external load-balancer (if
                              supported in the current cloud) which routes to the
                              clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types'
                            type: string
                        type: object
                    type: object
                  size:
                    format: int32
                    type: integer
                  tolerations:
                    items:
                      description: The pod this Toleration is attached to tolerates
                        any taint that matches the triple <key,value,effect> using
                        the matching operator <operator>.
                      properties:
                        effect:
                          description: Effect indicates the taint effect to match.
                            Empty means match all taint effects. When specified, allowed
                            values are NoSchedule, PreferNoSchedule and NoExecute.
                          type: string
                        key:
                          description: Key is the taint key that the toleration applies
                            to. Empty means match all taint keys. If the key is empty,
                            operator must be Exists; this combination means to match
                            all values and all keys.
                          type: string
                        operator:
                          description: Operator represents a key's relationship to
                            the value. Valid operators are Exists and Equal. Defaults
                            to Equal. Exists is equivalent to wildcard for value,
                            so that a pod can tolerate all taints of a particular
                            category.
                          type: string
                        tolerationSeconds:
                          description: TolerationSeconds represents the period of
                            time the toleration (which must be of effect NoExecute,
                            otherwise this field is ignored) tolerates the taint.
                            By default, it is not set, which means tolerate the taint
                            forever (do not evict). Zero and negative values will
                            be treated as 0 (evict immediately) by the system.
                          format: int64
                          type: integer
                        value:
                          description: Value is the taint value the toleration matches
                            to. If the operator is Exists, the value should be empty,
                            otherwise just a regular string.
                          type: string
                      type: object
                    type: array
                  volumes:
                    items:
                      description: VolumeSpec defines the volume spec for NFS.
                      properties:
                        mountPath:
                          type: string
                        name:
                          type: string
                        pv:
                          description: PersistentVolumeSpec is the specification of
                            a persistent volume.
                          properties:
                            accessModes:
                              description: 'AccessModes contains all ways the volume
                                can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes'
                              items:
                                type: string
                              type: array
                            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
                                secretNamespace:
                                  description: the namespace of the secret that contains
                                    Azure Storage Account Name and Key default is
                                    the same as the Pod
                                  type: string
                                shareName:
                                  description: Share Name
                                  type: string
                              required:
                              - secretName
                              - shareName
                              type: object
                            capacity:
                              additionalProperties:
                                anyOf:
                                - type: integer
                                - type: string
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                              description: 'A description of the persistent volume''s
                                resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity'
                              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 is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                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 is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                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
                            claimRef:
                              description: 'ClaimRef is part of a bi-directional binding
                                between PersistentVolume and PersistentVolumeClaim.
                                Expected to be non-nil when bound. claim.VolumeName
                                is the authoritative bind between PV and PVC. More
                                info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding'
                              properties:
                                apiVersion:
                                  description: API version of the referent.
                                  type: string
                                fieldPath:
                                  description: 'If referring to a piece of an object
                                    instead of an entire object, this string should
                                    contain a valid JSON/Go field access statement,
                                    such as desiredState.manifest.containers[2]. For
                                    example, if the object reference is to a container
                                    within a pod, this would take on a value like:
                                    "spec.containers{name}" (where "name" refers to
                                    the name of the container that triggered the event)
                                    or if no container name is specified "spec.containers[2]"
                                    (container with index 2 in this pod). This syntax
                                    is chosen only to have some well-defined way of
                                    referencing a part of an object. TODO: this design
                                    is not final and this field is subject to change
                                    in the future.'
                                  type: string
                                kind:
                                  description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                                  type: string
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                  type: string
                                namespace:
                                  description: 'Namespace of the referent. More info:
                                    https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                                  type: string
                                resourceVersion:
                                  description: 'Specific resourceVersion to which
                                    this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                                  type: string
                                uid:
                                  description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                                  type: string
                              type: object
                            csi:
                              description: CSI represents storage that is handled
                                by an external CSI driver (Beta feature).
                              properties:
                                controllerExpandSecretRef:
                                  description: ControllerExpandSecretRef is a reference
                                    to the secret object containing sensitive information
                                    to pass to the CSI driver to complete the CSI
                                    ControllerExpandVolume call. This is an alpha
                                    field and requires enabling ExpandCSIVolumes feature
                                    gate. This field is optional, and may be empty
                                    if no secret is required. If the secret object
                                    contains more than one secret, all secrets are
                                    passed.
                                  properties:
                                    name:
                                      description: Name is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                controllerPublishSecretRef:
                                  description: ControllerPublishSecretRef is a reference
                                    to the secret object containing sensitive information
                                    to pass to the CSI driver to complete the CSI
                                    ControllerPublishVolume and ControllerUnpublishVolume
                                    calls. This field is optional, and may be empty
                                    if no secret is required. If the secret object
                                    contains more than one secret, all secrets are
                                    passed.
                                  properties:
                                    name:
                                      description: Name is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                driver:
                                  description: Driver is the name of the driver to
                                    use for this volume. Required.
                                  type: string
                                fsType:
                                  description: Filesystem type to mount. Must be a
                                    filesystem type supported by the host operating
                                    system. Ex. "ext4", "xfs", "ntfs".
                                  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 secrets are passed.
                                  properties:
                                    name:
                                      description: Name is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                nodeStageSecretRef:
                                  description: NodeStageSecretRef is a reference to
                                    the secret object containing sensitive information
                                    to pass to the CSI driver to complete the CSI
                                    NodeStageVolume and NodeStageVolume and NodeUnstageVolume
                                    calls. This field is optional, and may be empty
                                    if no secret is required. If the secret object
                                    contains more than one secret, all secrets are
                                    passed.
                                  properties:
                                    name:
                                      description: Name is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                readOnly:
                                  description: 'Optional: The value to pass to ControllerPublishVolumeRequest.
                                    Defaults to false (read/write).'
                                  type: boolean
                                volumeAttributes:
                                  additionalProperties:
                                    type: string
                                  description: Attributes of the volume to publish.
                                  type: object
                                volumeHandle:
                                  description: VolumeHandle is the unique volume name
                                    returned by the CSI volume plugin’s CreateVolume
                                    to refer to the volume on all subsequent calls.
                                    Required.
                                  type: string
                              required:
                              - driver
                              - volumeHandle
                              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 is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                              required:
                              - driver
                              type: object
                            flocker:
                              description: Flocker represents a Flocker volume attached
                                to a kubelet's host machine and exposed to the pod
                                for its usage. 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. Provisioned by an admin.
                                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
                            glusterfs:
                              description: 'Glusterfs represents a Glusterfs volume
                                that is attached to a host and exposed to the pod.
                                Provisioned by an admin. 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
                                endpointsNamespace:
                                  description: 'EndpointsNamespace is the namespace
                                    that contains Glusterfs endpoint. If this field
                                    is empty, the EndpointNamespace defaults to the
                                    same namespace as the bound PVC. 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 directory on the
                                host. Provisioned by a developer or tester. This is
                                useful for single-node development and testing only!
                                On-host storage is not supported in any way and WILL
                                NOT WORK in a multi-node cluster. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
                              properties:
                                path:
                                  description: 'Path of the directory on the host.
                                    If the path is a symlink, it will follow the link
                                    to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
                                  type: string
                                type:
                                  description: 'Type for HostPath Volume Defaults
                                    to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
                                  type: string
                              required:
                              - path
                              type: object
                            iscsi:
                              description: ISCSI represents an ISCSI Disk resource
                                that is attached to a kubelet's host machine and then
                                exposed to the pod. Provisioned by an admin.
                              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 is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                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
                            local:
                              description: Local represents directly-attached storage
                                with node affinity
                              properties:
                                fsType:
                                  description: Filesystem type to mount. It applies
                                    only when the Path is a block device. Must be
                                    a filesystem type supported by the host operating
                                    system. Ex. "ext4", "xfs", "ntfs". The default
                                    value is to auto-select a fileystem if unspecified.
                                  type: string
                                path:
                                  description: The full path to the volume on the
                                    node. It can be either a directory or block device
                                    (disk, partition, ...).
                                  type: string
                              required:
                              - path
                              type: object
                            mountOptions:
                              description: 'A list of mount options, e.g. ["ro", "soft"].
                                Not validated - mount will simply fail if one is invalid.
                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options'
                              items:
                                type: string
                              type: array
                            nfs:
                              description: 'NFS represents an NFS mount on the host.
                                Provisioned by an admin. 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
                            nodeAffinity:
                              description: NodeAffinity defines constraints that limit
                                what nodes this volume can be accessed from. This
                                field influences the scheduling of pods that use this
                                volume.
                              properties:
                                required:
                                  description: Required specifies hard node constraints
                                    that must be met.
                                  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
                            persistentVolumeReclaimPolicy:
                              description: 'What happens to a persistent volume when
                                released from its claim. Valid options are Retain
                                (default for manually created PersistentVolumes),
                                Delete (default for dynamically provisioned PersistentVolumes),
                                and Recycle (deprecated). Recycle must be supported
                                by the volume plugin underlying this PersistentVolume.
                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming'
                              type: string
                            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
                            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 is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                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 is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                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
                            storageClassName:
                              description: Name of StorageClass to which this persistent
                                volume belongs. Empty value means that this volume
                                does not belong to any StorageClass.
                              type: string
                            storageos:
                              description: 'StorageOS represents a StorageOS volume
                                that is attached to the kubelet''s host machine and
                                mounted into the pod More info: https://examples.k8s.io/volumes/storageos/README.md'
                              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:
                                    apiVersion:
                                      description: API version of the referent.
                                      type: string
                                    fieldPath:
                                      description: 'If referring to a piece of an
                                        object instead of an entire object, this string
                                        should contain a valid JSON/Go field access
                                        statement, such as desiredState.manifest.containers[2].
                                        For example, if the object reference is to
                                        a container within a pod, this would take
                                        on a value like: "spec.containers{name}" (where
                                        "name" refers to the name of the container
                                        that triggered the event) or if no container
                                        name is specified "spec.containers[2]" (container
                                        with index 2 in this pod). This syntax is
                                        chosen only to have some well-defined way
                                        of referencing a part of an object. TODO:
                                        this design is not final and this field is
                                        subject to change in the future.'
                                      type: string
                                    kind:
                                      description: 'Kind of the referent. More info:
                                        https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                      type: string
                                    namespace:
                                      description: 'Namespace of the referent. More
                                        info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                                      type: string
                                    resourceVersion:
                                      description: 'Specific resourceVersion to which
                                        this reference is made, if any. More info:
                                        https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                                      type: string
                                    uid:
                                      description: 'UID of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                                      type: string
                                  type: object
                                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
                            volumeMode:
                              description: volumeMode defines if a volume is intended
                                to be used with a formatted filesystem or to remain
                                in raw block state. Value of Filesystem is implied
                                when not included in spec. This is a beta feature.
                              type: string
                            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
                          type: object
                        pvc:
                          description: PersistentVolumeClaimSpec describes the common
                            attributes of storage devices and allows a Source for
                            provider-specific attributes
                          properties:
                            accessModes:
                              description: 'AccessModes contains the desired access
                                modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
                              items:
                                type: string
                              type: array
                            dataSource:
                              description: This field requires the VolumeSnapshotDataSource
                                alpha feature gate to be enabled and currently VolumeSnapshot
                                is the only supported data source. If the provisioner
                                can support VolumeSnapshot data source, it will create
                                a new volume and data will be restored to the volume
                                at the same time. If the provisioner does not support
                                VolumeSnapshot data source, volume will not be created
                                and the failure will be reported as an event. In the
                                future, we plan to support more data source types
                                and the behavior of the provisioner may change.
                              properties:
                                apiGroup:
                                  description: APIGroup is the group for the resource
                                    being referenced. If APIGroup is not specified,
                                    the specified Kind must be in the core API group.
                                    For any other third-party types, APIGroup is required.
                                  type: string
                                kind:
                                  description: Kind is the type of resource being
                                    referenced
                                  type: string
                                name:
                                  description: Name is the name of resource being
                                    referenced
                                  type: string
                              required:
                              - kind
                              - name
                              type: object
                            resources:
                              description: 'Resources represents the minimum resources
                                the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                              properties:
                                limits:
                                  additionalProperties:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                    x-kubernetes-int-or-string: true
                                  description: 'Limits describes the maximum amount
                                    of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                                  type: object
                                requests:
                                  additionalProperties:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                    x-kubernetes-int-or-string: true
                                  description: 'Requests describes the minimum amount
                                    of compute resources required. If Requests is
                                    omitted for a container, it defaults to Limits
                                    if that is explicitly specified, otherwise to
                                    an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                                  type: object
                              type: object
                            selector:
                              description: A label query over volumes to consider
                                for binding.
                              properties:
                                matchExpressions:
                                  description: matchExpressions is a list of label
                                    selector requirements. The requirements are ANDed.
                                  items:
                                    description: A label selector requirement is a
                                      selector that contains values, a key, and an
                                      operator that relates the key and values.
                                    properties:
                                      key:
                                        description: key is the label key that the
                                          selector applies to.
                                        type: string
                                      operator:
                                        description: operator represents a key's relationship
                                          to a set of values. Valid operators are
                                          In, NotIn, Exists and DoesNotExist.
                                        type: string
                                      values:
                                        description: values is an array of string
                                          values. If the operator is In or NotIn,
                                          the values array must be non-empty. If the
                                          operator is Exists or DoesNotExist, the
                                          values array must be empty. This array is
                                          replaced during a strategic merge patch.
                                        items:
                                          type: string
                                        type: array
                                    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
                            storageClassName:
                              description: 'Name of the StorageClass required by the
                                claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                              type: string
                            volumeMode:
                              description: volumeMode defines what type of volume
                                is required by the claim. Value of Filesystem is implied
                                when not included in claim spec. This is a beta feature.
                              type: string
                            volumeName:
                              description: VolumeName is the binding reference to
                                the PersistentVolume backing this claim.
                              type: string
                          type: object
                      type: object
                    type: array
                type: object
              deployFrontend:
                type: boolean
              frontendSpec:
                description: AnzoGraphComponentSpec defines the desired state of UnstructuredSpec
                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.
                            properties:
                              nodeSelectorTerms:
                                description: Required. A list of node selector terms.
                                  The terms are ORed.
                                items:
                                  description: A null or empty node selector term
                                    matches no objects. The requirements of them are
                                    ANDed. The TopologySelectorTerm type implements
                                    a subset of the NodeSelectorTerm.
                                  properties:
                                    matchExpressions:
                                      description: A list of node selector requirements
                                        by node's labels.
                                      items:
                                        description: A node selector requirement is
                                          a selector that contains values, a key,
                                          and an operator that relates the key and
                                          values.
                                        properties:
                                          key:
                                            description: The label key that the selector
                                              applies to.
                                            type: string
                                          operator:
                                            description: Represents a key's relationship
                                              to a set of values. Valid operators
                                              are In, NotIn, Exists, DoesNotExist.
                                              Gt, and Lt.
                                            type: string
                                          values:
                                            description: An array of string values.
                                              If the operator is In or NotIn, the
                                              values array must be non-empty. If the
                                              operator is Exists or DoesNotExist,
                                              the values array must be empty. If the
                                              operator is Gt or Lt, the values array
                                              must have a single element, which will
                                              be interpreted as an integer. This array
                                              is replaced during a strategic merge
                                              patch.
                                            items:
                                              type: string
                                            type: array
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                    matchFields:
                                      description: A list of node selector requirements
                                        by node's fields.
                                      items:
                                        description: A node selector requirement is
                                          a selector that contains values, a key,
                                          and an operator that relates the key and
                                          values.
                                        properties:
                                          key:
                                            description: The label key that the selector
                                              applies to.
                                            type: string
                                          operator:
                                            description: Represents a key's relationship
                                              to a set of values. Valid operators
                                              are In, NotIn, Exists, DoesNotExist.
                                              Gt, and Lt.
                                            type: string
                                          values:
                                            description: An array of string values.
                                              If the operator is In or NotIn, the
                                              values array must be non-empty. If the
                                              operator is Exists or DoesNotExist,
                                              the values array must be empty. If the
                                              operator is Gt or Lt, the values array
                                              must have a single element, which will
                                              be interpreted as an integer. This array
                                              is replaced during a strategic merge
                                              patch.
                                            items:
                                              type: string
                                            type: array
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                  type: object
                                type: array
                            required:
                            - nodeSelectorTerms
                            type: object
                        type: object
                      podAffinity:
                        description: Describes pod affinity scheduling rules (e.g.
                          co-locate this pod in the same node, zone, etc. as some
                          other pod(s)).
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            description: The scheduler will prefer to schedule pods
                              to nodes that satisfy the affinity expressions specified
                              by this field, but it may choose a node that violates
                              one or more of the expressions. The node that is most
                              preferred is the one with the greatest sum of weights,
                              i.e. for each node that meets all of the scheduling
                              requirements (resource request, requiredDuringScheduling
                              affinity expressions, etc.), compute a sum by iterating
                              through the elements of this field and adding "weight"
                              to the sum if the node has pods which matches the corresponding
                              podAffinityTerm; the node(s) with the highest sum are
                              the most preferred.
                            items:
                              description: The weights of all of the matched WeightedPodAffinityTerm
                                fields are added per-node to find the most preferred
                                node(s)
                              properties:
                                podAffinityTerm:
                                  description: Required. A pod affinity term, associated
                                    with the corresponding weight.
                                  properties:
                                    labelSelector:
                                      description: A label query over a set of resources,
                                        in this case pods.
                                      properties:
                                        matchExpressions:
                                          description: matchExpressions is a list
                                            of label selector requirements. The requirements
                                            are ANDed.
                                          items:
                                            description: A label selector requirement
                                              is a selector that contains values,
                                              a key, and an operator that relates
                                              the key and values.
                                            properties:
                                              key:
                                                description: key is the label key
                                                  that the selector applies to.
                                                type: string
                                              operator:
                                                description: operator represents a
                                                  key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists
                                                  and DoesNotExist.
                                                type: string
                                              values:
                                                description: values is an array of
                                                  string values. If the operator is
                                                  In or NotIn, the values array must
                                                  be non-empty. If the operator is
                                                  Exists or DoesNotExist, the values
                                                  array must be empty. This array
                                                  is replaced during a strategic merge
                                                  patch.
                                                items:
                                                  type: string
                                                type: array
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: matchLabels is a map of {key,value}
                                            pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions,
                                            whose key field is "key", the operator
                                            is "In", and the values array contains
                                            only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                    namespaces:
                                      description: namespaces specifies which namespaces
                                        the labelSelector applies to (matches against);
                                        null or empty list means "this pod's namespace"
                                      items:
                                        type: string
                                      type: array
                                    topologyKey:
                                      description: This pod should be co-located (affinity)
                                        or not co-located (anti-affinity) with the
                                        pods matching the labelSelector in the specified
                                        namespaces, where co-located is defined as
                                        running on a node whose value of the label
                                        with key topologyKey matches that of any node
                                        on which any of the selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                weight:
                                  description: weight associated with matching the
                                    corresponding podAffinityTerm, in the range 1-100.
                                  format: int32
                                  type: integer
                              required:
                              - podAffinityTerm
                              - weight
                              type: object
                            type: array
                          requiredDuringSchedulingIgnoredDuringExecution:
                            description: If the affinity requirements specified by
                              this field are not met at scheduling time, the pod will
                              not be scheduled onto the node. If the affinity requirements
                              specified by this field cease to be met at some point
                              during pod execution (e.g. due to a pod label update),
                              the system may or may not try to eventually evict the
                              pod from its node. When there are multiple elements,
                              the lists of nodes corresponding to each podAffinityTerm
                              are intersected, i.e. all terms must be satisfied.
                            items:
                              description: Defines a set of pods (namely those matching
                                the labelSelector relative to the given namespace(s))
                                that this pod should be co-located (affinity) or not
                                co-located (anti-affinity) with, where co-located
                                is defined as running on a node whose value of the
                                label with key <topologyKey> matches that of any node
                                on which a pod of the set of pods is running
                              properties:
                                labelSelector:
                                  description: A label query over a set of resources,
                                    in this case pods.
                                  properties:
                                    matchExpressions:
                                      description: matchExpressions is a list of label
                                        selector requirements. The requirements are
                                        ANDed.
                                      items:
                                        description: A label selector requirement
                                          is a selector that contains values, a key,
                                          and an operator that relates the key and
                                          values.
                                        properties:
                                          key:
                                            description: key is the label key that
                                              the selector applies to.
                                            type: string
                                          operator:
                                            description: operator represents a key's
                                              relationship to a set of values. Valid
                                              operators are In, NotIn, Exists and
                                              DoesNotExist.
                                            type: string
                                          values:
                                            description: values is an array of string
                                              values. If the operator is In or NotIn,
                                              the values array must be non-empty.
                                              If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This
                                              array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: matchLabels is a map of {key,value}
                                        pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions,
                                        whose key field is "key", the operator is
                                        "In", and the values array contains only "value".
                                        The requirements are ANDed.
                                      type: object
                                  type: object
                                namespaces:
                                  description: namespaces specifies which namespaces
                                    the labelSelector applies to (matches against);
                                    null or empty list means "this pod's namespace"
                                  items:
                                    type: string
                                  type: array
                                topologyKey:
                                  description: This pod should be co-located (affinity)
                                    or not co-located (anti-affinity) with the pods
                                    matching the labelSelector in the specified namespaces,
                                    where co-located is defined as running on a node
                                    whose value of the label with key topologyKey
                                    matches that of any node on which any of the selected
                                    pods is running. Empty topologyKey is not allowed.
                                  type: string
                              required:
                              - topologyKey
                              type: object
                            type: array
                        type: object
                      podAntiAffinity:
                        description: Describes pod anti-affinity scheduling rules
                          (e.g. avoid putting this pod in the same node, zone, etc.
                          as some other pod(s)).
                        properties:
                          preferredDuringSchedulingIgnoredDuringExecution:
                            description: The scheduler will prefer to schedule pods
                              to nodes that satisfy the anti-affinity expressions
                              specified by this field, but it may choose a node that
                              violates one or more of the expressions. The node that
                              is most preferred is the one with the greatest sum of
                              weights, i.e. for each node that meets all of the scheduling
                              requirements (resource request, requiredDuringScheduling
                              anti-affinity expressions, etc.), compute a sum by iterating
                              through the elements of this field and adding "weight"
                              to the sum if the node has pods which matches the corresponding
                              podAffinityTerm; the node(s) with the highest sum are
                              the most preferred.
                            items:
                              description: The weights of all of the matched WeightedPodAffinityTerm
                                fields are added per-node to find the most preferred
                                node(s)
                              properties:
                                podAffinityTerm:
                                  description: Required. A pod affinity term, associated
                                    with the corresponding weight.
                                  properties:
                                    labelSelector:
                                      description: A label query over a set of resources,
                                        in this case pods.
                                      properties:
                                        matchExpressions:
                                          description: matchExpressions is a list
                                            of label selector requirements. The requirements
                                            are ANDed.
                                          items:
                                            description: A label selector requirement
                                              is a selector that contains values,
                                              a key, and an operator that relates
                                              the key and values.
                                            properties:
                                              key:
                                                description: key is the label key
                                                  that the selector applies to.
                                                type: string
                                              operator:
                                                description: operator represents a
                                                  key's relationship to a set of values.
                                                  Valid operators are In, NotIn, Exists
                                                  and DoesNotExist.
                                                type: string
                                              values:
                                                description: values is an array of
                                                  string values. If the operator is
                                                  In or NotIn, the values array must
                                                  be non-empty. If the operator is
                                                  Exists or DoesNotExist, the values
                                                  array must be empty. This array
                                                  is replaced during a strategic merge
                                                  patch.
                                                items:
                                                  type: string
                                                type: array
                                            required:
                                            - key
                                            - operator
                                            type: object
                                          type: array
                                        matchLabels:
                                          additionalProperties:
                                            type: string
                                          description: matchLabels is a map of {key,value}
                                            pairs. A single {key,value} in the matchLabels
                                            map is equivalent to an element of matchExpressions,
                                            whose key field is "key", the operator
                                            is "In", and the values array contains
                                            only "value". The requirements are ANDed.
                                          type: object
                                      type: object
                                    namespaces:
                                      description: namespaces specifies which namespaces
                                        the labelSelector applies to (matches against);
                                        null or empty list means "this pod's namespace"
                                      items:
                                        type: string
                                      type: array
                                    topologyKey:
                                      description: This pod should be co-located (affinity)
                                        or not co-located (anti-affinity) with the
                                        pods matching the labelSelector in the specified
                                        namespaces, where co-located is defined as
                                        running on a node whose value of the label
                                        with key topologyKey matches that of any node
                                        on which any of the selected pods is running.
                                        Empty topologyKey is not allowed.
                                      type: string
                                  required:
                                  - topologyKey
                                  type: object
                                weight:
                                  description: weight associated with matching the
                                    corresponding podAffinityTerm, in the range 1-100.
                                  format: int32
                                  type: integer
                              required:
                              - podAffinityTerm
                              - weight
                              type: object
                            type: array
                          requiredDuringSchedulingIgnoredDuringExecution:
                            description: If the anti-affinity requirements specified
                              by this field are not met at scheduling time, the pod
                              will not be scheduled onto the node. If the anti-affinity
                              requirements specified by this field cease to be met
                              at some point during pod execution (e.g. due to a pod
                              label update), the system may or may not try to eventually
                              evict the pod from its node. When there are multiple
                              elements, the lists of nodes corresponding to each podAffinityTerm
                              are intersected, i.e. all terms must be satisfied.
                            items:
                              description: Defines a set of pods (namely those matching
                                the labelSelector relative to the given namespace(s))
                                that this pod should be co-located (affinity) or not
                                co-located (anti-affinity) with, where co-located
                                is defined as running on a node whose value of the
                                label with key <topologyKey> matches that of any node
                                on which a pod of the set of pods is running
                              properties:
                                labelSelector:
                                  description: A label query over a set of resources,
                                    in this case pods.
                                  properties:
                                    matchExpressions:
                                      description: matchExpressions is a list of label
                                        selector requirements. The requirements are
                                        ANDed.
                                      items:
                                        description: A label selector requirement
                                          is a selector that contains values, a key,
                                          and an operator that relates the key and
                                          values.
                                        properties:
                                          key:
                                            description: key is the label key that
                                              the selector applies to.
                                            type: string
                                          operator:
                                            description: operator represents a key's
                                              relationship to a set of values. Valid
                                              operators are In, NotIn, Exists and
                                              DoesNotExist.
                                            type: string
                                          values:
                                            description: values is an array of string
                                              values. If the operator is In or NotIn,
                                              the values array must be non-empty.
                                              If the operator is Exists or DoesNotExist,
                                              the values array must be empty. This
                                              array is replaced during a strategic
                                              merge patch.
                                            items:
                                              type: string
                                            type: array
                                        required:
                                        - key
                                        - operator
                                        type: object
                                      type: array
                                    matchLabels:
                                      additionalProperties:
                                        type: string
                                      description: matchLabels is a map of {key,value}
                                        pairs. A single {key,value} in the matchLabels
                                        map is equivalent to an element of matchExpressions,
                                        whose key field is "key", the operator is
                                        "In", and the values array contains only "value".
                                        The requirements are ANDed.
                                      type: object
                                  type: object
                                namespaces:
                                  description: namespaces specifies which namespaces
                                    the labelSelector applies to (matches against);
                                    null or empty list means "this pod's namespace"
                                  items:
                                    type: string
                                  type: array
                                topologyKey:
                                  description: This pod should be co-located (affinity)
                                    or not co-located (anti-affinity) with the pods
                                    matching the labelSelector in the specified namespaces,
                                    where co-located is defined as running on a node
                                    whose value of the label with key topologyKey
                                    matches that of any node on which any of the selected
                                    pods is running. Empty topologyKey is not allowed.
                                  type: string
                              required:
                              - topologyKey
                              type: object
                            type: array
                        type: object
                    type: object
                  image:
                    description: ImageSpec Defines the docker container image to be
                      used
                    properties:
                      name:
                        type: string
                      pullPolicy:
                        description: PullPolicy describes a policy for if/when to
                          pull a container image
                        type: string
                      pullSecrets:
                        items:
                          type: string
                        type: array
                      registry:
                        type: string
                      tag:
                        type: string
                    type: object
                  resources:
                    description: ResourceRequirements describes the compute resource
                      requirements.
                    properties:
                      limits:
                        additionalProperties:
                          anyOf:
                          - type: integer
                          - type: string
                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                          x-kubernetes-int-or-string: true
                        description: 'Limits describes the maximum amount of compute
                          resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                        type: object
                      requests:
                        additionalProperties:
                          anyOf:
                          - type: integer
                          - type: string
                          pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                          x-kubernetes-int-or-string: true
                        description: 'Requests describes the minimum amount of compute
                          resources required. If Requests is omitted for a container,
                          it defaults to Limits if that is explicitly specified, otherwise
                          to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                        type: object
                    type: object
                  service:
                    description: Service defines the properties to configure Anzograph
                      service
                    properties:
                      metadata:
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                      spec:
                        description: ServiceSpec describes the attributes that a user
                          creates on a service.
                        properties:
                          clusterIP:
                            description: 'clusterIP is the IP address of the service
                              and is usually assigned randomly by the master. If an
                              address is specified manually and is not in use by others,
                              it will be allocated to the service; otherwise, creation
                              of the service will fail. This field can not be changed
                              through updates. Valid values are "None", empty string
                              (""), or a valid IP address. "None" can be specified
                              for headless services when proxying is not required.
                              Only applies to types ClusterIP, NodePort, and LoadBalancer.
                              Ignored if type is ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies'
                            type: string
                          externalIPs:
                            description: externalIPs is a list of IP addresses for
                              which nodes in the cluster will also accept traffic
                              for this service.  These IPs are not managed by Kubernetes.  The
                              user is responsible for ensuring that traffic arrives
                              at a node with this IP.  A common example is external
                              load-balancers that are not part of the Kubernetes system.
                            items:
                              type: string
                            type: array
                          externalName:
                            description: externalName is the external reference that
                              kubedns or equivalent will return as a CNAME record
                              for this service. No proxying will be involved. Must
                              be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123)
                              and requires Type to be ExternalName.
                            type: string
                          externalTrafficPolicy:
                            description: externalTrafficPolicy denotes if this Service
                              desires to route external traffic to node-local or cluster-wide
                              endpoints. "Local" preserves the client source IP and
                              avoids a second hop for LoadBalancer and Nodeport type
                              services, but risks potentially imbalanced traffic spreading.
                              "Cluster" obscures the client source IP and may cause
                              a second hop to another node, but should have good overall
                              load-spreading.
                            type: string
                          healthCheckNodePort:
                            description: healthCheckNodePort specifies the healthcheck
                              nodePort for the service. If not specified, HealthCheckNodePort
                              is created by the service api backend with the allocated
                              nodePort. Will use user-specified nodePort value if
                              specified by the client. Only effects when Type is set
                              to LoadBalancer and ExternalTrafficPolicy is set to
                              Local.
                            format: int32
                            type: integer
                          ipFamily:
                            description: ipFamily specifies whether this Service has
                              a preference for a particular IP family (e.g. IPv4 vs.
                              IPv6).  If a specific IP family is requested, the clusterIP
                              field will be allocated from that family, if it is available
                              in the cluster.  If no IP family is requested, the cluster's
                              primary IP family will be used. Other IP fields (loadBalancerIP,
                              loadBalancerSourceRanges, externalIPs) and controllers
                              which allocate external load-balancers should use the
                              same IP family.  Endpoints for this Service will be
                              of this family.  This field is immutable after creation.
                              Assigning a ServiceIPFamily not available in the cluster
                              (e.g. IPv6 in IPv4 only cluster) is an error condition
                              and will fail during clusterIP assignment.
                            type: string
                          loadBalancerIP:
                            description: 'Only applies to Service Type: LoadBalancer
                              LoadBalancer will get created with the IP specified
                              in this field. This feature depends on whether the underlying
                              cloud-provider supports specifying the loadBalancerIP
                              when a load balancer is created. This field will be
                              ignored if the cloud-provider does not support the feature.'
                            type: string
                          loadBalancerSourceRanges:
                            description: 'If specified and supported by the platform,
                              this will restrict traffic through the cloud-provider
                              load-balancer will be restricted to the specified client
                              IPs. This field will be ignored if the cloud-provider
                              does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/'
                            items:
                              type: string
                            type: array
                          ports:
                            description: 'The list of ports that are exposed by this
                              service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies'
                            items:
                              description: ServicePort contains information on service's
                                port.
                              properties:
                                name:
                                  description: The name of this port within the service.
                                    This must be a DNS_LABEL. All ports within a ServiceSpec
                                    must have unique names. When considering the endpoints
                                    for a Service, this must match the 'name' field
                                    in the EndpointPort. Optional if only one ServicePort
                                    is defined on this service.
                                  type: string
                                nodePort:
                                  description: 'The port on each node on which this
                                    service is exposed when type=NodePort or LoadBalancer.
                                    Usually assigned by the system. If specified,
                                    it will be allocated to the service if unused
                                    or else creation of the service will fail. Default
                                    is to auto-allocate a port if the ServiceType
                                    of this Service requires one. More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport'
                                  format: int32
                                  type: integer
                                port:
                                  description: The port that will be exposed by this
                                    service.
                                  format: int32
                                  type: integer
                                protocol:
                                  description: The IP protocol for this port. Supports
                                    "TCP", "UDP", and "SCTP". Default is TCP.
                                  type: string
                                targetPort:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  description: 'Number or name of the port to access
                                    on the pods targeted by the service. Number must
                                    be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
                                    If this is a string, it will be looked up as a
                                    named port in the target Pod''s container ports.
                                    If this is not specified, the value of the ''port''
                                    field is used (an identity map). This field is
                                    ignored for services with clusterIP=None, and
                                    should be omitted or set equal to the ''port''
                                    field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service'
                                  x-kubernetes-int-or-string: true
                              required:
                              - port
                              - protocol
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - port
                            - protocol
                            x-kubernetes-list-type: map
                          publishNotReadyAddresses:
                            description: publishNotReadyAddresses, when set to true,
                              indicates that DNS implementations must publish the
                              notReadyAddresses of subsets for the Endpoints associated
                              with the Service. The default value is false. The primary
                              use case for setting this field is to use a StatefulSet's
                              Headless Service to propagate SRV records for its Pods
                              without respect to their readiness for purpose of peer
                              discovery.
                            type: boolean
                          selector:
                            additionalProperties:
                              type: string
                            description: 'Route service traffic to pods with label
                              keys and values matching this selector. If empty or
                              not present, the service is assumed to have an external
                              process managing its endpoints, which Kubernetes will
                              not modify. Only applies to types ClusterIP, NodePort,
                              and LoadBalancer. Ignored if type is ExternalName. More
                              info: https://kubernetes.io/docs/concepts/services-networking/service/'
                            type: object
                          sessionAffinity:
                            description: 'Supports "ClientIP" and "None". Used to
                              maintain session affinity. Enable client IP based session
                              affinity. Must be ClientIP or None. Defaults to None.
                              More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies'
                            type: string
                          sessionAffinityConfig:
                            description: sessionAffinityConfig contains the configurations
                              of session affinity.
                            properties:
                              clientIP:
                                description: clientIP contains the configurations
                                  of Client IP based session affinity.
                                properties:
                                  timeoutSeconds:
                                    description: timeoutSeconds specifies the seconds
                                      of ClientIP type session sticky time. The value
                                      must be >0 && <=86400(for 1 day) if ServiceAffinity
                                      == "ClientIP". Default value is 10800(for 3
                                      hours).
                                    format: int32
                                    type: integer
                                type: object
                            type: object
                          type:
                            description: 'type determines how the Service is exposed.
                              Defaults to ClusterIP. Valid options are ExternalName,
                              ClusterIP, NodePort, and LoadBalancer. "ExternalName"
                              maps to the specified externalName. "ClusterIP" allocates
                              a cluster-internal IP address for load-balancing to
                              endpoints. Endpoints are determined by the selector
                              or if that is not specified, by manual construction
                              of an Endpoints object. If clusterIP is "None", no virtual
                              IP is allocated and the endpoints are published as a
                              set of endpoints rather than a stable IP. "NodePort"
                              builds on ClusterIP and allocates a port on every node
                              which routes to the clusterIP. "LoadBalancer" builds
                              on NodePort and creates an external load-balancer (if
                              supported in the current cloud) which routes to the
                              clusterIP. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types'
                            type: string
                        type: object
                    type: object
                  size:
                    format: int32
                    type: integer
                  tolerations:
                    items:
                      description: The pod this Toleration is attached to tolerates
                        any taint that matches the triple <key,value,effect> using
                        the matching operator <operator>.
                      properties:
                        effect:
                          description: Effect indicates the taint effect to match.
                            Empty means match all taint effects. When specified, allowed
                            values are NoSchedule, PreferNoSchedule and NoExecute.
                          type: string
                        key:
                          description: Key is the taint key that the toleration applies
                            to. Empty means match all taint keys. If the key is empty,
                            operator must be Exists; this combination means to match
                            all values and all keys.
                          type: string
                        operator:
                          description: Operator represents a key's relationship to
                            the value. Valid operators are Exists and Equal. Defaults
                            to Equal. Exists is equivalent to wildcard for value,
                            so that a pod can tolerate all taints of a particular
                            category.
                          type: string
                        tolerationSeconds:
                          description: TolerationSeconds represents the period of
                            time the toleration (which must be of effect NoExecute,
                            otherwise this field is ignored) tolerates the taint.
                            By default, it is not set, which means tolerate the taint
                            forever (do not evict). Zero and negative values will
                            be treated as 0 (evict immediately) by the system.
                          format: int64
                          type: integer
                        value:
                          description: Value is the taint value the toleration matches
                            to. If the operator is Exists, the value should be empty,
                            otherwise just a regular string.
                          type: string
                      type: object
                    type: array
                  volumes:
                    items:
                      description: VolumeSpec defines the volume spec for NFS.
                      properties:
                        mountPath:
                          type: string
                        name:
                          type: string
                        pv:
                          description: PersistentVolumeSpec is the specification of
                            a persistent volume.
                          properties:
                            accessModes:
                              description: 'AccessModes contains all ways the volume
                                can be mounted. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes'
                              items:
                                type: string
                              type: array
                            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
                                secretNamespace:
                                  description: the namespace of the secret that contains
                                    Azure Storage Account Name and Key default is
                                    the same as the Pod
                                  type: string
                                shareName:
                                  description: Share Name
                                  type: string
                              required:
                              - secretName
                              - shareName
                              type: object
                            capacity:
                              additionalProperties:
                                anyOf:
                                - type: integer
                                - type: string
                                pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                x-kubernetes-int-or-string: true
                              description: 'A description of the persistent volume''s
                                resources and capacity. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#capacity'
                              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 is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                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 is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                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
                            claimRef:
                              description: 'ClaimRef is part of a bi-directional binding
                                between PersistentVolume and PersistentVolumeClaim.
                                Expected to be non-nil when bound. claim.VolumeName
                                is the authoritative bind between PV and PVC. More
                                info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding'
                              properties:
                                apiVersion:
                                  description: API version of the referent.
                                  type: string
                                fieldPath:
                                  description: 'If referring to a piece of an object
                                    instead of an entire object, this string should
                                    contain a valid JSON/Go field access statement,
                                    such as desiredState.manifest.containers[2]. For
                                    example, if the object reference is to a container
                                    within a pod, this would take on a value like:
                                    "spec.containers{name}" (where "name" refers to
                                    the name of the container that triggered the event)
                                    or if no container name is specified "spec.containers[2]"
                                    (container with index 2 in this pod). This syntax
                                    is chosen only to have some well-defined way of
                                    referencing a part of an object. TODO: this design
                                    is not final and this field is subject to change
                                    in the future.'
                                  type: string
                                kind:
                                  description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                                  type: string
                                name:
                                  description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                  type: string
                                namespace:
                                  description: 'Namespace of the referent. More info:
                                    https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                                  type: string
                                resourceVersion:
                                  description: 'Specific resourceVersion to which
                                    this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                                  type: string
                                uid:
                                  description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                                  type: string
                              type: object
                            csi:
                              description: CSI represents storage that is handled
                                by an external CSI driver (Beta feature).
                              properties:
                                controllerExpandSecretRef:
                                  description: ControllerExpandSecretRef is a reference
                                    to the secret object containing sensitive information
                                    to pass to the CSI driver to complete the CSI
                                    ControllerExpandVolume call. This is an alpha
                                    field and requires enabling ExpandCSIVolumes feature
                                    gate. This field is optional, and may be empty
                                    if no secret is required. If the secret object
                                    contains more than one secret, all secrets are
                                    passed.
                                  properties:
                                    name:
                                      description: Name is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                controllerPublishSecretRef:
                                  description: ControllerPublishSecretRef is a reference
                                    to the secret object containing sensitive information
                                    to pass to the CSI driver to complete the CSI
                                    ControllerPublishVolume and ControllerUnpublishVolume
                                    calls. This field is optional, and may be empty
                                    if no secret is required. If the secret object
                                    contains more than one secret, all secrets are
                                    passed.
                                  properties:
                                    name:
                                      description: Name is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                driver:
                                  description: Driver is the name of the driver to
                                    use for this volume. Required.
                                  type: string
                                fsType:
                                  description: Filesystem type to mount. Must be a
                                    filesystem type supported by the host operating
                                    system. Ex. "ext4", "xfs", "ntfs".
                                  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 secrets are passed.
                                  properties:
                                    name:
                                      description: Name is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                nodeStageSecretRef:
                                  description: NodeStageSecretRef is a reference to
                                    the secret object containing sensitive information
                                    to pass to the CSI driver to complete the CSI
                                    NodeStageVolume and NodeStageVolume and NodeUnstageVolume
                                    calls. This field is optional, and may be empty
                                    if no secret is required. If the secret object
                                    contains more than one secret, all secrets are
                                    passed.
                                  properties:
                                    name:
                                      description: Name is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                readOnly:
                                  description: 'Optional: The value to pass to ControllerPublishVolumeRequest.
                                    Defaults to false (read/write).'
                                  type: boolean
                                volumeAttributes:
                                  additionalProperties:
                                    type: string
                                  description: Attributes of the volume to publish.
                                  type: object
                                volumeHandle:
                                  description: VolumeHandle is the unique volume name
                                    returned by the CSI volume plugin’s CreateVolume
                                    to refer to the volume on all subsequent calls.
                                    Required.
                                  type: string
                              required:
                              - driver
                              - volumeHandle
                              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 is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                              required:
                              - driver
                              type: object
                            flocker:
                              description: Flocker represents a Flocker volume attached
                                to a kubelet's host machine and exposed to the pod
                                for its usage. 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. Provisioned by an admin.
                                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
                            glusterfs:
                              description: 'Glusterfs represents a Glusterfs volume
                                that is attached to a host and exposed to the pod.
                                Provisioned by an admin. 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
                                endpointsNamespace:
                                  description: 'EndpointsNamespace is the namespace
                                    that contains Glusterfs endpoint. If this field
                                    is empty, the EndpointNamespace defaults to the
                                    same namespace as the bound PVC. 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 directory on the
                                host. Provisioned by a developer or tester. This is
                                useful for single-node development and testing only!
                                On-host storage is not supported in any way and WILL
                                NOT WORK in a multi-node cluster. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
                              properties:
                                path:
                                  description: 'Path of the directory on the host.
                                    If the path is a symlink, it will follow the link
                                    to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
                                  type: string
                                type:
                                  description: 'Type for HostPath Volume Defaults
                                    to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
                                  type: string
                              required:
                              - path
                              type: object
                            iscsi:
                              description: ISCSI represents an ISCSI Disk resource
                                that is attached to a kubelet's host machine and then
                                exposed to the pod. Provisioned by an admin.
                              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 is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                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
                            local:
                              description: Local represents directly-attached storage
                                with node affinity
                              properties:
                                fsType:
                                  description: Filesystem type to mount. It applies
                                    only when the Path is a block device. Must be
                                    a filesystem type supported by the host operating
                                    system. Ex. "ext4", "xfs", "ntfs". The default
                                    value is to auto-select a fileystem if unspecified.
                                  type: string
                                path:
                                  description: The full path to the volume on the
                                    node. It can be either a directory or block device
                                    (disk, partition, ...).
                                  type: string
                              required:
                              - path
                              type: object
                            mountOptions:
                              description: 'A list of mount options, e.g. ["ro", "soft"].
                                Not validated - mount will simply fail if one is invalid.
                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options'
                              items:
                                type: string
                              type: array
                            nfs:
                              description: 'NFS represents an NFS mount on the host.
                                Provisioned by an admin. 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
                            nodeAffinity:
                              description: NodeAffinity defines constraints that limit
                                what nodes this volume can be accessed from. This
                                field influences the scheduling of pods that use this
                                volume.
                              properties:
                                required:
                                  description: Required specifies hard node constraints
                                    that must be met.
                                  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
                            persistentVolumeReclaimPolicy:
                              description: 'What happens to a persistent volume when
                                released from its claim. Valid options are Retain
                                (default for manually created PersistentVolumes),
                                Delete (default for dynamically provisioned PersistentVolumes),
                                and Recycle (deprecated). Recycle must be supported
                                by the volume plugin underlying this PersistentVolume.
                                More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming'
                              type: string
                            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
                            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 is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                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 is unique within a namespace
                                        to reference a secret resource.
                                      type: string
                                    namespace:
                                      description: Namespace defines the space within
                                        which the secret name must be unique.
                                      type: string
                                  type: object
                                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
                            storageClassName:
                              description: Name of StorageClass to which this persistent
                                volume belongs. Empty value means that this volume
                                does not belong to any StorageClass.
                              type: string
                            storageos:
                              description: 'StorageOS represents a StorageOS volume
                                that is attached to the kubelet''s host machine and
                                mounted into the pod More info: https://examples.k8s.io/volumes/storageos/README.md'
                              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:
                                    apiVersion:
                                      description: API version of the referent.
                                      type: string
                                    fieldPath:
                                      description: 'If referring to a piece of an
                                        object instead of an entire object, this string
                                        should contain a valid JSON/Go field access
                                        statement, such as desiredState.manifest.containers[2].
                                        For example, if the object reference is to
                                        a container within a pod, this would take
                                        on a value like: "spec.containers{name}" (where
                                        "name" refers to the name of the container
                                        that triggered the event) or if no container
                                        name is specified "spec.containers[2]" (container
                                        with index 2 in this pod). This syntax is
                                        chosen only to have some well-defined way
                                        of referencing a part of an object. TODO:
                                        this design is not final and this field is
                                        subject to change in the future.'
                                      type: string
                                    kind:
                                      description: 'Kind of the referent. More info:
                                        https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                                      type: string
                                    name:
                                      description: 'Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                      type: string
                                    namespace:
                                      description: 'Namespace of the referent. More
                                        info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                                      type: string
                                    resourceVersion:
                                      description: 'Specific resourceVersion to which
                                        this reference is made, if any. More info:
                                        https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                                      type: string
                                    uid:
                                      description: 'UID of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                                      type: string
                                  type: object
                                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
                            volumeMode:
                              description: volumeMode defines if a volume is intended
                                to be used with a formatted filesystem or to remain
                                in raw block state. Value of Filesystem is implied
                                when not included in spec. This is a beta feature.
                              type: string
                            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
                          type: object
                        pvc:
                          description: PersistentVolumeClaimSpec describes the common
                            attributes of storage devices and allows a Source for
                            provider-specific attributes
                          properties:
                            accessModes:
                              description: 'AccessModes contains the desired access
                                modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
                              items:
                                type: string
                              type: array
                            dataSource:
                              description: This field requires the VolumeSnapshotDataSource
                                alpha feature gate to be enabled and currently VolumeSnapshot
                                is the only supported data source. If the provisioner
                                can support VolumeSnapshot data source, it will create
                                a new volume and data will be restored to the volume
                                at the same time. If the provisioner does not support
                                VolumeSnapshot data source, volume will not be created
                                and the failure will be reported as an event. In the
                                future, we plan to support more data source types
                                and the behavior of the provisioner may change.
                              properties:
                                apiGroup:
                                  description: APIGroup is the group for the resource
                                    being referenced. If APIGroup is not specified,
                                    the specified Kind must be in the core API group.
                                    For any other third-party types, APIGroup is required.
                                  type: string
                                kind:
                                  description: Kind is the type of resource being
                                    referenced
                                  type: string
                                name:
                                  description: Name is the name of resource being
                                    referenced
                                  type: string
                              required:
                              - kind
                              - name
                              type: object
                            resources:
                              description: 'Resources represents the minimum resources
                                the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                              properties:
                                limits:
                                  additionalProperties:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                    x-kubernetes-int-or-string: true
                                  description: 'Limits describes the maximum amount
                                    of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                                  type: object
                                requests:
                                  additionalProperties:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                    x-kubernetes-int-or-string: true
                                  description: 'Requests describes the minimum amount
                                    of compute resources required. If Requests is
                                    omitted for a container, it defaults to Limits
                                    if that is explicitly specified, otherwise to
                                    an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
                                  type: object
                              type: object
                            selector:
                              description: A label query over volumes to consider
                                for binding.
                              properties:
                                matchExpressions:
                                  description: matchExpressions is a list of label
                                    selector requirements. The requirements are ANDed.
                                  items:
                                    description: A label selector requirement is a
                                      selector that contains values, a key, and an
                                      operator that relates the key and values.
                                    properties:
                                      key:
                                        description: key is the label key that the
                                          selector applies to.
                                        type: string
                                      operator:
                                        description: operator represents a key's relationship
                                          to a set of values. Valid operators are
                                          In, NotIn, Exists and DoesNotExist.
                                        type: string
                                      values:
                                        description: values is an array of string
                                          values. If the operator is In or NotIn,
                                          the values array must be non-empty. If the
                                          operator is Exists or DoesNotExist, the
                                          values array must be empty. This array is
                                          replaced during a strategic merge patch.
                                        items:
                                          type: string
                                        type: array
                                    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
                            storageClassName:
                              description: 'Name of the StorageClass required by the
                                claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                              type: string
                            volumeMode:
                              description: volumeMode defines what type of volume
                                is required by the claim. Value of Filesystem is implied
                                when not included in claim spec. This is a beta feature.
                              type: string
                            volumeName:
                              description: VolumeName is the binding reference to
                                the PersistentVolume backing this claim.
                              type: string
                          type: object
                      type: object
                    type: array
                type: object
              grpcCredentials:
                type: string
              keystoreCredentials:
                type: string
              license:
                type: string
              serviceAccountName:
                type: string
              uiCredentials:
                type: string
              uiUserCerts:
                description: UIUserCertsSpec Defines a set of certificates to be associated
                  to UI
                properties:
                  uiUserCACert:
                    type: string
                  uiUserServiceCert:
                    type: string
                  uiUserServiceKey:
                    type: string
                type: object
              version:
                type: string
            type: object
          status:
            description: AnzoGraphStatus defines the observed state of AnzoGraph
            properties:
              message:
                type: string
              phase:
                description: AnzoGraphPhase is the phase AnzoGraph is in from the
                  controller point of view.
                type: string
              readyReplicas:
                format: int32
                type: integer
              reason:
                type: string
            required:
            - message
            - phase
            - readyReplicas
            - reason
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
