kind: CustomResourceDefinition
apiVersion: apiextensions.k8s.io/v1
metadata:
  name: jenkins.jenkins.io
spec:
  group: jenkins.io
  names:
    plural: jenkins
    singular: jenkins
    kind: Jenkins
    listKind: JenkinsList
  scope: Namespaced
  versions:
    - name: v1alpha2
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          description: Jenkins is the Schema for the jenkins API
          type: object
          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: Spec defines the desired state of the Jenkins
              type: object
              properties:
                master:
                  description: >-
                    Master represents Jenkins master pod properties and Jenkins
                    plugins. Every single change here requires a pod restart.
                  type: object
                  properties:
                    nodeSelector:
                      description: >-
                        NodeSelector is a selector which must be true for the
                        pod to fit on a node. Selector which must match a node's
                        labels for the pod to be scheduled on that node. More
                        info:
                        https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
                      type: object
                      additionalProperties:
                        type: string
                    masterAnnotations:
                      description: >-
                        Annotations is an unstructured key value map stored with
                        a resource that may be set by external tools to store
                        and retrieve arbitrary metadata. They are not queryable
                        and should be preserved when modifying objects. More
                        info: http://kubernetes.io/docs/user-guide/annotations
                        Deprecated: will be removed in the future, please use
                        Annotations(annotations)
                      type: object
                      additionalProperties:
                        type: string
                    imagePullSecrets:
                      description: >-
                        ImagePullSecrets is an optional list of references to
                        secrets in the same namespace to use for pulling any of
                        the images used by this PodSpec. If specified, these
                        secrets will be passed to individual puller
                        implementations for them to use. For example, in the
                        case of docker, only DockerConfig type secrets are
                        honored. More info:
                        https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
                      type: array
                      items:
                        description: >-
                          LocalObjectReference contains enough information to
                          let you locate the referenced object inside the same
                          namespace.
                        type: object
                        properties:
                          name:
                            description: >-
                              Name of the referent. More info:
                              https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                              TODO: Add other useful fields. apiVersion, kind,
                              uid?
                            type: string
                    annotations:
                      description: >-
                        Annotations is an unstructured key value map stored with
                        a resource that may be set by external tools to store
                        and retrieve arbitrary metadata. They are not queryable
                        and should be preserved when modifying objects. More
                        info: http://kubernetes.io/docs/user-guide/annotations
                      type: object
                      additionalProperties:
                        type: string
                    securityContext:
                      description: >-
                        SecurityContext that applies to all the containers of
                        the Jenkins Master. As per kubernetes specification, it
                        can be overridden for each container individually.
                        Defaults to: runAsUser: 1000 fsGroup: 1000
                      type: object
                      properties:
                        fsGroup:
                          description: >-
                            A special supplemental group that applies to all
                            containers in a pod. Some volume types allow the
                            Kubelet to change the ownership of that volume to be
                            owned by the pod: 
                             1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- 
                             If unset, the Kubelet will not modify the ownership and permissions of any volume.
                          type: integer
                          format: int64
                        runAsGroup:
                          description: >-
                            The GID to run the entrypoint of the container
                            process. Uses runtime default if unset. May also be
                            set in SecurityContext.  If set in both
                            SecurityContext and PodSecurityContext, the value
                            specified in SecurityContext takes precedence for
                            that container.
                          type: integer
                          format: int64
                        runAsNonRoot:
                          description: >-
                            Indicates that the container must run as a non-root
                            user. If true, the Kubelet will validate the image
                            at runtime to ensure that it does not run as UID 0
                            (root) and fail to start the container if it does.
                            If unset or false, no such validation will be
                            performed. May also be set in SecurityContext.  If
                            set in both SecurityContext and PodSecurityContext,
                            the value specified in SecurityContext takes
                            precedence.
                          type: boolean
                        runAsUser:
                          description: >-
                            The UID to run the entrypoint of the container
                            process. Defaults to user specified in image
                            metadata if unspecified. May also be set in
                            SecurityContext.  If set in both SecurityContext and
                            PodSecurityContext, the value specified in
                            SecurityContext takes precedence for that container.
                          type: integer
                          format: int64
                        seLinuxOptions:
                          description: >-
                            The SELinux context to be applied to all containers.
                            If unspecified, the container runtime will allocate
                            a random SELinux context for each container.  May
                            also be set in SecurityContext.  If set in both
                            SecurityContext and PodSecurityContext, the value
                            specified in SecurityContext takes precedence for
                            that container.
                          type: object
                          properties:
                            level:
                              description: >-
                                Level is SELinux level label that applies to the
                                container.
                              type: string
                            role:
                              description: >-
                                Role is a SELinux role label that applies to the
                                container.
                              type: string
                            type:
                              description: >-
                                Type is a SELinux type label that applies to the
                                container.
                              type: string
                            user:
                              description: >-
                                User is a SELinux user label that applies to the
                                container.
                              type: string
                        supplementalGroups:
                          description: >-
                            A list of groups applied to the first process run in
                            each container, in addition to the container's
                            primary GID.  If unspecified, no groups will be
                            added to any container.
                          type: array
                          items:
                            type: integer
                            format: int64
                        sysctls:
                          description: >-
                            Sysctls hold a list of namespaced sysctls used for
                            the pod. Pods with unsupported sysctls (by the
                            container runtime) might fail to launch.
                          type: array
                          items:
                            description: Sysctl defines a kernel parameter to be set
                            type: object
                            required:
                              - name
                              - value
                            properties:
                              name:
                                description: Name of a property to set
                                type: string
                              value:
                                description: Value of a property to set
                                type: string
                        windowsOptions:
                          description: >-
                            The Windows specific settings applied to all
                            containers. If unspecified, the options within a
                            container's SecurityContext will be used. If set in
                            both SecurityContext and PodSecurityContext, the
                            value specified in SecurityContext takes precedence.
                          type: object
                          properties:
                            gmsaCredentialSpec:
                              description: >-
                                GMSACredentialSpec is where the GMSA admission
                                webhook
                                (https://github.com/kubernetes-sigs/windows-gmsa)
                                inlines the contents of the GMSA credential spec
                                named by the GMSACredentialSpecName field. This
                                field is alpha-level and is only honored by
                                servers that enable the WindowsGMSA feature
                                flag.
                              type: string
                            gmsaCredentialSpecName:
                              description: >-
                                GMSACredentialSpecName is the name of the GMSA
                                credential spec to use. This field is
                                alpha-level and is only honored by servers that
                                enable the WindowsGMSA feature flag.
                              type: string
                            runAsUserName:
                              description: >-
                                The UserName in Windows to run the entrypoint of
                                the container process. Defaults to the user
                                specified in image metadata if unspecified. May
                                also be set in PodSecurityContext. If set in
                                both SecurityContext and PodSecurityContext, the
                                value specified in SecurityContext takes
                                precedence. This field is alpha-level and it is
                                only honored by servers that enable the
                                WindowsRunAsUserName feature flag.
                              type: string
                    basePlugins:
                      description: >-
                        BasePlugins contains plugins required by operator
                        Defaults to : - name: kubernetes version: 1.15.7 - name:
                        workflow-job version: "2.39" - name: workflow-aggregator
                        version: "2.6" - name: git version: 3.10.0 - name:
                        job-dsl version: "1.74" - name: configuration-as-code
                        version: "1.19" - name: kubernetes-credentials-provider
                        version: 0.12.1
                      type: array
                      items:
                        description: Plugin defines Jenkins plugin.
                        type: object
                        required:
                          - name
                          - version
                        properties:
                          downloadURL:
                            description: >-
                              DownloadURL is the custom url from where plugin
                              has to be downloaded.
                            type: string
                          name:
                            description: Name is the name of Jenkins plugin
                            type: string
                          version:
                            description: Version is the version of Jenkins plugin
                            type: string
                    containers:
                      description: >-
                        List of containers belonging to the pod. Containers
                        cannot currently be added or removed. There must be at
                        least one container in a Pod. Defaults to: - image:
                        jenkins/jenkins:lts   imagePullPolicy: Always  
                        livenessProbe:     failureThreshold: 12    
                        httpGet:       path: /login       port: http      
                        scheme: HTTP     initialDelaySeconds: 80    
                        periodSeconds: 10     successThreshold: 1    
                        timeoutSeconds: 5   name: jenkins-master  
                        readinessProbe:     failureThreshold: 3    
                        httpGet:       path: /login       port: http      
                        scheme: HTTP     initialDelaySeconds: 30    
                        periodSeconds: 10     successThreshold: 1    
                        timeoutSeconds: 1   resources:     limits:       cpu:
                        1500m       memory: 3Gi     requests:       cpu:
                        "1"       memory: 600Mi
                      type: array
                      items:
                        description: Container defines Kubernetes container attributes.
                        type: object
                        required:
                          - image
                          - name
                        properties:
                          resources:
                            description: >-
                              Compute Resources required by this container. More
                              info:
                              https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
                            type: object
                            properties:
                              limits:
                                description: >-
                                  Limits describes the maximum amount of compute
                                  resources allowed. More info:
                                  https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
                                type: object
                                additionalProperties:
                                  pattern: >-
                                    ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  x-kubernetes-int-or-string: true
                              requests:
                                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
                                additionalProperties:
                                  pattern: >-
                                    ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                  anyOf:
                                    - type: integer
                                    - type: string
                                  x-kubernetes-int-or-string: true
                          readinessProbe:
                            description: >-
                              Periodic probe of container service readiness.
                              Container will be removed from service endpoints
                              if the probe fails.
                            type: object
                            properties:
                              exec:
                                description: >-
                                  One and only one of the following should be
                                  specified. Exec specifies the action to take.
                                type: object
                                properties:
                                  command:
                                    description: >-
                                      Command is the command line to execute
                                      inside the container, the working
                                      directory for the command  is root ('/')
                                      in the container's filesystem. The command
                                      is simply exec'd, it is not run inside a
                                      shell, so traditional shell instructions
                                      ('|', etc) won't work. To use a shell, you
                                      need to explicitly call out to that shell.
                                      Exit status of 0 is treated as
                                      live/healthy and non-zero is unhealthy.
                                    type: array
                                    items:
                                      type: string
                              failureThreshold:
                                description: >-
                                  Minimum consecutive failures for the probe to
                                  be considered failed after having succeeded.
                                  Defaults to 3. Minimum value is 1.
                                type: integer
                                format: int32
                              httpGet:
                                description: HTTPGet specifies the http request to perform.
                                type: object
                                required:
                                  - port
                                properties:
                                  host:
                                    description: >-
                                      Host name to connect to, defaults to the
                                      pod IP. You probably want to set "Host" in
                                      httpHeaders instead.
                                    type: string
                                  httpHeaders:
                                    description: >-
                                      Custom headers to set in the request. HTTP
                                      allows repeated headers.
                                    type: array
                                    items:
                                      description: >-
                                        HTTPHeader describes a custom header to
                                        be used in HTTP probes
                                      type: object
                                      required:
                                        - name
                                        - value
                                      properties:
                                        name:
                                          description: The header field name
                                          type: string
                                        value:
                                          description: The header field value
                                          type: string
                                  path:
                                    description: Path to access on the HTTP server.
                                    type: string
                                  port:
                                    description: >-
                                      Name or number of the port to access on
                                      the container. Number must be in the range
                                      1 to 65535. Name must be an IANA_SVC_NAME.
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    description: >-
                                      Scheme to use for connecting to the host.
                                      Defaults to HTTP.
                                    type: string
                              initialDelaySeconds:
                                description: >-
                                  Number of seconds after the container has
                                  started before liveness probes are initiated.
                                  More info:
                                  https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                type: integer
                                format: int32
                              periodSeconds:
                                description: >-
                                  How often (in seconds) to perform the probe.
                                  Default to 10 seconds. Minimum value is 1.
                                type: integer
                                format: int32
                              successThreshold:
                                description: >-
                                  Minimum consecutive successes for the probe to
                                  be considered successful after having failed.
                                  Defaults to 1. Must be 1 for liveness and
                                  startup. Minimum value is 1.
                                type: integer
                                format: int32
                              tcpSocket:
                                description: >-
                                  TCPSocket specifies an action involving a TCP
                                  port. TCP hooks not yet supported TODO:
                                  implement a realistic TCP lifecycle hook
                                type: object
                                required:
                                  - port
                                properties:
                                  host:
                                    description: >-
                                      Optional: Host name to connect to,
                                      defaults to the pod IP.
                                    type: string
                                  port:
                                    description: >-
                                      Number or name of the port to access on
                                      the container. Number must be in the range
                                      1 to 65535. Name must be an IANA_SVC_NAME.
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    x-kubernetes-int-or-string: true
                              timeoutSeconds:
                                description: >-
                                  Number of seconds after which the probe times
                                  out. Defaults to 1 second. Minimum value is 1.
                                  More info:
                                  https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                type: integer
                                format: int32
                          lifecycle:
                            description: >-
                              Actions that the management system should take in
                              response to container lifecycle events.
                            type: object
                            properties:
                              postStart:
                                description: >-
                                  PostStart is called immediately after a
                                  container is created. If the handler fails,
                                  the container is terminated and restarted
                                  according to its restart policy. Other
                                  management of the container blocks until the
                                  hook completes. More info:
                                  https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
                                type: object
                                properties:
                                  exec:
                                    description: >-
                                      One and only one of the following should
                                      be specified. Exec specifies the action to
                                      take.
                                    type: object
                                    properties:
                                      command:
                                        description: >-
                                          Command is the command line to execute
                                          inside the container, the working
                                          directory for the command  is root ('/')
                                          in the container's filesystem. The
                                          command is simply exec'd, it is not run
                                          inside a shell, so traditional shell
                                          instructions ('|', etc) won't work. To
                                          use a shell, you need to explicitly call
                                          out to that shell. Exit status of 0 is
                                          treated as live/healthy and non-zero is
                                          unhealthy.
                                        type: array
                                        items:
                                          type: string
                                  httpGet:
                                    description: >-
                                      HTTPGet specifies the http request to
                                      perform.
                                    type: object
                                    required:
                                      - port
                                    properties:
                                      host:
                                        description: >-
                                          Host name to connect to, defaults to the
                                          pod IP. You probably want to set "Host"
                                          in httpHeaders instead.
                                        type: string
                                      httpHeaders:
                                        description: >-
                                          Custom headers to set in the request.
                                          HTTP allows repeated headers.
                                        type: array
                                        items:
                                          description: >-
                                            HTTPHeader describes a custom header to
                                            be used in HTTP probes
                                          type: object
                                          required:
                                            - name
                                            - value
                                          properties:
                                            name:
                                              description: The header field name
                                              type: string
                                            value:
                                              description: The header field value
                                              type: string
                                      path:
                                        description: Path to access on the HTTP server.
                                        type: string
                                      port:
                                        description: >-
                                          Name or number of the port to access on
                                          the container. Number must be in the
                                          range 1 to 65535. Name must be an
                                          IANA_SVC_NAME.
                                        anyOf:
                                          - type: integer
                                          - type: string
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        description: >-
                                          Scheme to use for connecting to the
                                          host. Defaults to HTTP.
                                        type: string
                                  tcpSocket:
                                    description: >-
                                      TCPSocket specifies an action involving a
                                      TCP port. TCP hooks not yet supported
                                      TODO: implement a realistic TCP lifecycle
                                      hook
                                    type: object
                                    required:
                                      - port
                                    properties:
                                      host:
                                        description: >-
                                          Optional: Host name to connect to,
                                          defaults to the pod IP.
                                        type: string
                                      port:
                                        description: >-
                                          Number or name of the port to access on
                                          the container. Number must be in the
                                          range 1 to 65535. Name must be an
                                          IANA_SVC_NAME.
                                        anyOf:
                                          - type: integer
                                          - type: string
                                        x-kubernetes-int-or-string: true
                              preStop:
                                description: >-
                                  PreStop is called immediately before a
                                  container is terminated due to an API request
                                  or management event such as liveness/startup
                                  probe failure, preemption, resource
                                  contention, etc. The handler is not called if
                                  the container crashes or exits. The reason for
                                  termination is passed to the handler. The
                                  Pod's termination grace period countdown
                                  begins before the PreStop hooked is executed.
                                  Regardless of the outcome of the handler, the
                                  container will eventually terminate within the
                                  Pod's termination grace period. Other
                                  management of the container blocks until the
                                  hook completes or until the termination grace
                                  period is reached. More info:
                                  https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
                                type: object
                                properties:
                                  exec:
                                    description: >-
                                      One and only one of the following should
                                      be specified. Exec specifies the action to
                                      take.
                                    type: object
                                    properties:
                                      command:
                                        description: >-
                                          Command is the command line to execute
                                          inside the container, the working
                                          directory for the command  is root ('/')
                                          in the container's filesystem. The
                                          command is simply exec'd, it is not run
                                          inside a shell, so traditional shell
                                          instructions ('|', etc) won't work. To
                                          use a shell, you need to explicitly call
                                          out to that shell. Exit status of 0 is
                                          treated as live/healthy and non-zero is
                                          unhealthy.
                                        type: array
                                        items:
                                          type: string
                                  httpGet:
                                    description: >-
                                      HTTPGet specifies the http request to
                                      perform.
                                    type: object
                                    required:
                                      - port
                                    properties:
                                      host:
                                        description: >-
                                          Host name to connect to, defaults to the
                                          pod IP. You probably want to set "Host"
                                          in httpHeaders instead.
                                        type: string
                                      httpHeaders:
                                        description: >-
                                          Custom headers to set in the request.
                                          HTTP allows repeated headers.
                                        type: array
                                        items:
                                          description: >-
                                            HTTPHeader describes a custom header to
                                            be used in HTTP probes
                                          type: object
                                          required:
                                            - name
                                            - value
                                          properties:
                                            name:
                                              description: The header field name
                                              type: string
                                            value:
                                              description: The header field value
                                              type: string
                                      path:
                                        description: Path to access on the HTTP server.
                                        type: string
                                      port:
                                        description: >-
                                          Name or number of the port to access on
                                          the container. Number must be in the
                                          range 1 to 65535. Name must be an
                                          IANA_SVC_NAME.
                                        anyOf:
                                          - type: integer
                                          - type: string
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        description: >-
                                          Scheme to use for connecting to the
                                          host. Defaults to HTTP.
                                        type: string
                                  tcpSocket:
                                    description: >-
                                      TCPSocket specifies an action involving a
                                      TCP port. TCP hooks not yet supported
                                      TODO: implement a realistic TCP lifecycle
                                      hook
                                    type: object
                                    required:
                                      - port
                                    properties:
                                      host:
                                        description: >-
                                          Optional: Host name to connect to,
                                          defaults to the pod IP.
                                        type: string
                                      port:
                                        description: >-
                                          Number or name of the port to access on
                                          the container. Number must be in the
                                          range 1 to 65535. Name must be an
                                          IANA_SVC_NAME.
                                        anyOf:
                                          - type: integer
                                          - type: string
                                        x-kubernetes-int-or-string: true
                          name:
                            description: >-
                              Name of the container specified as a DNS_LABEL.
                              Each container in a pod must have a unique name
                              (DNS_LABEL).
                            type: string
                          command:
                            description: >-
                              Entrypoint array. Not executed within a shell. The
                              docker image's ENTRYPOINT is used if this is not
                              provided. Variable references $(VAR_NAME) are
                              expanded using the container's environment. If a
                              variable cannot be resolved, the reference in the
                              input string will be unchanged. The $(VAR_NAME)
                              syntax can be escaped with a double $$, ie:
                              $$(VAR_NAME). Escaped references will never be
                              expanded, regardless of whether the variable
                              exists or not. More info:
                              https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
                            type: array
                            items:
                              type: string
                          livenessProbe:
                            description: >-
                              Periodic probe of container liveness. Container
                              will be restarted if the probe fails.
                            type: object
                            properties:
                              exec:
                                description: >-
                                  One and only one of the following should be
                                  specified. Exec specifies the action to take.
                                type: object
                                properties:
                                  command:
                                    description: >-
                                      Command is the command line to execute
                                      inside the container, the working
                                      directory for the command  is root ('/')
                                      in the container's filesystem. The command
                                      is simply exec'd, it is not run inside a
                                      shell, so traditional shell instructions
                                      ('|', etc) won't work. To use a shell, you
                                      need to explicitly call out to that shell.
                                      Exit status of 0 is treated as
                                      live/healthy and non-zero is unhealthy.
                                    type: array
                                    items:
                                      type: string
                              failureThreshold:
                                description: >-
                                  Minimum consecutive failures for the probe to
                                  be considered failed after having succeeded.
                                  Defaults to 3. Minimum value is 1.
                                type: integer
                                format: int32
                              httpGet:
                                description: HTTPGet specifies the http request to perform.
                                type: object
                                required:
                                  - port
                                properties:
                                  host:
                                    description: >-
                                      Host name to connect to, defaults to the
                                      pod IP. You probably want to set "Host" in
                                      httpHeaders instead.
                                    type: string
                                  httpHeaders:
                                    description: >-
                                      Custom headers to set in the request. HTTP
                                      allows repeated headers.
                                    type: array
                                    items:
                                      description: >-
                                        HTTPHeader describes a custom header to
                                        be used in HTTP probes
                                      type: object
                                      required:
                                        - name
                                        - value
                                      properties:
                                        name:
                                          description: The header field name
                                          type: string
                                        value:
                                          description: The header field value
                                          type: string
                                  path:
                                    description: Path to access on the HTTP server.
                                    type: string
                                  port:
                                    description: >-
                                      Name or number of the port to access on
                                      the container. Number must be in the range
                                      1 to 65535. Name must be an IANA_SVC_NAME.
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    description: >-
                                      Scheme to use for connecting to the host.
                                      Defaults to HTTP.
                                    type: string
                              initialDelaySeconds:
                                description: >-
                                  Number of seconds after the container has
                                  started before liveness probes are initiated.
                                  More info:
                                  https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                type: integer
                                format: int32
                              periodSeconds:
                                description: >-
                                  How often (in seconds) to perform the probe.
                                  Default to 10 seconds. Minimum value is 1.
                                type: integer
                                format: int32
                              successThreshold:
                                description: >-
                                  Minimum consecutive successes for the probe to
                                  be considered successful after having failed.
                                  Defaults to 1. Must be 1 for liveness and
                                  startup. Minimum value is 1.
                                type: integer
                                format: int32
                              tcpSocket:
                                description: >-
                                  TCPSocket specifies an action involving a TCP
                                  port. TCP hooks not yet supported TODO:
                                  implement a realistic TCP lifecycle hook
                                type: object
                                required:
                                  - port
                                properties:
                                  host:
                                    description: >-
                                      Optional: Host name to connect to,
                                      defaults to the pod IP.
                                    type: string
                                  port:
                                    description: >-
                                      Number or name of the port to access on
                                      the container. Number must be in the range
                                      1 to 65535. Name must be an IANA_SVC_NAME.
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    x-kubernetes-int-or-string: true
                              timeoutSeconds:
                                description: >-
                                  Number of seconds after which the probe times
                                  out. Defaults to 1 second. Minimum value is 1.
                                  More info:
                                  https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                type: integer
                                format: int32
                          env:
                            description: >-
                              List of environment variables to set in the
                              container.
                            type: array
                            items:
                              description: >-
                                EnvVar represents an environment variable
                                present in a Container.
                              type: object
                              required:
                                - name
                              properties:
                                name:
                                  description: >-
                                    Name of the environment variable. Must be a
                                    C_IDENTIFIER.
                                  type: string
                                value:
                                  description: >-
                                    Variable references $(VAR_NAME) are expanded
                                    using the previous defined environment
                                    variables in the container and any service
                                    environment variables. If a variable cannot
                                    be resolved, the reference in the input
                                    string will be unchanged. The $(VAR_NAME)
                                    syntax can be escaped with a double $$, ie:
                                    $$(VAR_NAME). Escaped references will never
                                    be expanded, regardless of whether the
                                    variable exists or not. Defaults to "".
                                  type: string
                                valueFrom:
                                  description: >-
                                    Source for the environment variable's value.
                                    Cannot be used if value is not empty.
                                  type: object
                                  properties:
                                    configMapKeyRef:
                                      description: Selects a key of a ConfigMap.
                                      type: object
                                      required:
                                        - key
                                      properties:
                                        key:
                                          description: The key to select.
                                          type: string
                                        name:
                                          description: >-
                                            Name of the referent. More info:
                                            https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                            TODO: Add other useful fields.
                                            apiVersion, kind, uid?
                                          type: string
                                        optional:
                                          description: >-
                                            Specify whether the ConfigMap or its key
                                            must be defined
                                          type: boolean
                                    fieldRef:
                                      description: >-
                                        Selects a field of the pod: supports
                                        metadata.name, metadata.namespace,
                                        metadata.labels, metadata.annotations,
                                        spec.nodeName, spec.serviceAccountName,
                                        status.hostIP, status.podIP.
                                      type: object
                                      required:
                                        - fieldPath
                                      properties:
                                        apiVersion:
                                          description: >-
                                            Version of the schema the FieldPath is
                                            written in terms of, defaults to "v1".
                                          type: string
                                        fieldPath:
                                          description: >-
                                            Path of the field to select in the
                                            specified API version.
                                          type: string
                                    resourceFieldRef:
                                      description: >-
                                        Selects a resource of the container:
                                        only resources limits and requests
                                        (limits.cpu, limits.memory,
                                        limits.ephemeral-storage, requests.cpu,
                                        requests.memory and
                                        requests.ephemeral-storage) are
                                        currently supported.
                                      type: object
                                      required:
                                        - resource
                                      properties:
                                        containerName:
                                          description: >-
                                            Container name: required for volumes,
                                            optional for env vars
                                          type: string
                                        divisor:
                                          description: >-
                                            Specifies the output format of the
                                            exposed resources, defaults to "1"
                                          pattern: >-
                                            ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                          anyOf:
                                            - type: integer
                                            - type: string
                                          x-kubernetes-int-or-string: true
                                        resource:
                                          description: 'Required: resource to select'
                                          type: string
                                    secretKeyRef:
                                      description: >-
                                        Selects a key of a secret in the pod's
                                        namespace
                                      type: object
                                      required:
                                        - key
                                      properties:
                                        key:
                                          description: >-
                                            The key of the secret to select from. 
                                            Must be a valid secret key.
                                          type: string
                                        name:
                                          description: >-
                                            Name of the referent. More info:
                                            https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                            TODO: Add other useful fields.
                                            apiVersion, kind, uid?
                                          type: string
                                        optional:
                                          description: >-
                                            Specify whether the Secret or its key
                                            must be defined
                                          type: boolean
                          securityContext:
                            description: >-
                              Security options the pod should run with. More
                              info:
                              https://kubernetes.io/docs/concepts/policy/security-context/
                              More info:
                              https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
                            type: object
                            properties:
                              runAsGroup:
                                description: >-
                                  The GID to run the entrypoint of the container
                                  process. Uses runtime default if unset. May
                                  also be set in PodSecurityContext.  If set in
                                  both SecurityContext and PodSecurityContext,
                                  the value specified in SecurityContext takes
                                  precedence.
                                type: integer
                                format: int64
                              procMount:
                                description: >-
                                  procMount denotes the type of proc mount to
                                  use for the containers. The default is
                                  DefaultProcMount which uses the container
                                  runtime defaults for readonly paths and masked
                                  paths. This requires the ProcMountType feature
                                  flag to be enabled.
                                type: string
                              runAsUser:
                                description: >-
                                  The UID to run the entrypoint of the container
                                  process. Defaults to user specified in image
                                  metadata if unspecified. May also be set in
                                  PodSecurityContext.  If set in both
                                  SecurityContext and PodSecurityContext, the
                                  value specified in SecurityContext takes
                                  precedence.
                                type: integer
                                format: int64
                              readOnlyRootFilesystem:
                                description: >-
                                  Whether this container has a read-only root
                                  filesystem. Default is false.
                                type: boolean
                              runAsNonRoot:
                                description: >-
                                  Indicates that the container must run as a
                                  non-root user. If true, the Kubelet will
                                  validate the image at runtime to ensure that
                                  it does not run as UID 0 (root) and fail to
                                  start the container if it does. If unset or
                                  false, no such validation will be performed.
                                  May also be set in PodSecurityContext.  If set
                                  in both SecurityContext and
                                  PodSecurityContext, the value specified in
                                  SecurityContext takes precedence.
                                type: boolean
                              privileged:
                                description: >-
                                  Run container in privileged mode. Processes in
                                  privileged containers are essentially
                                  equivalent to root on the host. Defaults to
                                  false.
                                type: boolean
                              capabilities:
                                description: >-
                                  The capabilities to add/drop when running
                                  containers. Defaults to the default set of
                                  capabilities granted by the container runtime.
                                type: object
                                properties:
                                  add:
                                    description: Added capabilities
                                    type: array
                                    items:
                                      description: >-
                                        Capability represent POSIX capabilities
                                        type
                                      type: string
                                  drop:
                                    description: Removed capabilities
                                    type: array
                                    items:
                                      description: >-
                                        Capability represent POSIX capabilities
                                        type
                                      type: string
                              windowsOptions:
                                description: >-
                                  The Windows specific settings applied to all
                                  containers. If unspecified, the options from
                                  the PodSecurityContext will be used. If set in
                                  both SecurityContext and PodSecurityContext,
                                  the value specified in SecurityContext takes
                                  precedence.
                                type: object
                                properties:
                                  gmsaCredentialSpec:
                                    description: >-
                                      GMSACredentialSpec is where the GMSA
                                      admission webhook
                                      (https://github.com/kubernetes-sigs/windows-gmsa)
                                      inlines the contents of the GMSA
                                      credential spec named by the
                                      GMSACredentialSpecName field. This field
                                      is alpha-level and is only honored by
                                      servers that enable the WindowsGMSA
                                      feature flag.
                                    type: string
                                  gmsaCredentialSpecName:
                                    description: >-
                                      GMSACredentialSpecName is the name of the
                                      GMSA credential spec to use. This field is
                                      alpha-level and is only honored by servers
                                      that enable the WindowsGMSA feature flag.
                                    type: string
                                  runAsUserName:
                                    description: >-
                                      The UserName in Windows to run the
                                      entrypoint of the container process.
                                      Defaults to the user specified in image
                                      metadata if unspecified. May also be set
                                      in PodSecurityContext. If set in both
                                      SecurityContext and PodSecurityContext,
                                      the value specified in SecurityContext
                                      takes precedence. This field is
                                      alpha-level and it is only honored by
                                      servers that enable the
                                      WindowsRunAsUserName feature flag.
                                    type: string
                              seLinuxOptions:
                                description: >-
                                  The SELinux context to be applied to the
                                  container. If unspecified, the container
                                  runtime will allocate a random SELinux context
                                  for each container.  May also be set in
                                  PodSecurityContext.  If set in both
                                  SecurityContext and PodSecurityContext, the
                                  value specified in SecurityContext takes
                                  precedence.
                                type: object
                                properties:
                                  level:
                                    description: >-
                                      Level is SELinux level label that applies
                                      to the container.
                                    type: string
                                  role:
                                    description: >-
                                      Role is a SELinux role label that applies
                                      to the container.
                                    type: string
                                  type:
                                    description: >-
                                      Type is a SELinux type label that applies
                                      to the container.
                                    type: string
                                  user:
                                    description: >-
                                      User is a SELinux user label that applies
                                      to the container.
                                    type: string
                              allowPrivilegeEscalation:
                                description: >-
                                  AllowPrivilegeEscalation controls whether a
                                  process can gain more privileges than its
                                  parent process. This bool directly controls if
                                  the no_new_privs flag will be set on the
                                  container process. AllowPrivilegeEscalation is
                                  true always when the container is: 1) run as
                                  Privileged 2) has CAP_SYS_ADMIN
                                type: boolean
                          ports:
                            description: >-
                              List of ports to expose from the container.
                              Exposing a port here gives the system additional
                              information about the network connections a
                              container uses, but is primarily informational.
                              Not specifying a port here DOES NOT prevent that
                              port from being exposed. Any port which is
                              listening on the default "0.0.0.0" address inside
                              a container will be accessible from the network.
                            type: array
                            items:
                              description: >-
                                ContainerPort represents a network port in a
                                single container.
                              type: object
                              required:
                                - containerPort
                              properties:
                                containerPort:
                                  description: >-
                                    Number of port to expose on the pod's IP
                                    address. This must be a valid port number, 0
                                    < x < 65536.
                                  type: integer
                                  format: int32
                                hostIP:
                                  description: What host IP to bind the external port to.
                                  type: string
                                hostPort:
                                  description: >-
                                    Number of port to expose on the host. If
                                    specified, this must be a valid port number,
                                    0 < x < 65536. If HostNetwork is specified,
                                    this must match ContainerPort. Most
                                    containers do not need this.
                                  type: integer
                                  format: int32
                                name:
                                  description: >-
                                    If specified, this must be an IANA_SVC_NAME
                                    and unique within the pod. Each named port
                                    in a pod must have a unique name. Name for
                                    the port that can be referred to by
                                    services.
                                  type: string
                                protocol:
                                  description: >-
                                    Protocol for port. Must be UDP, TCP, or
                                    SCTP. Defaults to "TCP".
                                  type: string
                                  default: TCP
                          imagePullPolicy:
                            description: >-
                              Image pull policy. One of Always, Never,
                              IfNotPresent. Defaults to Always.
                            type: string
                          volumeMounts:
                            description: >-
                              Pod volumes to mount into the container's
                              filesystem.
                            type: array
                            items:
                              description: >-
                                VolumeMount describes a mounting of a Volume
                                within a container.
                              type: object
                              required:
                                - mountPath
                                - name
                              properties:
                                mountPath:
                                  description: >-
                                    Path within the container at which the
                                    volume should be mounted.  Must not contain
                                    ':'.
                                  type: string
                                mountPropagation:
                                  description: >-
                                    mountPropagation determines how mounts are
                                    propagated from the host to container and
                                    the other way around. When not set,
                                    MountPropagationNone is used. This field is
                                    beta in 1.10.
                                  type: string
                                name:
                                  description: This must match the Name of a Volume.
                                  type: string
                                readOnly:
                                  description: >-
                                    Mounted read-only if true, read-write
                                    otherwise (false or unspecified). Defaults
                                    to false.
                                  type: boolean
                                subPath:
                                  description: >-
                                    Path within the volume from which the
                                    container's volume should be mounted.
                                    Defaults to "" (volume's root).
                                  type: string
                                subPathExpr:
                                  description: >-
                                    Expanded path within the volume from which
                                    the container's volume should be mounted.
                                    Behaves similarly to SubPath but environment
                                    variable references $(VAR_NAME) are expanded
                                    using the container's environment. Defaults
                                    to "" (volume's root). SubPathExpr and
                                    SubPath are mutually exclusive. This field
                                    is beta in 1.15.
                                  type: string
                          envFrom:
                            description: >-
                              List of sources to populate environment variables
                              in the container. The keys defined within a source
                              must be a C_IDENTIFIER. All invalid keys will be
                              reported as an event when the container is
                              starting. When a key exists in multiple sources,
                              the value associated with the last source will
                              take precedence. Values defined by an Env with a
                              duplicate key will take precedence.
                            type: array
                            items:
                              description: >-
                                EnvFromSource represents the source of a set of
                                ConfigMaps
                              type: object
                              properties:
                                configMapRef:
                                  description: The ConfigMap to select from
                                  type: object
                                  properties:
                                    name:
                                      description: >-
                                        Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields.
                                        apiVersion, kind, uid?
                                      type: string
                                    optional:
                                      description: >-
                                        Specify whether the ConfigMap must be
                                        defined
                                      type: boolean
                                prefix:
                                  description: >-
                                    An optional identifier to prepend to each
                                    key in the ConfigMap. Must be a
                                    C_IDENTIFIER.
                                  type: string
                                secretRef:
                                  description: The Secret to select from
                                  type: object
                                  properties:
                                    name:
                                      description: >-
                                        Name of the referent. More info:
                                        https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                        TODO: Add other useful fields.
                                        apiVersion, kind, uid?
                                      type: string
                                    optional:
                                      description: >-
                                        Specify whether the Secret must be
                                        defined
                                      type: boolean
                          image:
                            description: >-
                              Docker image name. More info:
                              https://kubernetes.io/docs/concepts/containers/images
                            type: string
                          workingDir:
                            description: >-
                              Container's working directory. If not specified,
                              the container runtime's default will be used,
                              which might be configured in the container image.
                            type: string
                          args:
                            description: >-
                              Arguments to the entrypoint. The docker image's
                              CMD is used if this is not provided. Variable
                              references $(VAR_NAME) are expanded using the
                              container's environment. If a variable cannot be
                              resolved, the reference in the input string will
                              be unchanged. The $(VAR_NAME) syntax can be
                              escaped with a double $$, ie: $$(VAR_NAME).
                              Escaped references will never be expanded,
                              regardless of whether the variable exists or not.
                              More info:
                              https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
                            type: array
                            items:
                              type: string
                    volumes:
                      description: >-
                        List of volumes that can be mounted by containers
                        belonging to the pod. More info:
                        https://kubernetes.io/docs/concepts/storage/volumes
                      type: array
                      items:
                        description: >-
                          Volume represents a named volume in a pod that may be
                          accessed by any container in the pod.
                        type: object
                        required:
                          - name
                        properties:
                          emptyDir:
                            description: >-
                              EmptyDir represents a temporary directory that
                              shares a pod's lifetime. More info:
                              https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                            type: object
                            properties:
                              medium:
                                description: >-
                                  What type of storage medium should back this
                                  directory. The default is "" which means to
                                  use the node's default medium. Must be an
                                  empty string (default) or Memory. More info:
                                  https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                type: string
                              sizeLimit:
                                description: >-
                                  Total amount of local storage required for
                                  this EmptyDir volume. The size limit is also
                                  applicable for memory medium. The maximum
                                  usage on memory medium EmptyDir would be the
                                  minimum value between the SizeLimit specified
                                  here and the sum of memory limits of all
                                  containers in a pod. The default is nil which
                                  means that the limit is undefined. More info:
                                  http://kubernetes.io/docs/user-guide/volumes#emptydir
                                pattern: >-
                                  ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                anyOf:
                                  - type: integer
                                  - type: string
                                x-kubernetes-int-or-string: true
                          gitRepo:
                            description: >-
                              GitRepo represents a git repository at a
                              particular revision. DEPRECATED: GitRepo is
                              deprecated. To provision a container with a git
                              repo, mount an EmptyDir into an InitContainer that
                              clones the repo using git, then mount the EmptyDir
                              into the Pod's container.
                            type: object
                            required:
                              - repository
                            properties:
                              directory:
                                description: >-
                                  Target directory name. Must not contain or
                                  start with '..'.  If '.' is supplied, the
                                  volume directory will be the git repository. 
                                  Otherwise, if specified, the volume will
                                  contain the git repository in the subdirectory
                                  with the given name.
                                type: string
                              repository:
                                description: Repository URL
                                type: string
                              revision:
                                description: Commit hash for the specified revision.
                                type: string
                          cephfs:
                            description: >-
                              CephFS represents a Ceph FS mount on the host that
                              shares a pod's lifetime
                            type: object
                            required:
                              - monitors
                            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
                                type: array
                                items:
                                  type: string
                              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
                                type: object
                                properties:
                                  name:
                                    description: >-
                                      Name of the referent. More info:
                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      TODO: Add other useful fields. apiVersion,
                                      kind, uid?
                                    type: string
                              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
                          cinder:
                            description: >-
                              Cinder represents a cinder volume attached and
                              mounted on kubelets host machine. More info:
                              https://examples.k8s.io/mysql-cinder-pd/README.md
                            type: object
                            required:
                              - volumeID
                            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.
                                type: object
                                properties:
                                  name:
                                    description: >-
                                      Name of the referent. More info:
                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      TODO: Add other useful fields. apiVersion,
                                      kind, uid?
                                    type: string
                              volumeID:
                                description: >-
                                  volume id used to identify the volume in
                                  cinder. More info:
                                  https://examples.k8s.io/mysql-cinder-pd/README.md
                                type: string
                          glusterfs:
                            description: >-
                              Glusterfs represents a Glusterfs mount on the host
                              that shares a pod's lifetime. More info:
                              https://examples.k8s.io/volumes/glusterfs/README.md
                            type: object
                            required:
                              - endpoints
                              - path
                            properties:
                              endpoints:
                                description: >-
                                  EndpointsName is the endpoint name that
                                  details Glusterfs topology. More info:
                                  https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                type: string
                              path:
                                description: >-
                                  Path is the Glusterfs volume path. More info:
                                  https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                type: string
                              readOnly:
                                description: >-
                                  ReadOnly here will force the Glusterfs volume
                                  to be mounted with read-only permissions.
                                  Defaults to false. More info:
                                  https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                type: boolean
                          azureFile:
                            description: >-
                              AzureFile represents an Azure File Service mount
                              on the host and bind mount to the pod.
                            type: object
                            required:
                              - secretName
                              - shareName
                            properties:
                              readOnly:
                                description: >-
                                  Defaults to false (read/write). ReadOnly here
                                  will force the ReadOnly setting in
                                  VolumeMounts.
                                type: boolean
                              secretName:
                                description: >-
                                  the name of secret that contains Azure Storage
                                  Account Name and Key
                                type: string
                              shareName:
                                description: Share Name
                                type: string
                          persistentVolumeClaim:
                            description: >-
                              PersistentVolumeClaimVolumeSource represents a
                              reference to a PersistentVolumeClaim in the same
                              namespace. More info:
                              https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                            type: object
                            required:
                              - claimName
                            properties:
                              claimName:
                                description: >-
                                  ClaimName is the name of a
                                  PersistentVolumeClaim in the same namespace as
                                  the pod using this volume. More info:
                                  https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                type: string
                              readOnly:
                                description: >-
                                  Will force the ReadOnly setting in
                                  VolumeMounts. Default false.
                                type: boolean
                          name:
                            description: >-
                              Volume's name. Must be a DNS_LABEL and unique
                              within the pod. More info:
                              https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                            type: string
                          azureDisk:
                            description: >-
                              AzureDisk represents an Azure Data Disk mount on
                              the host and bind mount to the pod.
                            type: object
                            required:
                              - diskName
                              - diskURI
                            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
                          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
                            type: object
                            required:
                              - volumeID
                            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).
                                type: integer
                                format: int32
                              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
                          hostPath:
                            description: >-
                              HostPath represents a pre-existing file or
                              directory on the host machine that is directly
                              exposed to the container. This is generally used
                              for system agents or other privileged things that
                              are allowed to see the host machine. Most
                              containers will NOT need this. More info:
                              https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                              --- TODO(jonesdl) We need to restrict who can use
                              host directory mounts and who can/can not mount
                              host directories as read/write.
                            type: object
                            required:
                              - path
                            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
                          iscsi:
                            description: >-
                              ISCSI represents an ISCSI Disk resource that is
                              attached to a kubelet's host machine and then
                              exposed to the pod. More info:
                              https://examples.k8s.io/volumes/iscsi/README.md
                            type: object
                            required:
                              - iqn
                              - lun
                              - targetPortal
                            properties:
                              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
                                type: object
                                properties:
                                  name:
                                    description: >-
                                      Name of the referent. More info:
                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      TODO: Add other useful fields. apiVersion,
                                      kind, uid?
                                    type: string
                              lun:
                                description: iSCSI Target Lun number.
                                type: integer
                                format: int32
                              iqn:
                                description: Target iSCSI Qualified Name.
                                type: string
                              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).
                                type: array
                                items:
                                  type: string
                              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
                              iscsiInterface:
                                description: >-
                                  iSCSI Interface Name that uses an iSCSI
                                  transport. Defaults to 'default' (tcp).
                                type: string
                              chapAuthDiscovery:
                                description: >-
                                  whether support iSCSI Discovery CHAP
                                  authentication
                                type: boolean
                              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
                              chapAuthSession:
                                description: >-
                                  whether support iSCSI Session CHAP
                                  authentication
                                type: boolean
                              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
                          photonPersistentDisk:
                            description: >-
                              PhotonPersistentDisk represents a PhotonController
                              persistent disk attached and mounted on kubelets
                              host machine
                            type: object
                            required:
                              - pdID
                            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
                          secret:
                            description: >-
                              Secret represents a secret that should populate
                              this volume. More info:
                              https://kubernetes.io/docs/concepts/storage/volumes#secret
                            type: object
                            properties:
                              defaultMode:
                                description: >-
                                  Optional: mode bits to use on created files by
                                  default. Must be a value between 0 and 0777.
                                  Defaults to 0644. Directories within the path
                                  are not affected by this setting. This might
                                  be in conflict with other options that affect
                                  the file mode, like fsGroup, and the result
                                  can be other mode bits set.
                                type: integer
                                format: int32
                              items:
                                description: >-
                                  If unspecified, each key-value pair in the
                                  Data field of the referenced Secret will be
                                  projected into the volume as a file whose name
                                  is the key and content is the value. If
                                  specified, the listed keys will be projected
                                  into the specified paths, and unlisted keys
                                  will not be present. If a key is specified
                                  which is not present in the Secret, the volume
                                  setup will error unless it is marked optional.
                                  Paths must be relative and may not contain the
                                  '..' path or start with '..'.
                                type: array
                                items:
                                  description: Maps a string key to a path within a volume.
                                  type: object
                                  required:
                                    - key
                                    - path
                                  properties:
                                    key:
                                      description: The key to project.
                                      type: string
                                    mode:
                                      description: >-
                                        Optional: mode bits to use on this file,
                                        must be a value between 0 and 0777. If
                                        not specified, the volume defaultMode
                                        will be used. This might be in conflict
                                        with other options that affect the file
                                        mode, like fsGroup, and the result can
                                        be other mode bits set.
                                      type: integer
                                      format: int32
                                    path:
                                      description: >-
                                        The relative path of the file to map the
                                        key to. May not be an absolute path. May
                                        not contain the path element '..'. May
                                        not start with the string '..'.
                                      type: string
                              optional:
                                description: >-
                                  Specify whether the Secret or its keys must be
                                  defined
                                type: boolean
                              secretName:
                                description: >-
                                  Name of the secret in the pod's namespace to
                                  use. More info:
                                  https://kubernetes.io/docs/concepts/storage/volumes#secret
                                type: string
                          scaleIO:
                            description: >-
                              ScaleIO represents a ScaleIO persistent volume
                              attached and mounted on Kubernetes nodes.
                            type: object
                            required:
                              - gateway
                              - secretRef
                              - system
                            properties:
                              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.
                                type: object
                                properties:
                                  name:
                                    description: >-
                                      Name of the referent. More info:
                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      TODO: Add other useful fields. apiVersion,
                                      kind, uid?
                                    type: string
                              gateway:
                                description: The host address of the ScaleIO API Gateway.
                                type: string
                              volumeName:
                                description: >-
                                  The name of a volume already created in the
                                  ScaleIO system that is associated with this
                                  volume source.
                                type: string
                              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
                              system:
                                description: >-
                                  The name of the storage system as configured
                                  in ScaleIO.
                                type: string
                              sslEnabled:
                                description: >-
                                  Flag to enable/disable SSL communication with
                                  Gateway, default false
                                type: boolean
                              storagePool:
                                description: >-
                                  The ScaleIO Storage Pool associated with the
                                  protection domain.
                                type: string
                              protectionDomain:
                                description: >-
                                  The name of the ScaleIO Protection Domain for
                                  the configured storage.
                                type: string
                              storageMode:
                                description: >-
                                  Indicates whether the storage for a volume
                                  should be ThickProvisioned or ThinProvisioned.
                                  Default is ThinProvisioned.
                                type: string
                          flexVolume:
                            description: >-
                              FlexVolume represents a generic volume resource
                              that is provisioned/attached using an exec based
                              plugin.
                            type: object
                            required:
                              - driver
                            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:
                                description: 'Optional: Extra command options if any.'
                                type: object
                                additionalProperties:
                                  type: string
                              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.
                                type: object
                                properties:
                                  name:
                                    description: >-
                                      Name of the referent. More info:
                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      TODO: Add other useful fields. apiVersion,
                                      kind, uid?
                                    type: string
                          quobyte:
                            description: >-
                              Quobyte represents a Quobyte mount on the host
                              that shares a pod's lifetime
                            type: object
                            required:
                              - registry
                              - volume
                            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
                          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
                            type: object
                            required:
                              - image
                              - monitors
                            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
                                type: array
                                items:
                                  type: string
                              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
                                type: object
                                properties:
                                  name:
                                    description: >-
                                      Name of the referent. More info:
                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      TODO: Add other useful fields. apiVersion,
                                      kind, uid?
                                    type: string
                              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
                          projected:
                            description: >-
                              Items for all in one resources secrets,
                              configmaps, and downward API
                            type: object
                            required:
                              - sources
                            properties:
                              defaultMode:
                                description: >-
                                  Mode bits to use on created files by default.
                                  Must be a value between 0 and 0777.
                                  Directories within the path are not affected
                                  by this setting. This might be in conflict
                                  with other options that affect the file mode,
                                  like fsGroup, and the result can be other mode
                                  bits set.
                                type: integer
                                format: int32
                              sources:
                                description: list of volume projections
                                type: array
                                items:
                                  description: >-
                                    Projection that may be projected along with
                                    other supported volume types
                                  type: object
                                  properties:
                                    configMap:
                                      description: >-
                                        information about the configMap data to
                                        project
                                      type: object
                                      properties:
                                        items:
                                          description: >-
                                            If unspecified, each key-value pair in
                                            the Data field of the referenced
                                            ConfigMap will be projected into the
                                            volume as a file whose name is the key
                                            and content is the value. If specified,
                                            the listed keys will be projected into
                                            the specified paths, and unlisted keys
                                            will not be present. If a key is
                                            specified which is not present in the
                                            ConfigMap, the volume setup will error
                                            unless it is marked optional. Paths must
                                            be relative and may not contain the '..'
                                            path or start with '..'.
                                          type: array
                                          items:
                                            description: >-
                                              Maps a string key to a path within a
                                              volume.
                                            type: object
                                            required:
                                              - key
                                              - path
                                            properties:
                                              key:
                                                description: The key to project.
                                                type: string
                                              mode:
                                                description: >-
                                                  Optional: mode bits to use on this file,
                                                  must be a value between 0 and 0777. If
                                                  not specified, the volume defaultMode
                                                  will be used. This might be in conflict
                                                  with other options that affect the file
                                                  mode, like fsGroup, and the result can
                                                  be other mode bits set.
                                                type: integer
                                                format: int32
                                              path:
                                                description: >-
                                                  The relative path of the file to map the
                                                  key to. May not be an absolute path. May
                                                  not contain the path element '..'. May
                                                  not start with the string '..'.
                                                type: string
                                        name:
                                          description: >-
                                            Name of the referent. More info:
                                            https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                            TODO: Add other useful fields.
                                            apiVersion, kind, uid?
                                          type: string
                                        optional:
                                          description: >-
                                            Specify whether the ConfigMap or its
                                            keys must be defined
                                          type: boolean
                                    downwardAPI:
                                      description: >-
                                        information about the downwardAPI data
                                        to project
                                      type: object
                                      properties:
                                        items:
                                          description: >-
                                            Items is a list of DownwardAPIVolume
                                            file
                                          type: array
                                          items:
                                            description: >-
                                              DownwardAPIVolumeFile represents
                                              information to create the file
                                              containing the pod field
                                            type: object
                                            required:
                                              - path
                                            properties:
                                              fieldRef:
                                                description: >-
                                                  Required: Selects a field of the pod:
                                                  only annotations, labels, name and
                                                  namespace are supported.
                                                type: object
                                                required:
                                                  - fieldPath
                                                properties:
                                                  apiVersion:
                                                    description: >-
                                                      Version of the schema the FieldPath is
                                                      written in terms of, defaults to "v1".
                                                    type: string
                                                  fieldPath:
                                                    description: >-
                                                      Path of the field to select in the
                                                      specified API version.
                                                    type: string
                                              mode:
                                                description: >-
                                                  Optional: mode bits to use on this file,
                                                  must be a value between 0 and 0777. If
                                                  not specified, the volume defaultMode
                                                  will be used. This might be in conflict
                                                  with other options that affect the file
                                                  mode, like fsGroup, and the result can
                                                  be other mode bits set.
                                                type: integer
                                                format: int32
                                              path:
                                                description: >-
                                                  Required: Path is  the relative path
                                                  name of the file to be created. Must not
                                                  be absolute or contain the '..' path.
                                                  Must be utf-8 encoded. The first item of
                                                  the relative path must not start with
                                                  '..'
                                                type: string
                                              resourceFieldRef:
                                                description: >-
                                                  Selects a resource of the container:
                                                  only resources limits and requests
                                                  (limits.cpu, limits.memory, requests.cpu
                                                  and requests.memory) are currently
                                                  supported.
                                                type: object
                                                required:
                                                  - resource
                                                properties:
                                                  containerName:
                                                    description: >-
                                                      Container name: required for volumes,
                                                      optional for env vars
                                                    type: string
                                                  divisor:
                                                    description: >-
                                                      Specifies the output format of the
                                                      exposed resources, defaults to "1"
                                                    pattern: >-
                                                      ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                    anyOf:
                                                      - type: integer
                                                      - type: string
                                                    x-kubernetes-int-or-string: true
                                                  resource:
                                                    description: 'Required: resource to select'
                                                    type: string
                                    secret:
                                      description: >-
                                        information about the secret data to
                                        project
                                      type: object
                                      properties:
                                        items:
                                          description: >-
                                            If unspecified, each key-value pair in
                                            the Data field of the referenced Secret
                                            will be projected into the volume as a
                                            file whose name is the key and content
                                            is the value. If specified, the listed
                                            keys will be projected into the
                                            specified paths, and unlisted keys will
                                            not be present. If a key is specified
                                            which is not present in the Secret, the
                                            volume setup will error unless it is
                                            marked optional. Paths must be relative
                                            and may not contain the '..' path or
                                            start with '..'.
                                          type: array
                                          items:
                                            description: >-
                                              Maps a string key to a path within a
                                              volume.
                                            type: object
                                            required:
                                              - key
                                              - path
                                            properties:
                                              key:
                                                description: The key to project.
                                                type: string
                                              mode:
                                                description: >-
                                                  Optional: mode bits to use on this file,
                                                  must be a value between 0 and 0777. If
                                                  not specified, the volume defaultMode
                                                  will be used. This might be in conflict
                                                  with other options that affect the file
                                                  mode, like fsGroup, and the result can
                                                  be other mode bits set.
                                                type: integer
                                                format: int32
                                              path:
                                                description: >-
                                                  The relative path of the file to map the
                                                  key to. May not be an absolute path. May
                                                  not contain the path element '..'. May
                                                  not start with the string '..'.
                                                type: string
                                        name:
                                          description: >-
                                            Name of the referent. More info:
                                            https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                            TODO: Add other useful fields.
                                            apiVersion, kind, uid?
                                          type: string
                                        optional:
                                          description: >-
                                            Specify whether the Secret or its key
                                            must be defined
                                          type: boolean
                                    serviceAccountToken:
                                      description: >-
                                        information about the
                                        serviceAccountToken data to project
                                      type: object
                                      required:
                                        - path
                                      properties:
                                        audience:
                                          description: >-
                                            Audience is the intended audience of the
                                            token. A recipient of a token must
                                            identify itself with an identifier
                                            specified in the audience of the token,
                                            and otherwise should reject the token.
                                            The audience defaults to the identifier
                                            of the apiserver.
                                          type: string
                                        expirationSeconds:
                                          description: >-
                                            ExpirationSeconds is the requested
                                            duration of validity of the service
                                            account token. As the token approaches
                                            expiration, the kubelet volume plugin
                                            will proactively rotate the service
                                            account token. The kubelet will start
                                            trying to rotate the token if the token
                                            is older than 80 percent of its time to
                                            live or if the token is older than 24
                                            hours.Defaults to 1 hour and must be at
                                            least 10 minutes.
                                          type: integer
                                          format: int64
                                        path:
                                          description: >-
                                            Path is the path relative to the mount
                                            point of the file to project the token
                                            into.
                                          type: string
                          csi:
                            description: >-
                              CSI (Container Storage Interface) represents
                              storage that is handled by an external CSI driver
                              (Alpha feature).
                            type: object
                            required:
                              - driver
                            properties:
                              driver:
                                description: >-
                                  Driver is the name of the CSI driver that
                                  handles this volume. Consult with your admin
                                  for the correct name as registered in the
                                  cluster.
                                type: string
                              fsType:
                                description: >-
                                  Filesystem type to mount. Ex. "ext4", "xfs",
                                  "ntfs". If not provided, the empty value is
                                  passed to the associated CSI driver which will
                                  determine the default filesystem to apply.
                                type: string
                              nodePublishSecretRef:
                                description: >-
                                  NodePublishSecretRef is a reference to the
                                  secret object containing sensitive information
                                  to pass to the CSI driver to complete the CSI
                                  NodePublishVolume and NodeUnpublishVolume
                                  calls. This field is optional, and  may be
                                  empty if no secret is required. If the secret
                                  object contains more than one secret, all
                                  secret references are passed.
                                type: object
                                properties:
                                  name:
                                    description: >-
                                      Name of the referent. More info:
                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      TODO: Add other useful fields. apiVersion,
                                      kind, uid?
                                    type: string
                              readOnly:
                                description: >-
                                  Specifies a read-only configuration for the
                                  volume. Defaults to false (read/write).
                                type: boolean
                              volumeAttributes:
                                description: >-
                                  VolumeAttributes stores driver-specific
                                  properties that are passed to the CSI driver.
                                  Consult your driver's documentation for
                                  supported values.
                                type: object
                                additionalProperties:
                                  type: string
                          portworxVolume:
                            description: >-
                              PortworxVolume represents a portworx volume
                              attached and mounted on kubelets host machine
                            type: object
                            required:
                              - volumeID
                            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
                          configMap:
                            description: >-
                              ConfigMap represents a configMap that should
                              populate this volume
                            type: object
                            properties:
                              defaultMode:
                                description: >-
                                  Optional: mode bits to use on created files by
                                  default. Must be a value between 0 and 0777.
                                  Defaults to 0644. Directories within the path
                                  are not affected by this setting. This might
                                  be in conflict with other options that affect
                                  the file mode, like fsGroup, and the result
                                  can be other mode bits set.
                                type: integer
                                format: int32
                              items:
                                description: >-
                                  If unspecified, each key-value pair in the
                                  Data field of the referenced ConfigMap will be
                                  projected into the volume as a file whose name
                                  is the key and content is the value. If
                                  specified, the listed keys will be projected
                                  into the specified paths, and unlisted keys
                                  will not be present. If a key is specified
                                  which is not present in the ConfigMap, the
                                  volume setup will error unless it is marked
                                  optional. Paths must be relative and may not
                                  contain the '..' path or start with '..'.
                                type: array
                                items:
                                  description: Maps a string key to a path within a volume.
                                  type: object
                                  required:
                                    - key
                                    - path
                                  properties:
                                    key:
                                      description: The key to project.
                                      type: string
                                    mode:
                                      description: >-
                                        Optional: mode bits to use on this file,
                                        must be a value between 0 and 0777. If
                                        not specified, the volume defaultMode
                                        will be used. This might be in conflict
                                        with other options that affect the file
                                        mode, like fsGroup, and the result can
                                        be other mode bits set.
                                      type: integer
                                      format: int32
                                    path:
                                      description: >-
                                        The relative path of the file to map the
                                        key to. May not be an absolute path. May
                                        not contain the path element '..'. May
                                        not start with the string '..'.
                                      type: string
                              name:
                                description: >-
                                  Name of the referent. More info:
                                  https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  TODO: Add other useful fields. apiVersion,
                                  kind, uid?
                                type: string
                              optional:
                                description: >-
                                  Specify whether the ConfigMap or its keys must
                                  be defined
                                type: boolean
                          nfs:
                            description: >-
                              NFS represents an NFS mount on the host that
                              shares a pod's lifetime More info:
                              https://kubernetes.io/docs/concepts/storage/volumes#nfs
                            type: object
                            required:
                              - path
                              - server
                            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
                          downwardAPI:
                            description: >-
                              DownwardAPI represents downward API about the pod
                              that should populate this volume
                            type: object
                            properties:
                              defaultMode:
                                description: >-
                                  Optional: mode bits to use on created files by
                                  default. Must be a value between 0 and 0777.
                                  Defaults to 0644. Directories within the path
                                  are not affected by this setting. This might
                                  be in conflict with other options that affect
                                  the file mode, like fsGroup, and the result
                                  can be other mode bits set.
                                type: integer
                                format: int32
                              items:
                                description: Items is a list of downward API volume file
                                type: array
                                items:
                                  description: >-
                                    DownwardAPIVolumeFile represents information
                                    to create the file containing the pod field
                                  type: object
                                  required:
                                    - path
                                  properties:
                                    fieldRef:
                                      description: >-
                                        Required: Selects a field of the pod:
                                        only annotations, labels, name and
                                        namespace are supported.
                                      type: object
                                      required:
                                        - fieldPath
                                      properties:
                                        apiVersion:
                                          description: >-
                                            Version of the schema the FieldPath is
                                            written in terms of, defaults to "v1".
                                          type: string
                                        fieldPath:
                                          description: >-
                                            Path of the field to select in the
                                            specified API version.
                                          type: string
                                    mode:
                                      description: >-
                                        Optional: mode bits to use on this file,
                                        must be a value between 0 and 0777. If
                                        not specified, the volume defaultMode
                                        will be used. This might be in conflict
                                        with other options that affect the file
                                        mode, like fsGroup, and the result can
                                        be other mode bits set.
                                      type: integer
                                      format: int32
                                    path:
                                      description: >-
                                        Required: Path is  the relative path
                                        name of the file to be created. Must not
                                        be absolute or contain the '..' path.
                                        Must be utf-8 encoded. The first item of
                                        the relative path must not start with
                                        '..'
                                      type: string
                                    resourceFieldRef:
                                      description: >-
                                        Selects a resource of the container:
                                        only resources limits and requests
                                        (limits.cpu, limits.memory, requests.cpu
                                        and requests.memory) are currently
                                        supported.
                                      type: object
                                      required:
                                        - resource
                                      properties:
                                        containerName:
                                          description: >-
                                            Container name: required for volumes,
                                            optional for env vars
                                          type: string
                                        divisor:
                                          description: >-
                                            Specifies the output format of the
                                            exposed resources, defaults to "1"
                                          pattern: >-
                                            ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                          anyOf:
                                            - type: integer
                                            - type: string
                                          x-kubernetes-int-or-string: true
                                        resource:
                                          description: 'Required: resource to select'
                                          type: string
                          gcePersistentDisk:
                            description: >-
                              GCEPersistentDisk represents a GCE Disk resource
                              that is attached to a kubelet's host machine and
                              then exposed to the pod. More info:
                              https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                            type: object
                            required:
                              - pdName
                            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
                                type: integer
                                format: int32
                              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
                          fc:
                            description: >-
                              FC represents a Fibre Channel resource that is
                              attached to a kubelet's host machine and then
                              exposed to the pod.
                            type: object
                            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'
                                type: integer
                                format: int32
                              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)'
                                type: array
                                items:
                                  type: string
                              wwids:
                                description: >-
                                  Optional: FC volume world wide identifiers
                                  (wwids) Either wwids or combination of
                                  targetWWNs and lun must be set, but not both
                                  simultaneously.
                                type: array
                                items:
                                  type: string
                          vsphereVolume:
                            description: >-
                              VsphereVolume represents a vSphere volume attached
                              and mounted on kubelets host machine
                            type: object
                            required:
                              - volumePath
                            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
                          flocker:
                            description: >-
                              Flocker represents a Flocker volume attached to a
                              kubelet's host machine. This depends on the
                              Flocker control service being running
                            type: object
                            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
                          storageos:
                            description: >-
                              StorageOS represents a StorageOS volume attached
                              and mounted on Kubernetes nodes.
                            type: object
                            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.
                                type: object
                                properties:
                                  name:
                                    description: >-
                                      Name of the referent. More info:
                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      TODO: Add other useful fields. apiVersion,
                                      kind, uid?
                                    type: string
                              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
                    tolerations:
                      description: 'If specified, the pod''s tolerations.'
                      type: array
                      items:
                        description: >-
                          The pod this Toleration is attached to tolerates any
                          taint that matches the triple <key,value,effect> using
                          the matching operator <operator>.
                        type: object
                        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.
                            type: integer
                            format: int64
                          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
                    priorityClassName:
                      description: PriorityClassName for Jenkins master pod
                      type: string
                    labels:
                      description: >-
                        Map of string keys and values that can be used to
                        organize and categorize (scope and select) objects. May
                        match selectors of replication controllers and services.
                        More info: http://kubernetes.io/docs/user-guide/labels
                      type: object
                      additionalProperties:
                        type: string
                jenkinsAPISettings:
                  description: >-
                    JenkinsAPISettings defines configuration used by the
                    operator to gain admin access to the Jenkins API
                  type: object
                  required:
                    - authorizationStrategy
                  properties:
                    authorizationStrategy:
                      description: >-
                        AuthorizationStrategy defines authorization strategy of
                        the operator for the Jenkins API
                      type: string
                jnlpService:
                  description: >-
                    Service is Kubernetes service of Jenkins agent pods Defaults
                    to : port: 50000 type: ClusterIP
                  type: object
                  properties:
                    annotations:
                      description: >-
                        Annotations is an unstructured key value map stored with
                        a resource that may be set by external tools to store
                        and retrieve arbitrary metadata. They are not queryable
                        and should be preserved when modifying objects. More
                        info: http://kubernetes.io/docs/user-guide/annotations
                      type: object
                      additionalProperties:
                        type: string
                    labels:
                      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
                      additionalProperties:
                        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/
                      type: array
                      items:
                        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
                      type: integer
                      format: int32
                    port:
                      description: >-
                        The port that are exposed by this service. More info:
                        https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
                      type: integer
                      format: int32
                    portName:
                      description: >-
                        The PortName that are exposed by this service. More
                        info:
                        https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
                      type: string
                    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
                jenkinsImageRef:
                  description: >-
                    JenkinsImageRef a reference to a JenkinsImage in the current
                    namespace. The JenkinsImage must have status to be
                    "SuccessfullyBuilt" ; then the image target image in
                    JenkinsImage.To will be used as the image of the Master
                    container.
                  type: string
                persistentSpec:
                  description: PersistentSpec
                  type: object
                  properties:
                    enabled:
                      type: boolean
                    storageClassName:
                      type: string
                    volumeSize:
                      type: string
                configurationAsCode:
                  description: >-
                    ConfigurationAsCode defines configuration of Jenkins
                    configuration via Configuration as Code Jenkins plugin
                  type: object
                  required:
                    - defaultConfig
                    - enableAutoReload
                    - enabled
                  properties:
                    configurations:
                      type: array
                      items:
                        description: ConfigMapRef is reference to Kubernetes ConfigMap
                        type: object
                        required:
                          - name
                        properties:
                          name:
                            type: string
                    defaultConfig:
                      type: boolean
                    enableAutoReload:
                      type: boolean
                    enabled:
                      type: boolean
                    secret:
                      description: SecretRef is reference to Kubernetes secret
                      type: object
                      required:
                        - name
                      properties:
                        name:
                          type: string
                service:
                  description: >-
                    Service is Kubernetes service of Jenkins master HTTP pod
                    Defaults to : port: 8080 type: ClusterIP
                  type: object
                  properties:
                    annotations:
                      description: >-
                        Annotations is an unstructured key value map stored with
                        a resource that may be set by external tools to store
                        and retrieve arbitrary metadata. They are not queryable
                        and should be preserved when modifying objects. More
                        info: http://kubernetes.io/docs/user-guide/annotations
                      type: object
                      additionalProperties:
                        type: string
                    labels:
                      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
                      additionalProperties:
                        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/
                      type: array
                      items:
                        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
                      type: integer
                      format: int32
                    port:
                      description: >-
                        The port that are exposed by this service. More info:
                        https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
                      type: integer
                      format: int32
                    portName:
                      description: >-
                        The PortName that are exposed by this service. More
                        info:
                        https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
                      type: string
                    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
                backupVolumes:
                  description: BackupEnabled defines whether backup feature is enabled
                  type: array
                  items:
                    type: string
                forceBasePluginsInstall:
                  type: boolean
                serviceAccount:
                  description: >-
                    ServiceAccount defines Jenkins master service account
                    attributes
                  type: object
                  properties:
                    annotations:
                      description: >-
                        Annotations is an unstructured key value map stored with
                        a resource that may be set by external tools to store
                        and retrieve arbitrary metadata. They are not queryable
                        and should be preserved when modifying objects. More
                        info: http://kubernetes.io/docs/user-guide/annotations
                      type: object
                      additionalProperties:
                        type: string
                proxyConfigurationEnabled:
                  description: >-
                    ProxyConfigurationEnabled defines whether openshift global
                    proxy configuration is enabled if enabled, and if a global
                    proxy is set in openshift, the operator will automatically
                    configure the jenkins proxy
                  type: boolean
                roles:
                  description: >-
                    Roles defines list of extra RBAC roles for the Jenkins
                    Master pod service account
                  type: array
                  items:
                    description: >-
                      RoleRef contains information that points to the role being
                      used
                    type: object
                    required:
                      - apiGroup
                      - kind
                      - name
                    properties:
                      apiGroup:
                        description: >-
                          APIGroup is the group for the resource being
                          referenced
                        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
                metricsEnabled:
                  description: >-
                    MetricsEnabled defines whether prometheus metrics are
                    enabled
                  type: boolean
            status:
              description: Status defines the observed state of Jenkins
              type: object
              properties:
                conditions:
                  description: Conditions describes the state of the jenkins resource.
                  type: array
                  items:
                    description: >-
                      Condition represents the state of the operator's
                      reconciliation functionality.
                    type: object
                    required:
                      - status
                      - type
                    properties:
                      lastHeartbeatTime:
                        type: string
                        format: date-time
                      lastTransitionTime:
                        type: string
                        format: date-time
                      message:
                        type: string
                      reason:
                        type: string
                      status:
                        type: string
                      type:
                        description: >-
                          ConditionType is the state of the operator's
                          reconciliation functionality.
                        type: string
                operatorVersion:
                  description: >-
                    OperatorVersion is the operator version which manages this
                    CR
                  type: string
                provisionStartTime:
                  description: >-
                    ProvisionStartTime is a time when Jenkins master pod has
                    been created
                  type: string
                  format: date-time
                spec:
                  description: Spec defines the effective state of the Jenkins
                  type: object
                  properties:
                    master:
                      description: >-
                        Master represents Jenkins master pod properties and
                        Jenkins plugins. Every single change here requires a pod
                        restart.
                      type: object
                      properties:
                        nodeSelector:
                          description: >-
                            NodeSelector is a selector which must be true for
                            the pod to fit on a node. Selector which must match
                            a node's labels for the pod to be scheduled on that
                            node. More info:
                            https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
                          type: object
                          additionalProperties:
                            type: string
                        masterAnnotations:
                          description: >-
                            Annotations is an unstructured key value map stored
                            with a resource that may be set by external tools to
                            store and retrieve arbitrary metadata. They are not
                            queryable and should be preserved when modifying
                            objects. More info:
                            http://kubernetes.io/docs/user-guide/annotations
                            Deprecated: will be removed in the future, please
                            use Annotations(annotations)
                          type: object
                          additionalProperties:
                            type: string
                        imagePullSecrets:
                          description: >-
                            ImagePullSecrets is an optional list of references
                            to secrets in the same namespace to use for pulling
                            any of the images used by this PodSpec. If
                            specified, these secrets will be passed to
                            individual puller implementations for them to use.
                            For example, in the case of docker, only
                            DockerConfig type secrets are honored. More info:
                            https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
                          type: array
                          items:
                            description: >-
                              LocalObjectReference contains enough information
                              to let you locate the referenced object inside the
                              same namespace.
                            type: object
                            properties:
                              name:
                                description: >-
                                  Name of the referent. More info:
                                  https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                  TODO: Add other useful fields. apiVersion,
                                  kind, uid?
                                type: string
                        annotations:
                          description: >-
                            Annotations is an unstructured key value map stored
                            with a resource that may be set by external tools to
                            store and retrieve arbitrary metadata. They are not
                            queryable and should be preserved when modifying
                            objects. More info:
                            http://kubernetes.io/docs/user-guide/annotations
                          type: object
                          additionalProperties:
                            type: string
                        securityContext:
                          description: >-
                            SecurityContext that applies to all the containers
                            of the Jenkins Master. As per kubernetes
                            specification, it can be overridden for each
                            container individually. Defaults to: runAsUser: 1000
                            fsGroup: 1000
                          type: object
                          properties:
                            fsGroup:
                              description: >-
                                A special supplemental group that applies to all
                                containers in a pod. Some volume types allow the
                                Kubelet to change the ownership of that volume
                                to be owned by the pod: 
                                 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- 
                                 If unset, the Kubelet will not modify the ownership and permissions of any volume.
                              type: integer
                              format: int64
                            runAsGroup:
                              description: >-
                                The GID to run the entrypoint of the container
                                process. Uses runtime default if unset. May also
                                be set in SecurityContext.  If set in both
                                SecurityContext and PodSecurityContext, the
                                value specified in SecurityContext takes
                                precedence for that container.
                              type: integer
                              format: int64
                            runAsNonRoot:
                              description: >-
                                Indicates that the container must run as a
                                non-root user. If true, the Kubelet will
                                validate the image at runtime to ensure that it
                                does not run as UID 0 (root) and fail to start
                                the container if it does. If unset or false, no
                                such validation will be performed. May also be
                                set in SecurityContext.  If set in both
                                SecurityContext and PodSecurityContext, the
                                value specified in SecurityContext takes
                                precedence.
                              type: boolean
                            runAsUser:
                              description: >-
                                The UID to run the entrypoint of the container
                                process. Defaults to user specified in image
                                metadata if unspecified. May also be set in
                                SecurityContext.  If set in both SecurityContext
                                and PodSecurityContext, the value specified in
                                SecurityContext takes precedence for that
                                container.
                              type: integer
                              format: int64
                            seLinuxOptions:
                              description: >-
                                The SELinux context to be applied to all
                                containers. If unspecified, the container
                                runtime will allocate a random SELinux context
                                for each container.  May also be set in
                                SecurityContext.  If set in both SecurityContext
                                and PodSecurityContext, the value specified in
                                SecurityContext takes precedence for that
                                container.
                              type: object
                              properties:
                                level:
                                  description: >-
                                    Level is SELinux level label that applies to
                                    the container.
                                  type: string
                                role:
                                  description: >-
                                    Role is a SELinux role label that applies to
                                    the container.
                                  type: string
                                type:
                                  description: >-
                                    Type is a SELinux type label that applies to
                                    the container.
                                  type: string
                                user:
                                  description: >-
                                    User is a SELinux user label that applies to
                                    the container.
                                  type: string
                            supplementalGroups:
                              description: >-
                                A list of groups applied to the first process
                                run in each container, in addition to the
                                container's primary GID.  If unspecified, no
                                groups will be added to any container.
                              type: array
                              items:
                                type: integer
                                format: int64
                            sysctls:
                              description: >-
                                Sysctls hold a list of namespaced sysctls used
                                for the pod. Pods with unsupported sysctls (by
                                the container runtime) might fail to launch.
                              type: array
                              items:
                                description: Sysctl defines a kernel parameter to be set
                                type: object
                                required:
                                  - name
                                  - value
                                properties:
                                  name:
                                    description: Name of a property to set
                                    type: string
                                  value:
                                    description: Value of a property to set
                                    type: string
                            windowsOptions:
                              description: >-
                                The Windows specific settings applied to all
                                containers. If unspecified, the options within a
                                container's SecurityContext will be used. If set
                                in both SecurityContext and PodSecurityContext,
                                the value specified in SecurityContext takes
                                precedence.
                              type: object
                              properties:
                                gmsaCredentialSpec:
                                  description: >-
                                    GMSACredentialSpec is where the GMSA
                                    admission webhook
                                    (https://github.com/kubernetes-sigs/windows-gmsa)
                                    inlines the contents of the GMSA credential
                                    spec named by the GMSACredentialSpecName
                                    field. This field is alpha-level and is only
                                    honored by servers that enable the
                                    WindowsGMSA feature flag.
                                  type: string
                                gmsaCredentialSpecName:
                                  description: >-
                                    GMSACredentialSpecName is the name of the
                                    GMSA credential spec to use. This field is
                                    alpha-level and is only honored by servers
                                    that enable the WindowsGMSA feature flag.
                                  type: string
                                runAsUserName:
                                  description: >-
                                    The UserName in Windows to run the
                                    entrypoint of the container process.
                                    Defaults to the user specified in image
                                    metadata if unspecified. May also be set in
                                    PodSecurityContext. If set in both
                                    SecurityContext and PodSecurityContext, the
                                    value specified in SecurityContext takes
                                    precedence. This field is alpha-level and it
                                    is only honored by servers that enable the
                                    WindowsRunAsUserName feature flag.
                                  type: string
                        basePlugins:
                          description: >-
                            BasePlugins contains plugins required by operator
                            Defaults to : - name: kubernetes version: 1.15.7 -
                            name: workflow-job version: "2.39" - name:
                            workflow-aggregator version: "2.6" - name: git
                            version: 3.10.0 - name: job-dsl version: "1.74" -
                            name: configuration-as-code version: "1.19" - name:
                            kubernetes-credentials-provider version: 0.12.1
                          type: array
                          items:
                            description: Plugin defines Jenkins plugin.
                            type: object
                            required:
                              - name
                              - version
                            properties:
                              downloadURL:
                                description: >-
                                  DownloadURL is the custom url from where
                                  plugin has to be downloaded.
                                type: string
                              name:
                                description: Name is the name of Jenkins plugin
                                type: string
                              version:
                                description: Version is the version of Jenkins plugin
                                type: string
                        containers:
                          description: >-
                            List of containers belonging to the pod. Containers
                            cannot currently be added or removed. There must be
                            at least one container in a Pod. Defaults to: -
                            image: jenkins/jenkins:lts   imagePullPolicy:
                            Always   livenessProbe:     failureThreshold: 12    
                            httpGet:       path: /login       port: http      
                            scheme: HTTP     initialDelaySeconds: 80    
                            periodSeconds: 10     successThreshold: 1    
                            timeoutSeconds: 5   name: jenkins-master  
                            readinessProbe:     failureThreshold: 3    
                            httpGet:       path: /login       port: http      
                            scheme: HTTP     initialDelaySeconds: 30    
                            periodSeconds: 10     successThreshold: 1    
                            timeoutSeconds: 1   resources:     limits:      
                            cpu: 1500m       memory: 3Gi     requests:      
                            cpu: "1"       memory: 600Mi
                          type: array
                          items:
                            description: Container defines Kubernetes container attributes.
                            type: object
                            required:
                              - image
                              - name
                            properties:
                              resources:
                                description: >-
                                  Compute Resources required by this container.
                                  More info:
                                  https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
                                type: object
                                properties:
                                  limits:
                                    description: >-
                                      Limits describes the maximum amount of
                                      compute resources allowed. More info:
                                      https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
                                    type: object
                                    additionalProperties:
                                      pattern: >-
                                        ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      anyOf:
                                        - type: integer
                                        - type: string
                                      x-kubernetes-int-or-string: true
                                  requests:
                                    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
                                    additionalProperties:
                                      pattern: >-
                                        ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                      anyOf:
                                        - type: integer
                                        - type: string
                                      x-kubernetes-int-or-string: true
                              readinessProbe:
                                description: >-
                                  Periodic probe of container service readiness.
                                  Container will be removed from service
                                  endpoints if the probe fails.
                                type: object
                                properties:
                                  exec:
                                    description: >-
                                      One and only one of the following should
                                      be specified. Exec specifies the action to
                                      take.
                                    type: object
                                    properties:
                                      command:
                                        description: >-
                                          Command is the command line to execute
                                          inside the container, the working
                                          directory for the command  is root ('/')
                                          in the container's filesystem. The
                                          command is simply exec'd, it is not run
                                          inside a shell, so traditional shell
                                          instructions ('|', etc) won't work. To
                                          use a shell, you need to explicitly call
                                          out to that shell. Exit status of 0 is
                                          treated as live/healthy and non-zero is
                                          unhealthy.
                                        type: array
                                        items:
                                          type: string
                                  failureThreshold:
                                    description: >-
                                      Minimum consecutive failures for the probe
                                      to be considered failed after having
                                      succeeded. Defaults to 3. Minimum value is
                                      1.
                                    type: integer
                                    format: int32
                                  httpGet:
                                    description: >-
                                      HTTPGet specifies the http request to
                                      perform.
                                    type: object
                                    required:
                                      - port
                                    properties:
                                      host:
                                        description: >-
                                          Host name to connect to, defaults to the
                                          pod IP. You probably want to set "Host"
                                          in httpHeaders instead.
                                        type: string
                                      httpHeaders:
                                        description: >-
                                          Custom headers to set in the request.
                                          HTTP allows repeated headers.
                                        type: array
                                        items:
                                          description: >-
                                            HTTPHeader describes a custom header to
                                            be used in HTTP probes
                                          type: object
                                          required:
                                            - name
                                            - value
                                          properties:
                                            name:
                                              description: The header field name
                                              type: string
                                            value:
                                              description: The header field value
                                              type: string
                                      path:
                                        description: Path to access on the HTTP server.
                                        type: string
                                      port:
                                        description: >-
                                          Name or number of the port to access on
                                          the container. Number must be in the
                                          range 1 to 65535. Name must be an
                                          IANA_SVC_NAME.
                                        anyOf:
                                          - type: integer
                                          - type: string
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        description: >-
                                          Scheme to use for connecting to the
                                          host. Defaults to HTTP.
                                        type: string
                                  initialDelaySeconds:
                                    description: >-
                                      Number of seconds after the container has
                                      started before liveness probes are
                                      initiated. More info:
                                      https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                    type: integer
                                    format: int32
                                  periodSeconds:
                                    description: >-
                                      How often (in seconds) to perform the
                                      probe. Default to 10 seconds. Minimum
                                      value is 1.
                                    type: integer
                                    format: int32
                                  successThreshold:
                                    description: >-
                                      Minimum consecutive successes for the
                                      probe to be considered successful after
                                      having failed. Defaults to 1. Must be 1
                                      for liveness and startup. Minimum value is
                                      1.
                                    type: integer
                                    format: int32
                                  tcpSocket:
                                    description: >-
                                      TCPSocket specifies an action involving a
                                      TCP port. TCP hooks not yet supported
                                      TODO: implement a realistic TCP lifecycle
                                      hook
                                    type: object
                                    required:
                                      - port
                                    properties:
                                      host:
                                        description: >-
                                          Optional: Host name to connect to,
                                          defaults to the pod IP.
                                        type: string
                                      port:
                                        description: >-
                                          Number or name of the port to access on
                                          the container. Number must be in the
                                          range 1 to 65535. Name must be an
                                          IANA_SVC_NAME.
                                        anyOf:
                                          - type: integer
                                          - type: string
                                        x-kubernetes-int-or-string: true
                                  timeoutSeconds:
                                    description: >-
                                      Number of seconds after which the probe
                                      times out. Defaults to 1 second. Minimum
                                      value is 1. More info:
                                      https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                    type: integer
                                    format: int32
                              lifecycle:
                                description: >-
                                  Actions that the management system should take
                                  in response to container lifecycle events.
                                type: object
                                properties:
                                  postStart:
                                    description: >-
                                      PostStart is called immediately after a
                                      container is created. If the handler
                                      fails, the container is terminated and
                                      restarted according to its restart policy.
                                      Other management of the container blocks
                                      until the hook completes. More info:
                                      https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
                                    type: object
                                    properties:
                                      exec:
                                        description: >-
                                          One and only one of the following should
                                          be specified. Exec specifies the action
                                          to take.
                                        type: object
                                        properties:
                                          command:
                                            description: >-
                                              Command is the command line to execute
                                              inside the container, the working
                                              directory for the command  is root ('/')
                                              in the container's filesystem. The
                                              command is simply exec'd, it is not run
                                              inside a shell, so traditional shell
                                              instructions ('|', etc) won't work. To
                                              use a shell, you need to explicitly call
                                              out to that shell. Exit status of 0 is
                                              treated as live/healthy and non-zero is
                                              unhealthy.
                                            type: array
                                            items:
                                              type: string
                                      httpGet:
                                        description: >-
                                          HTTPGet specifies the http request to
                                          perform.
                                        type: object
                                        required:
                                          - port
                                        properties:
                                          host:
                                            description: >-
                                              Host name to connect to, defaults to the
                                              pod IP. You probably want to set "Host"
                                              in httpHeaders instead.
                                            type: string
                                          httpHeaders:
                                            description: >-
                                              Custom headers to set in the request.
                                              HTTP allows repeated headers.
                                            type: array
                                            items:
                                              description: >-
                                                HTTPHeader describes a custom header to
                                                be used in HTTP probes
                                              type: object
                                              required:
                                                - name
                                                - value
                                              properties:
                                                name:
                                                  description: The header field name
                                                  type: string
                                                value:
                                                  description: The header field value
                                                  type: string
                                          path:
                                            description: Path to access on the HTTP server.
                                            type: string
                                          port:
                                            description: >-
                                              Name or number of the port to access on
                                              the container. Number must be in the
                                              range 1 to 65535. Name must be an
                                              IANA_SVC_NAME.
                                            anyOf:
                                              - type: integer
                                              - type: string
                                            x-kubernetes-int-or-string: true
                                          scheme:
                                            description: >-
                                              Scheme to use for connecting to the
                                              host. Defaults to HTTP.
                                            type: string
                                      tcpSocket:
                                        description: >-
                                          TCPSocket specifies an action involving
                                          a TCP port. TCP hooks not yet supported
                                          TODO: implement a realistic TCP
                                          lifecycle hook
                                        type: object
                                        required:
                                          - port
                                        properties:
                                          host:
                                            description: >-
                                              Optional: Host name to connect to,
                                              defaults to the pod IP.
                                            type: string
                                          port:
                                            description: >-
                                              Number or name of the port to access on
                                              the container. Number must be in the
                                              range 1 to 65535. Name must be an
                                              IANA_SVC_NAME.
                                            anyOf:
                                              - type: integer
                                              - type: string
                                            x-kubernetes-int-or-string: true
                                  preStop:
                                    description: >-
                                      PreStop is called immediately before a
                                      container is terminated due to an API
                                      request or management event such as
                                      liveness/startup probe failure,
                                      preemption, resource contention, etc. The
                                      handler is not called if the container
                                      crashes or exits. The reason for
                                      termination is passed to the handler. The
                                      Pod's termination grace period countdown
                                      begins before the PreStop hooked is
                                      executed. Regardless of the outcome of the
                                      handler, the container will eventually
                                      terminate within the Pod's termination
                                      grace period. Other management of the
                                      container blocks until the hook completes
                                      or until the termination grace period is
                                      reached. More info:
                                      https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
                                    type: object
                                    properties:
                                      exec:
                                        description: >-
                                          One and only one of the following should
                                          be specified. Exec specifies the action
                                          to take.
                                        type: object
                                        properties:
                                          command:
                                            description: >-
                                              Command is the command line to execute
                                              inside the container, the working
                                              directory for the command  is root ('/')
                                              in the container's filesystem. The
                                              command is simply exec'd, it is not run
                                              inside a shell, so traditional shell
                                              instructions ('|', etc) won't work. To
                                              use a shell, you need to explicitly call
                                              out to that shell. Exit status of 0 is
                                              treated as live/healthy and non-zero is
                                              unhealthy.
                                            type: array
                                            items:
                                              type: string
                                      httpGet:
                                        description: >-
                                          HTTPGet specifies the http request to
                                          perform.
                                        type: object
                                        required:
                                          - port
                                        properties:
                                          host:
                                            description: >-
                                              Host name to connect to, defaults to the
                                              pod IP. You probably want to set "Host"
                                              in httpHeaders instead.
                                            type: string
                                          httpHeaders:
                                            description: >-
                                              Custom headers to set in the request.
                                              HTTP allows repeated headers.
                                            type: array
                                            items:
                                              description: >-
                                                HTTPHeader describes a custom header to
                                                be used in HTTP probes
                                              type: object
                                              required:
                                                - name
                                                - value
                                              properties:
                                                name:
                                                  description: The header field name
                                                  type: string
                                                value:
                                                  description: The header field value
                                                  type: string
                                          path:
                                            description: Path to access on the HTTP server.
                                            type: string
                                          port:
                                            description: >-
                                              Name or number of the port to access on
                                              the container. Number must be in the
                                              range 1 to 65535. Name must be an
                                              IANA_SVC_NAME.
                                            anyOf:
                                              - type: integer
                                              - type: string
                                            x-kubernetes-int-or-string: true
                                          scheme:
                                            description: >-
                                              Scheme to use for connecting to the
                                              host. Defaults to HTTP.
                                            type: string
                                      tcpSocket:
                                        description: >-
                                          TCPSocket specifies an action involving
                                          a TCP port. TCP hooks not yet supported
                                          TODO: implement a realistic TCP
                                          lifecycle hook
                                        type: object
                                        required:
                                          - port
                                        properties:
                                          host:
                                            description: >-
                                              Optional: Host name to connect to,
                                              defaults to the pod IP.
                                            type: string
                                          port:
                                            description: >-
                                              Number or name of the port to access on
                                              the container. Number must be in the
                                              range 1 to 65535. Name must be an
                                              IANA_SVC_NAME.
                                            anyOf:
                                              - type: integer
                                              - type: string
                                            x-kubernetes-int-or-string: true
                              name:
                                description: >-
                                  Name of the container specified as a
                                  DNS_LABEL. Each container in a pod must have a
                                  unique name (DNS_LABEL).
                                type: string
                              command:
                                description: >-
                                  Entrypoint array. Not executed within a shell.
                                  The docker image's ENTRYPOINT is used if this
                                  is not provided. Variable references
                                  $(VAR_NAME) are expanded using the container's
                                  environment. If a variable cannot be resolved,
                                  the reference in the input string will be
                                  unchanged. The $(VAR_NAME) syntax can be
                                  escaped with a double $$, ie: $$(VAR_NAME).
                                  Escaped references will never be expanded,
                                  regardless of whether the variable exists or
                                  not. More info:
                                  https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
                                type: array
                                items:
                                  type: string
                              livenessProbe:
                                description: >-
                                  Periodic probe of container liveness.
                                  Container will be restarted if the probe
                                  fails.
                                type: object
                                properties:
                                  exec:
                                    description: >-
                                      One and only one of the following should
                                      be specified. Exec specifies the action to
                                      take.
                                    type: object
                                    properties:
                                      command:
                                        description: >-
                                          Command is the command line to execute
                                          inside the container, the working
                                          directory for the command  is root ('/')
                                          in the container's filesystem. The
                                          command is simply exec'd, it is not run
                                          inside a shell, so traditional shell
                                          instructions ('|', etc) won't work. To
                                          use a shell, you need to explicitly call
                                          out to that shell. Exit status of 0 is
                                          treated as live/healthy and non-zero is
                                          unhealthy.
                                        type: array
                                        items:
                                          type: string
                                  failureThreshold:
                                    description: >-
                                      Minimum consecutive failures for the probe
                                      to be considered failed after having
                                      succeeded. Defaults to 3. Minimum value is
                                      1.
                                    type: integer
                                    format: int32
                                  httpGet:
                                    description: >-
                                      HTTPGet specifies the http request to
                                      perform.
                                    type: object
                                    required:
                                      - port
                                    properties:
                                      host:
                                        description: >-
                                          Host name to connect to, defaults to the
                                          pod IP. You probably want to set "Host"
                                          in httpHeaders instead.
                                        type: string
                                      httpHeaders:
                                        description: >-
                                          Custom headers to set in the request.
                                          HTTP allows repeated headers.
                                        type: array
                                        items:
                                          description: >-
                                            HTTPHeader describes a custom header to
                                            be used in HTTP probes
                                          type: object
                                          required:
                                            - name
                                            - value
                                          properties:
                                            name:
                                              description: The header field name
                                              type: string
                                            value:
                                              description: The header field value
                                              type: string
                                      path:
                                        description: Path to access on the HTTP server.
                                        type: string
                                      port:
                                        description: >-
                                          Name or number of the port to access on
                                          the container. Number must be in the
                                          range 1 to 65535. Name must be an
                                          IANA_SVC_NAME.
                                        anyOf:
                                          - type: integer
                                          - type: string
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        description: >-
                                          Scheme to use for connecting to the
                                          host. Defaults to HTTP.
                                        type: string
                                  initialDelaySeconds:
                                    description: >-
                                      Number of seconds after the container has
                                      started before liveness probes are
                                      initiated. More info:
                                      https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                    type: integer
                                    format: int32
                                  periodSeconds:
                                    description: >-
                                      How often (in seconds) to perform the
                                      probe. Default to 10 seconds. Minimum
                                      value is 1.
                                    type: integer
                                    format: int32
                                  successThreshold:
                                    description: >-
                                      Minimum consecutive successes for the
                                      probe to be considered successful after
                                      having failed. Defaults to 1. Must be 1
                                      for liveness and startup. Minimum value is
                                      1.
                                    type: integer
                                    format: int32
                                  tcpSocket:
                                    description: >-
                                      TCPSocket specifies an action involving a
                                      TCP port. TCP hooks not yet supported
                                      TODO: implement a realistic TCP lifecycle
                                      hook
                                    type: object
                                    required:
                                      - port
                                    properties:
                                      host:
                                        description: >-
                                          Optional: Host name to connect to,
                                          defaults to the pod IP.
                                        type: string
                                      port:
                                        description: >-
                                          Number or name of the port to access on
                                          the container. Number must be in the
                                          range 1 to 65535. Name must be an
                                          IANA_SVC_NAME.
                                        anyOf:
                                          - type: integer
                                          - type: string
                                        x-kubernetes-int-or-string: true
                                  timeoutSeconds:
                                    description: >-
                                      Number of seconds after which the probe
                                      times out. Defaults to 1 second. Minimum
                                      value is 1. More info:
                                      https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                                    type: integer
                                    format: int32
                              env:
                                description: >-
                                  List of environment variables to set in the
                                  container.
                                type: array
                                items:
                                  description: >-
                                    EnvVar represents an environment variable
                                    present in a Container.
                                  type: object
                                  required:
                                    - name
                                  properties:
                                    name:
                                      description: >-
                                        Name of the environment variable. Must
                                        be a C_IDENTIFIER.
                                      type: string
                                    value:
                                      description: >-
                                        Variable references $(VAR_NAME) are
                                        expanded using the previous defined
                                        environment variables in the container
                                        and any service environment variables.
                                        If a variable cannot be resolved, the
                                        reference in the input string will be
                                        unchanged. The $(VAR_NAME) syntax can be
                                        escaped with a double $$, ie:
                                        $$(VAR_NAME). Escaped references will
                                        never be expanded, regardless of whether
                                        the variable exists or not. Defaults to
                                        "".
                                      type: string
                                    valueFrom:
                                      description: >-
                                        Source for the environment variable's
                                        value. Cannot be used if value is not
                                        empty.
                                      type: object
                                      properties:
                                        configMapKeyRef:
                                          description: Selects a key of a ConfigMap.
                                          type: object
                                          required:
                                            - key
                                          properties:
                                            key:
                                              description: The key to select.
                                              type: string
                                            name:
                                              description: >-
                                                Name of the referent. More info:
                                                https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                TODO: Add other useful fields.
                                                apiVersion, kind, uid?
                                              type: string
                                            optional:
                                              description: >-
                                                Specify whether the ConfigMap or its key
                                                must be defined
                                              type: boolean
                                        fieldRef:
                                          description: >-
                                            Selects a field of the pod: supports
                                            metadata.name, metadata.namespace,
                                            metadata.labels, metadata.annotations,
                                            spec.nodeName, spec.serviceAccountName,
                                            status.hostIP, status.podIP.
                                          type: object
                                          required:
                                            - fieldPath
                                          properties:
                                            apiVersion:
                                              description: >-
                                                Version of the schema the FieldPath is
                                                written in terms of, defaults to "v1".
                                              type: string
                                            fieldPath:
                                              description: >-
                                                Path of the field to select in the
                                                specified API version.
                                              type: string
                                        resourceFieldRef:
                                          description: >-
                                            Selects a resource of the container:
                                            only resources limits and requests
                                            (limits.cpu, limits.memory,
                                            limits.ephemeral-storage, requests.cpu,
                                            requests.memory and
                                            requests.ephemeral-storage) are
                                            currently supported.
                                          type: object
                                          required:
                                            - resource
                                          properties:
                                            containerName:
                                              description: >-
                                                Container name: required for volumes,
                                                optional for env vars
                                              type: string
                                            divisor:
                                              description: >-
                                                Specifies the output format of the
                                                exposed resources, defaults to "1"
                                              pattern: >-
                                                ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                              anyOf:
                                                - type: integer
                                                - type: string
                                              x-kubernetes-int-or-string: true
                                            resource:
                                              description: 'Required: resource to select'
                                              type: string
                                        secretKeyRef:
                                          description: >-
                                            Selects a key of a secret in the pod's
                                            namespace
                                          type: object
                                          required:
                                            - key
                                          properties:
                                            key:
                                              description: >-
                                                The key of the secret to select from. 
                                                Must be a valid secret key.
                                              type: string
                                            name:
                                              description: >-
                                                Name of the referent. More info:
                                                https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                TODO: Add other useful fields.
                                                apiVersion, kind, uid?
                                              type: string
                                            optional:
                                              description: >-
                                                Specify whether the Secret or its key
                                                must be defined
                                              type: boolean
                              securityContext:
                                description: >-
                                  Security options the pod should run with. More
                                  info:
                                  https://kubernetes.io/docs/concepts/policy/security-context/
                                  More info:
                                  https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
                                type: object
                                properties:
                                  runAsGroup:
                                    description: >-
                                      The GID to run the entrypoint of the
                                      container process. Uses runtime default if
                                      unset. May also be set in
                                      PodSecurityContext.  If set in both
                                      SecurityContext and PodSecurityContext,
                                      the value specified in SecurityContext
                                      takes precedence.
                                    type: integer
                                    format: int64
                                  procMount:
                                    description: >-
                                      procMount denotes the type of proc mount
                                      to use for the containers. The default is
                                      DefaultProcMount which uses the container
                                      runtime defaults for readonly paths and
                                      masked paths. This requires the
                                      ProcMountType feature flag to be enabled.
                                    type: string
                                  runAsUser:
                                    description: >-
                                      The UID to run the entrypoint of the
                                      container process. Defaults to user
                                      specified in image metadata if
                                      unspecified. May also be set in
                                      PodSecurityContext.  If set in both
                                      SecurityContext and PodSecurityContext,
                                      the value specified in SecurityContext
                                      takes precedence.
                                    type: integer
                                    format: int64
                                  readOnlyRootFilesystem:
                                    description: >-
                                      Whether this container has a read-only
                                      root filesystem. Default is false.
                                    type: boolean
                                  runAsNonRoot:
                                    description: >-
                                      Indicates that the container must run as a
                                      non-root user. If true, the Kubelet will
                                      validate the image at runtime to ensure
                                      that it does not run as UID 0 (root) and
                                      fail to start the container if it does. If
                                      unset or false, no such validation will be
                                      performed. May also be set in
                                      PodSecurityContext.  If set in both
                                      SecurityContext and PodSecurityContext,
                                      the value specified in SecurityContext
                                      takes precedence.
                                    type: boolean
                                  privileged:
                                    description: >-
                                      Run container in privileged mode.
                                      Processes in privileged containers are
                                      essentially equivalent to root on the
                                      host. Defaults to false.
                                    type: boolean
                                  capabilities:
                                    description: >-
                                      The capabilities to add/drop when running
                                      containers. Defaults to the default set of
                                      capabilities granted by the container
                                      runtime.
                                    type: object
                                    properties:
                                      add:
                                        description: Added capabilities
                                        type: array
                                        items:
                                          description: >-
                                            Capability represent POSIX capabilities
                                            type
                                          type: string
                                      drop:
                                        description: Removed capabilities
                                        type: array
                                        items:
                                          description: >-
                                            Capability represent POSIX capabilities
                                            type
                                          type: string
                                  windowsOptions:
                                    description: >-
                                      The Windows specific settings applied to
                                      all containers. If unspecified, the
                                      options from the PodSecurityContext will
                                      be used. If set in both SecurityContext
                                      and PodSecurityContext, the value
                                      specified in SecurityContext takes
                                      precedence.
                                    type: object
                                    properties:
                                      gmsaCredentialSpec:
                                        description: >-
                                          GMSACredentialSpec is where the GMSA
                                          admission webhook
                                          (https://github.com/kubernetes-sigs/windows-gmsa)
                                          inlines the contents of the GMSA
                                          credential spec named by the
                                          GMSACredentialSpecName field. This field
                                          is alpha-level and is only honored by
                                          servers that enable the WindowsGMSA
                                          feature flag.
                                        type: string
                                      gmsaCredentialSpecName:
                                        description: >-
                                          GMSACredentialSpecName is the name of
                                          the GMSA credential spec to use. This
                                          field is alpha-level and is only honored
                                          by servers that enable the WindowsGMSA
                                          feature flag.
                                        type: string
                                      runAsUserName:
                                        description: >-
                                          The UserName in Windows to run the
                                          entrypoint of the container process.
                                          Defaults to the user specified in image
                                          metadata if unspecified. May also be set
                                          in PodSecurityContext. If set in both
                                          SecurityContext and PodSecurityContext,
                                          the value specified in SecurityContext
                                          takes precedence. This field is
                                          alpha-level and it is only honored by
                                          servers that enable the
                                          WindowsRunAsUserName feature flag.
                                        type: string
                                  seLinuxOptions:
                                    description: >-
                                      The SELinux context to be applied to the
                                      container. If unspecified, the container
                                      runtime will allocate a random SELinux
                                      context for each container.  May also be
                                      set in PodSecurityContext.  If set in both
                                      SecurityContext and PodSecurityContext,
                                      the value specified in SecurityContext
                                      takes precedence.
                                    type: object
                                    properties:
                                      level:
                                        description: >-
                                          Level is SELinux level label that
                                          applies to the container.
                                        type: string
                                      role:
                                        description: >-
                                          Role is a SELinux role label that
                                          applies to the container.
                                        type: string
                                      type:
                                        description: >-
                                          Type is a SELinux type label that
                                          applies to the container.
                                        type: string
                                      user:
                                        description: >-
                                          User is a SELinux user label that
                                          applies to the container.
                                        type: string
                                  allowPrivilegeEscalation:
                                    description: >-
                                      AllowPrivilegeEscalation controls whether
                                      a process can gain more privileges than
                                      its parent process. This bool directly
                                      controls if the no_new_privs flag will be
                                      set on the container process.
                                      AllowPrivilegeEscalation is true always
                                      when the container is: 1) run as
                                      Privileged 2) has CAP_SYS_ADMIN
                                    type: boolean
                              ports:
                                description: >-
                                  List of ports to expose from the container.
                                  Exposing a port here gives the system
                                  additional information about the network
                                  connections a container uses, but is primarily
                                  informational. Not specifying a port here DOES
                                  NOT prevent that port from being exposed. Any
                                  port which is listening on the default
                                  "0.0.0.0" address inside a container will be
                                  accessible from the network.
                                type: array
                                items:
                                  description: >-
                                    ContainerPort represents a network port in a
                                    single container.
                                  type: object
                                  required:
                                    - containerPort
                                  properties:
                                    containerPort:
                                      description: >-
                                        Number of port to expose on the pod's IP
                                        address. This must be a valid port
                                        number, 0 < x < 65536.
                                      type: integer
                                      format: int32
                                    hostIP:
                                      description: >-
                                        What host IP to bind the external port
                                        to.
                                      type: string
                                    hostPort:
                                      description: >-
                                        Number of port to expose on the host. If
                                        specified, this must be a valid port
                                        number, 0 < x < 65536. If HostNetwork is
                                        specified, this must match
                                        ContainerPort. Most containers do not
                                        need this.
                                      type: integer
                                      format: int32
                                    name:
                                      description: >-
                                        If specified, this must be an
                                        IANA_SVC_NAME and unique within the pod.
                                        Each named port in a pod must have a
                                        unique name. Name for the port that can
                                        be referred to by services.
                                      type: string
                                    protocol:
                                      description: >-
                                        Protocol for port. Must be UDP, TCP, or
                                        SCTP. Defaults to "TCP".
                                      type: string
                                      default: TCP
                              imagePullPolicy:
                                description: >-
                                  Image pull policy. One of Always, Never,
                                  IfNotPresent. Defaults to Always.
                                type: string
                              volumeMounts:
                                description: >-
                                  Pod volumes to mount into the container's
                                  filesystem.
                                type: array
                                items:
                                  description: >-
                                    VolumeMount describes a mounting of a Volume
                                    within a container.
                                  type: object
                                  required:
                                    - mountPath
                                    - name
                                  properties:
                                    mountPath:
                                      description: >-
                                        Path within the container at which the
                                        volume should be mounted.  Must not
                                        contain ':'.
                                      type: string
                                    mountPropagation:
                                      description: >-
                                        mountPropagation determines how mounts
                                        are propagated from the host to
                                        container and the other way around. When
                                        not set, MountPropagationNone is used.
                                        This field is beta in 1.10.
                                      type: string
                                    name:
                                      description: This must match the Name of a Volume.
                                      type: string
                                    readOnly:
                                      description: >-
                                        Mounted read-only if true, read-write
                                        otherwise (false or unspecified).
                                        Defaults to false.
                                      type: boolean
                                    subPath:
                                      description: >-
                                        Path within the volume from which the
                                        container's volume should be mounted.
                                        Defaults to "" (volume's root).
                                      type: string
                                    subPathExpr:
                                      description: >-
                                        Expanded path within the volume from
                                        which the container's volume should be
                                        mounted. Behaves similarly to SubPath
                                        but environment variable references
                                        $(VAR_NAME) are expanded using the
                                        container's environment. Defaults to ""
                                        (volume's root). SubPathExpr and SubPath
                                        are mutually exclusive. This field is
                                        beta in 1.15.
                                      type: string
                              envFrom:
                                description: >-
                                  List of sources to populate environment
                                  variables in the container. The keys defined
                                  within a source must be a C_IDENTIFIER. All
                                  invalid keys will be reported as an event when
                                  the container is starting. When a key exists
                                  in multiple sources, the value associated with
                                  the last source will take precedence. Values
                                  defined by an Env with a duplicate key will
                                  take precedence.
                                type: array
                                items:
                                  description: >-
                                    EnvFromSource represents the source of a set
                                    of ConfigMaps
                                  type: object
                                  properties:
                                    configMapRef:
                                      description: The ConfigMap to select from
                                      type: object
                                      properties:
                                        name:
                                          description: >-
                                            Name of the referent. More info:
                                            https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                            TODO: Add other useful fields.
                                            apiVersion, kind, uid?
                                          type: string
                                        optional:
                                          description: >-
                                            Specify whether the ConfigMap must be
                                            defined
                                          type: boolean
                                    prefix:
                                      description: >-
                                        An optional identifier to prepend to
                                        each key in the ConfigMap. Must be a
                                        C_IDENTIFIER.
                                      type: string
                                    secretRef:
                                      description: The Secret to select from
                                      type: object
                                      properties:
                                        name:
                                          description: >-
                                            Name of the referent. More info:
                                            https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                            TODO: Add other useful fields.
                                            apiVersion, kind, uid?
                                          type: string
                                        optional:
                                          description: >-
                                            Specify whether the Secret must be
                                            defined
                                          type: boolean
                              image:
                                description: >-
                                  Docker image name. More info:
                                  https://kubernetes.io/docs/concepts/containers/images
                                type: string
                              workingDir:
                                description: >-
                                  Container's working directory. If not
                                  specified, the container runtime's default
                                  will be used, which might be configured in the
                                  container image.
                                type: string
                              args:
                                description: >-
                                  Arguments to the entrypoint. The docker
                                  image's CMD is used if this is not provided.
                                  Variable references $(VAR_NAME) are expanded
                                  using the container's environment. If a
                                  variable cannot be resolved, the reference in
                                  the input string will be unchanged. The
                                  $(VAR_NAME) syntax can be escaped with a
                                  double $$, ie: $$(VAR_NAME). Escaped
                                  references will never be expanded, regardless
                                  of whether the variable exists or not. More
                                  info:
                                  https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
                                type: array
                                items:
                                  type: string
                        volumes:
                          description: >-
                            List of volumes that can be mounted by containers
                            belonging to the pod. More info:
                            https://kubernetes.io/docs/concepts/storage/volumes
                          type: array
                          items:
                            description: >-
                              Volume represents a named volume in a pod that may
                              be accessed by any container in the pod.
                            type: object
                            required:
                              - name
                            properties:
                              emptyDir:
                                description: >-
                                  EmptyDir represents a temporary directory that
                                  shares a pod's lifetime. More info:
                                  https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                type: object
                                properties:
                                  medium:
                                    description: >-
                                      What type of storage medium should back
                                      this directory. The default is "" which
                                      means to use the node's default medium.
                                      Must be an empty string (default) or
                                      Memory. More info:
                                      https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                                    type: string
                                  sizeLimit:
                                    description: >-
                                      Total amount of local storage required for
                                      this EmptyDir volume. The size limit is
                                      also applicable for memory medium. The
                                      maximum usage on memory medium EmptyDir
                                      would be the minimum value between the
                                      SizeLimit specified here and the sum of
                                      memory limits of all containers in a pod.
                                      The default is nil which means that the
                                      limit is undefined. More info:
                                      http://kubernetes.io/docs/user-guide/volumes#emptydir
                                    pattern: >-
                                      ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                    anyOf:
                                      - type: integer
                                      - type: string
                                    x-kubernetes-int-or-string: true
                              gitRepo:
                                description: >-
                                  GitRepo represents a git repository at a
                                  particular revision. DEPRECATED: GitRepo is
                                  deprecated. To provision a container with a
                                  git repo, mount an EmptyDir into an
                                  InitContainer that clones the repo using git,
                                  then mount the EmptyDir into the Pod's
                                  container.
                                type: object
                                required:
                                  - repository
                                properties:
                                  directory:
                                    description: >-
                                      Target directory name. Must not contain or
                                      start with '..'.  If '.' is supplied, the
                                      volume directory will be the git
                                      repository.  Otherwise, if specified, the
                                      volume will contain the git repository in
                                      the subdirectory with the given name.
                                    type: string
                                  repository:
                                    description: Repository URL
                                    type: string
                                  revision:
                                    description: Commit hash for the specified revision.
                                    type: string
                              cephfs:
                                description: >-
                                  CephFS represents a Ceph FS mount on the host
                                  that shares a pod's lifetime
                                type: object
                                required:
                                  - monitors
                                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
                                    type: array
                                    items:
                                      type: string
                                  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
                                    type: object
                                    properties:
                                      name:
                                        description: >-
                                          Name of the referent. More info:
                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          TODO: Add other useful fields.
                                          apiVersion, kind, uid?
                                        type: string
                                  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
                              cinder:
                                description: >-
                                  Cinder represents a cinder volume attached and
                                  mounted on kubelets host machine. More info:
                                  https://examples.k8s.io/mysql-cinder-pd/README.md
                                type: object
                                required:
                                  - volumeID
                                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.
                                    type: object
                                    properties:
                                      name:
                                        description: >-
                                          Name of the referent. More info:
                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          TODO: Add other useful fields.
                                          apiVersion, kind, uid?
                                        type: string
                                  volumeID:
                                    description: >-
                                      volume id used to identify the volume in
                                      cinder. More info:
                                      https://examples.k8s.io/mysql-cinder-pd/README.md
                                    type: string
                              glusterfs:
                                description: >-
                                  Glusterfs represents a Glusterfs mount on the
                                  host that shares a pod's lifetime. More info:
                                  https://examples.k8s.io/volumes/glusterfs/README.md
                                type: object
                                required:
                                  - endpoints
                                  - path
                                properties:
                                  endpoints:
                                    description: >-
                                      EndpointsName is the endpoint name that
                                      details Glusterfs topology. More info:
                                      https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                    type: string
                                  path:
                                    description: >-
                                      Path is the Glusterfs volume path. More
                                      info:
                                      https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                    type: string
                                  readOnly:
                                    description: >-
                                      ReadOnly here will force the Glusterfs
                                      volume to be mounted with read-only
                                      permissions. Defaults to false. More info:
                                      https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
                                    type: boolean
                              azureFile:
                                description: >-
                                  AzureFile represents an Azure File Service
                                  mount on the host and bind mount to the pod.
                                type: object
                                required:
                                  - secretName
                                  - shareName
                                properties:
                                  readOnly:
                                    description: >-
                                      Defaults to false (read/write). ReadOnly
                                      here will force the ReadOnly setting in
                                      VolumeMounts.
                                    type: boolean
                                  secretName:
                                    description: >-
                                      the name of secret that contains Azure
                                      Storage Account Name and Key
                                    type: string
                                  shareName:
                                    description: Share Name
                                    type: string
                              persistentVolumeClaim:
                                description: >-
                                  PersistentVolumeClaimVolumeSource represents a
                                  reference to a PersistentVolumeClaim in the
                                  same namespace. More info:
                                  https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                type: object
                                required:
                                  - claimName
                                properties:
                                  claimName:
                                    description: >-
                                      ClaimName is the name of a
                                      PersistentVolumeClaim in the same
                                      namespace as the pod using this volume.
                                      More info:
                                      https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
                                    type: string
                                  readOnly:
                                    description: >-
                                      Will force the ReadOnly setting in
                                      VolumeMounts. Default false.
                                    type: boolean
                              name:
                                description: >-
                                  Volume's name. Must be a DNS_LABEL and unique
                                  within the pod. More info:
                                  https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                type: string
                              azureDisk:
                                description: >-
                                  AzureDisk represents an Azure Data Disk mount
                                  on the host and bind mount to the pod.
                                type: object
                                required:
                                  - diskName
                                  - diskURI
                                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
                              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
                                type: object
                                required:
                                  - volumeID
                                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).
                                    type: integer
                                    format: int32
                                  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
                              hostPath:
                                description: >-
                                  HostPath represents a pre-existing file or
                                  directory on the host machine that is directly
                                  exposed to the container. This is generally
                                  used for system agents or other privileged
                                  things that are allowed to see the host
                                  machine. Most containers will NOT need this.
                                  More info:
                                  https://kubernetes.io/docs/concepts/storage/volumes#hostpath
                                  --- TODO(jonesdl) We need to restrict who can
                                  use host directory mounts and who can/can not
                                  mount host directories as read/write.
                                type: object
                                required:
                                  - path
                                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
                              iscsi:
                                description: >-
                                  ISCSI represents an ISCSI Disk resource that
                                  is attached to a kubelet's host machine and
                                  then exposed to the pod. More info:
                                  https://examples.k8s.io/volumes/iscsi/README.md
                                type: object
                                required:
                                  - iqn
                                  - lun
                                  - targetPortal
                                properties:
                                  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
                                    type: object
                                    properties:
                                      name:
                                        description: >-
                                          Name of the referent. More info:
                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          TODO: Add other useful fields.
                                          apiVersion, kind, uid?
                                        type: string
                                  lun:
                                    description: iSCSI Target Lun number.
                                    type: integer
                                    format: int32
                                  iqn:
                                    description: Target iSCSI Qualified Name.
                                    type: string
                                  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).
                                    type: array
                                    items:
                                      type: string
                                  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
                                  iscsiInterface:
                                    description: >-
                                      iSCSI Interface Name that uses an iSCSI
                                      transport. Defaults to 'default' (tcp).
                                    type: string
                                  chapAuthDiscovery:
                                    description: >-
                                      whether support iSCSI Discovery CHAP
                                      authentication
                                    type: boolean
                                  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
                                  chapAuthSession:
                                    description: >-
                                      whether support iSCSI Session CHAP
                                      authentication
                                    type: boolean
                                  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
                              photonPersistentDisk:
                                description: >-
                                  PhotonPersistentDisk represents a
                                  PhotonController persistent disk attached and
                                  mounted on kubelets host machine
                                type: object
                                required:
                                  - pdID
                                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
                              secret:
                                description: >-
                                  Secret represents a secret that should
                                  populate this volume. More info:
                                  https://kubernetes.io/docs/concepts/storage/volumes#secret
                                type: object
                                properties:
                                  defaultMode:
                                    description: >-
                                      Optional: mode bits to use on created
                                      files by default. Must be a value between
                                      0 and 0777. Defaults to 0644. Directories
                                      within the path are not affected by this
                                      setting. This might be in conflict with
                                      other options that affect the file mode,
                                      like fsGroup, and the result can be other
                                      mode bits set.
                                    type: integer
                                    format: int32
                                  items:
                                    description: >-
                                      If unspecified, each key-value pair in the
                                      Data field of the referenced Secret will
                                      be projected into the volume as a file
                                      whose name is the key and content is the
                                      value. If specified, the listed keys will
                                      be projected into the specified paths, and
                                      unlisted keys will not be present. If a
                                      key is specified which is not present in
                                      the Secret, the volume setup will error
                                      unless it is marked optional. Paths must
                                      be relative and may not contain the '..'
                                      path or start with '..'.
                                    type: array
                                    items:
                                      description: >-
                                        Maps a string key to a path within a
                                        volume.
                                      type: object
                                      required:
                                        - key
                                        - path
                                      properties:
                                        key:
                                          description: The key to project.
                                          type: string
                                        mode:
                                          description: >-
                                            Optional: mode bits to use on this file,
                                            must be a value between 0 and 0777. If
                                            not specified, the volume defaultMode
                                            will be used. This might be in conflict
                                            with other options that affect the file
                                            mode, like fsGroup, and the result can
                                            be other mode bits set.
                                          type: integer
                                          format: int32
                                        path:
                                          description: >-
                                            The relative path of the file to map the
                                            key to. May not be an absolute path. May
                                            not contain the path element '..'. May
                                            not start with the string '..'.
                                          type: string
                                  optional:
                                    description: >-
                                      Specify whether the Secret or its keys
                                      must be defined
                                    type: boolean
                                  secretName:
                                    description: >-
                                      Name of the secret in the pod's namespace
                                      to use. More info:
                                      https://kubernetes.io/docs/concepts/storage/volumes#secret
                                    type: string
                              scaleIO:
                                description: >-
                                  ScaleIO represents a ScaleIO persistent volume
                                  attached and mounted on Kubernetes nodes.
                                type: object
                                required:
                                  - gateway
                                  - secretRef
                                  - system
                                properties:
                                  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.
                                    type: object
                                    properties:
                                      name:
                                        description: >-
                                          Name of the referent. More info:
                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          TODO: Add other useful fields.
                                          apiVersion, kind, uid?
                                        type: string
                                  gateway:
                                    description: >-
                                      The host address of the ScaleIO API
                                      Gateway.
                                    type: string
                                  volumeName:
                                    description: >-
                                      The name of a volume already created in
                                      the ScaleIO system that is associated with
                                      this volume source.
                                    type: string
                                  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
                                  system:
                                    description: >-
                                      The name of the storage system as
                                      configured in ScaleIO.
                                    type: string
                                  sslEnabled:
                                    description: >-
                                      Flag to enable/disable SSL communication
                                      with Gateway, default false
                                    type: boolean
                                  storagePool:
                                    description: >-
                                      The ScaleIO Storage Pool associated with
                                      the protection domain.
                                    type: string
                                  protectionDomain:
                                    description: >-
                                      The name of the ScaleIO Protection Domain
                                      for the configured storage.
                                    type: string
                                  storageMode:
                                    description: >-
                                      Indicates whether the storage for a volume
                                      should be ThickProvisioned or
                                      ThinProvisioned. Default is
                                      ThinProvisioned.
                                    type: string
                              flexVolume:
                                description: >-
                                  FlexVolume represents a generic volume
                                  resource that is provisioned/attached using an
                                  exec based plugin.
                                type: object
                                required:
                                  - driver
                                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:
                                    description: 'Optional: Extra command options if any.'
                                    type: object
                                    additionalProperties:
                                      type: string
                                  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.
                                    type: object
                                    properties:
                                      name:
                                        description: >-
                                          Name of the referent. More info:
                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          TODO: Add other useful fields.
                                          apiVersion, kind, uid?
                                        type: string
                              quobyte:
                                description: >-
                                  Quobyte represents a Quobyte mount on the host
                                  that shares a pod's lifetime
                                type: object
                                required:
                                  - registry
                                  - volume
                                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
                              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
                                type: object
                                required:
                                  - image
                                  - monitors
                                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
                                    type: array
                                    items:
                                      type: string
                                  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
                                    type: object
                                    properties:
                                      name:
                                        description: >-
                                          Name of the referent. More info:
                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          TODO: Add other useful fields.
                                          apiVersion, kind, uid?
                                        type: string
                                  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
                              projected:
                                description: >-
                                  Items for all in one resources secrets,
                                  configmaps, and downward API
                                type: object
                                required:
                                  - sources
                                properties:
                                  defaultMode:
                                    description: >-
                                      Mode bits to use on created files by
                                      default. Must be a value between 0 and
                                      0777. Directories within the path are not
                                      affected by this setting. This might be in
                                      conflict with other options that affect
                                      the file mode, like fsGroup, and the
                                      result can be other mode bits set.
                                    type: integer
                                    format: int32
                                  sources:
                                    description: list of volume projections
                                    type: array
                                    items:
                                      description: >-
                                        Projection that may be projected along
                                        with other supported volume types
                                      type: object
                                      properties:
                                        configMap:
                                          description: >-
                                            information about the configMap data to
                                            project
                                          type: object
                                          properties:
                                            items:
                                              description: >-
                                                If unspecified, each key-value pair in
                                                the Data field of the referenced
                                                ConfigMap will be projected into the
                                                volume as a file whose name is the key
                                                and content is the value. If specified,
                                                the listed keys will be projected into
                                                the specified paths, and unlisted keys
                                                will not be present. If a key is
                                                specified which is not present in the
                                                ConfigMap, the volume setup will error
                                                unless it is marked optional. Paths must
                                                be relative and may not contain the '..'
                                                path or start with '..'.
                                              type: array
                                              items:
                                                description: >-
                                                  Maps a string key to a path within a
                                                  volume.
                                                type: object
                                                required:
                                                  - key
                                                  - path
                                                properties:
                                                  key:
                                                    description: The key to project.
                                                    type: string
                                                  mode:
                                                    description: >-
                                                      Optional: mode bits to use on this file,
                                                      must be a value between 0 and 0777. If
                                                      not specified, the volume defaultMode
                                                      will be used. This might be in conflict
                                                      with other options that affect the file
                                                      mode, like fsGroup, and the result can
                                                      be other mode bits set.
                                                    type: integer
                                                    format: int32
                                                  path:
                                                    description: >-
                                                      The relative path of the file to map the
                                                      key to. May not be an absolute path. May
                                                      not contain the path element '..'. May
                                                      not start with the string '..'.
                                                    type: string
                                            name:
                                              description: >-
                                                Name of the referent. More info:
                                                https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                TODO: Add other useful fields.
                                                apiVersion, kind, uid?
                                              type: string
                                            optional:
                                              description: >-
                                                Specify whether the ConfigMap or its
                                                keys must be defined
                                              type: boolean
                                        downwardAPI:
                                          description: >-
                                            information about the downwardAPI data
                                            to project
                                          type: object
                                          properties:
                                            items:
                                              description: >-
                                                Items is a list of DownwardAPIVolume
                                                file
                                              type: array
                                              items:
                                                description: >-
                                                  DownwardAPIVolumeFile represents
                                                  information to create the file
                                                  containing the pod field
                                                type: object
                                                required:
                                                  - path
                                                properties:
                                                  fieldRef:
                                                    description: >-
                                                      Required: Selects a field of the pod:
                                                      only annotations, labels, name and
                                                      namespace are supported.
                                                    type: object
                                                    required:
                                                      - fieldPath
                                                    properties:
                                                      apiVersion:
                                                        description: >-
                                                          Version of the schema the FieldPath is
                                                          written in terms of, defaults to "v1".
                                                        type: string
                                                      fieldPath:
                                                        description: >-
                                                          Path of the field to select in the
                                                          specified API version.
                                                        type: string
                                                  mode:
                                                    description: >-
                                                      Optional: mode bits to use on this file,
                                                      must be a value between 0 and 0777. If
                                                      not specified, the volume defaultMode
                                                      will be used. This might be in conflict
                                                      with other options that affect the file
                                                      mode, like fsGroup, and the result can
                                                      be other mode bits set.
                                                    type: integer
                                                    format: int32
                                                  path:
                                                    description: >-
                                                      Required: Path is  the relative path
                                                      name of the file to be created. Must not
                                                      be absolute or contain the '..' path.
                                                      Must be utf-8 encoded. The first item of
                                                      the relative path must not start with
                                                      '..'
                                                    type: string
                                                  resourceFieldRef:
                                                    description: >-
                                                      Selects a resource of the container:
                                                      only resources limits and requests
                                                      (limits.cpu, limits.memory, requests.cpu
                                                      and requests.memory) are currently
                                                      supported.
                                                    type: object
                                                    required:
                                                      - resource
                                                    properties:
                                                      containerName:
                                                        description: >-
                                                          Container name: required for volumes,
                                                          optional for env vars
                                                        type: string
                                                      divisor:
                                                        description: >-
                                                          Specifies the output format of the
                                                          exposed resources, defaults to "1"
                                                        pattern: >-
                                                          ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                                        anyOf:
                                                          - type: integer
                                                          - type: string
                                                        x-kubernetes-int-or-string: true
                                                      resource:
                                                        description: 'Required: resource to select'
                                                        type: string
                                        secret:
                                          description: >-
                                            information about the secret data to
                                            project
                                          type: object
                                          properties:
                                            items:
                                              description: >-
                                                If unspecified, each key-value pair in
                                                the Data field of the referenced Secret
                                                will be projected into the volume as a
                                                file whose name is the key and content
                                                is the value. If specified, the listed
                                                keys will be projected into the
                                                specified paths, and unlisted keys will
                                                not be present. If a key is specified
                                                which is not present in the Secret, the
                                                volume setup will error unless it is
                                                marked optional. Paths must be relative
                                                and may not contain the '..' path or
                                                start with '..'.
                                              type: array
                                              items:
                                                description: >-
                                                  Maps a string key to a path within a
                                                  volume.
                                                type: object
                                                required:
                                                  - key
                                                  - path
                                                properties:
                                                  key:
                                                    description: The key to project.
                                                    type: string
                                                  mode:
                                                    description: >-
                                                      Optional: mode bits to use on this file,
                                                      must be a value between 0 and 0777. If
                                                      not specified, the volume defaultMode
                                                      will be used. This might be in conflict
                                                      with other options that affect the file
                                                      mode, like fsGroup, and the result can
                                                      be other mode bits set.
                                                    type: integer
                                                    format: int32
                                                  path:
                                                    description: >-
                                                      The relative path of the file to map the
                                                      key to. May not be an absolute path. May
                                                      not contain the path element '..'. May
                                                      not start with the string '..'.
                                                    type: string
                                            name:
                                              description: >-
                                                Name of the referent. More info:
                                                https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                                TODO: Add other useful fields.
                                                apiVersion, kind, uid?
                                              type: string
                                            optional:
                                              description: >-
                                                Specify whether the Secret or its key
                                                must be defined
                                              type: boolean
                                        serviceAccountToken:
                                          description: >-
                                            information about the
                                            serviceAccountToken data to project
                                          type: object
                                          required:
                                            - path
                                          properties:
                                            audience:
                                              description: >-
                                                Audience is the intended audience of the
                                                token. A recipient of a token must
                                                identify itself with an identifier
                                                specified in the audience of the token,
                                                and otherwise should reject the token.
                                                The audience defaults to the identifier
                                                of the apiserver.
                                              type: string
                                            expirationSeconds:
                                              description: >-
                                                ExpirationSeconds is the requested
                                                duration of validity of the service
                                                account token. As the token approaches
                                                expiration, the kubelet volume plugin
                                                will proactively rotate the service
                                                account token. The kubelet will start
                                                trying to rotate the token if the token
                                                is older than 80 percent of its time to
                                                live or if the token is older than 24
                                                hours.Defaults to 1 hour and must be at
                                                least 10 minutes.
                                              type: integer
                                              format: int64
                                            path:
                                              description: >-
                                                Path is the path relative to the mount
                                                point of the file to project the token
                                                into.
                                              type: string
                              csi:
                                description: >-
                                  CSI (Container Storage Interface) represents
                                  storage that is handled by an external CSI
                                  driver (Alpha feature).
                                type: object
                                required:
                                  - driver
                                properties:
                                  driver:
                                    description: >-
                                      Driver is the name of the CSI driver that
                                      handles this volume. Consult with your
                                      admin for the correct name as registered
                                      in the cluster.
                                    type: string
                                  fsType:
                                    description: >-
                                      Filesystem type to mount. Ex. "ext4",
                                      "xfs", "ntfs". If not provided, the empty
                                      value is passed to the associated CSI
                                      driver which will determine the default
                                      filesystem to apply.
                                    type: string
                                  nodePublishSecretRef:
                                    description: >-
                                      NodePublishSecretRef is a reference to the
                                      secret object containing sensitive
                                      information to pass to the CSI driver to
                                      complete the CSI NodePublishVolume and
                                      NodeUnpublishVolume calls. This field is
                                      optional, and  may be empty if no secret
                                      is required. If the secret object contains
                                      more than one secret, all secret
                                      references are passed.
                                    type: object
                                    properties:
                                      name:
                                        description: >-
                                          Name of the referent. More info:
                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          TODO: Add other useful fields.
                                          apiVersion, kind, uid?
                                        type: string
                                  readOnly:
                                    description: >-
                                      Specifies a read-only configuration for
                                      the volume. Defaults to false
                                      (read/write).
                                    type: boolean
                                  volumeAttributes:
                                    description: >-
                                      VolumeAttributes stores driver-specific
                                      properties that are passed to the CSI
                                      driver. Consult your driver's
                                      documentation for supported values.
                                    type: object
                                    additionalProperties:
                                      type: string
                              portworxVolume:
                                description: >-
                                  PortworxVolume represents a portworx volume
                                  attached and mounted on kubelets host machine
                                type: object
                                required:
                                  - volumeID
                                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
                              configMap:
                                description: >-
                                  ConfigMap represents a configMap that should
                                  populate this volume
                                type: object
                                properties:
                                  defaultMode:
                                    description: >-
                                      Optional: mode bits to use on created
                                      files by default. Must be a value between
                                      0 and 0777. Defaults to 0644. Directories
                                      within the path are not affected by this
                                      setting. This might be in conflict with
                                      other options that affect the file mode,
                                      like fsGroup, and the result can be other
                                      mode bits set.
                                    type: integer
                                    format: int32
                                  items:
                                    description: >-
                                      If unspecified, each key-value pair in the
                                      Data field of the referenced ConfigMap
                                      will be projected into the volume as a
                                      file whose name is the key and content is
                                      the value. If specified, the listed keys
                                      will be projected into the specified
                                      paths, and unlisted keys will not be
                                      present. If a key is specified which is
                                      not present in the ConfigMap, the volume
                                      setup will error unless it is marked
                                      optional. Paths must be relative and may
                                      not contain the '..' path or start with
                                      '..'.
                                    type: array
                                    items:
                                      description: >-
                                        Maps a string key to a path within a
                                        volume.
                                      type: object
                                      required:
                                        - key
                                        - path
                                      properties:
                                        key:
                                          description: The key to project.
                                          type: string
                                        mode:
                                          description: >-
                                            Optional: mode bits to use on this file,
                                            must be a value between 0 and 0777. If
                                            not specified, the volume defaultMode
                                            will be used. This might be in conflict
                                            with other options that affect the file
                                            mode, like fsGroup, and the result can
                                            be other mode bits set.
                                          type: integer
                                          format: int32
                                        path:
                                          description: >-
                                            The relative path of the file to map the
                                            key to. May not be an absolute path. May
                                            not contain the path element '..'. May
                                            not start with the string '..'.
                                          type: string
                                  name:
                                    description: >-
                                      Name of the referent. More info:
                                      https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                      TODO: Add other useful fields. apiVersion,
                                      kind, uid?
                                    type: string
                                  optional:
                                    description: >-
                                      Specify whether the ConfigMap or its keys
                                      must be defined
                                    type: boolean
                              nfs:
                                description: >-
                                  NFS represents an NFS mount on the host that
                                  shares a pod's lifetime More info:
                                  https://kubernetes.io/docs/concepts/storage/volumes#nfs
                                type: object
                                required:
                                  - path
                                  - server
                                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
                              downwardAPI:
                                description: >-
                                  DownwardAPI represents downward API about the
                                  pod that should populate this volume
                                type: object
                                properties:
                                  defaultMode:
                                    description: >-
                                      Optional: mode bits to use on created
                                      files by default. Must be a value between
                                      0 and 0777. Defaults to 0644. Directories
                                      within the path are not affected by this
                                      setting. This might be in conflict with
                                      other options that affect the file mode,
                                      like fsGroup, and the result can be other
                                      mode bits set.
                                    type: integer
                                    format: int32
                                  items:
                                    description: >-
                                      Items is a list of downward API volume
                                      file
                                    type: array
                                    items:
                                      description: >-
                                        DownwardAPIVolumeFile represents
                                        information to create the file
                                        containing the pod field
                                      type: object
                                      required:
                                        - path
                                      properties:
                                        fieldRef:
                                          description: >-
                                            Required: Selects a field of the pod:
                                            only annotations, labels, name and
                                            namespace are supported.
                                          type: object
                                          required:
                                            - fieldPath
                                          properties:
                                            apiVersion:
                                              description: >-
                                                Version of the schema the FieldPath is
                                                written in terms of, defaults to "v1".
                                              type: string
                                            fieldPath:
                                              description: >-
                                                Path of the field to select in the
                                                specified API version.
                                              type: string
                                        mode:
                                          description: >-
                                            Optional: mode bits to use on this file,
                                            must be a value between 0 and 0777. If
                                            not specified, the volume defaultMode
                                            will be used. This might be in conflict
                                            with other options that affect the file
                                            mode, like fsGroup, and the result can
                                            be other mode bits set.
                                          type: integer
                                          format: int32
                                        path:
                                          description: >-
                                            Required: Path is  the relative path
                                            name of the file to be created. Must not
                                            be absolute or contain the '..' path.
                                            Must be utf-8 encoded. The first item of
                                            the relative path must not start with
                                            '..'
                                          type: string
                                        resourceFieldRef:
                                          description: >-
                                            Selects a resource of the container:
                                            only resources limits and requests
                                            (limits.cpu, limits.memory, requests.cpu
                                            and requests.memory) are currently
                                            supported.
                                          type: object
                                          required:
                                            - resource
                                          properties:
                                            containerName:
                                              description: >-
                                                Container name: required for volumes,
                                                optional for env vars
                                              type: string
                                            divisor:
                                              description: >-
                                                Specifies the output format of the
                                                exposed resources, defaults to "1"
                                              pattern: >-
                                                ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                              anyOf:
                                                - type: integer
                                                - type: string
                                              x-kubernetes-int-or-string: true
                                            resource:
                                              description: 'Required: resource to select'
                                              type: string
                              gcePersistentDisk:
                                description: >-
                                  GCEPersistentDisk represents a GCE Disk
                                  resource that is attached to a kubelet's host
                                  machine and then exposed to the pod. More
                                  info:
                                  https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
                                type: object
                                required:
                                  - pdName
                                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
                                    type: integer
                                    format: int32
                                  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
                              fc:
                                description: >-
                                  FC represents a Fibre Channel resource that is
                                  attached to a kubelet's host machine and then
                                  exposed to the pod.
                                type: object
                                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'
                                    type: integer
                                    format: int32
                                  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)'
                                    type: array
                                    items:
                                      type: string
                                  wwids:
                                    description: >-
                                      Optional: FC volume world wide identifiers
                                      (wwids) Either wwids or combination of
                                      targetWWNs and lun must be set, but not
                                      both simultaneously.
                                    type: array
                                    items:
                                      type: string
                              vsphereVolume:
                                description: >-
                                  VsphereVolume represents a vSphere volume
                                  attached and mounted on kubelets host machine
                                type: object
                                required:
                                  - volumePath
                                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
                              flocker:
                                description: >-
                                  Flocker represents a Flocker volume attached
                                  to a kubelet's host machine. This depends on
                                  the Flocker control service being running
                                type: object
                                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
                              storageos:
                                description: >-
                                  StorageOS represents a StorageOS volume
                                  attached and mounted on Kubernetes nodes.
                                type: object
                                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.
                                    type: object
                                    properties:
                                      name:
                                        description: >-
                                          Name of the referent. More info:
                                          https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                                          TODO: Add other useful fields.
                                          apiVersion, kind, uid?
                                        type: string
                                  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
                        tolerations:
                          description: 'If specified, the pod''s tolerations.'
                          type: array
                          items:
                            description: >-
                              The pod this Toleration is attached to tolerates
                              any taint that matches the triple
                              <key,value,effect> using the matching operator
                              <operator>.
                            type: object
                            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.
                                type: integer
                                format: int64
                              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
                        priorityClassName:
                          description: PriorityClassName for Jenkins master pod
                          type: string
                        labels:
                          description: >-
                            Map of string keys and values that can be used to
                            organize and categorize (scope and select) objects.
                            May match selectors of replication controllers and
                            services. More info:
                            http://kubernetes.io/docs/user-guide/labels
                          type: object
                          additionalProperties:
                            type: string
                    jenkinsAPISettings:
                      description: >-
                        JenkinsAPISettings defines configuration used by the
                        operator to gain admin access to the Jenkins API
                      type: object
                      required:
                        - authorizationStrategy
                      properties:
                        authorizationStrategy:
                          description: >-
                            AuthorizationStrategy defines authorization strategy
                            of the operator for the Jenkins API
                          type: string
                    jnlpService:
                      description: >-
                        Service is Kubernetes service of Jenkins agent pods
                        Defaults to : port: 50000 type: ClusterIP
                      type: object
                      properties:
                        annotations:
                          description: >-
                            Annotations is an unstructured key value map stored
                            with a resource that may be set by external tools to
                            store and retrieve arbitrary metadata. They are not
                            queryable and should be preserved when modifying
                            objects. More info:
                            http://kubernetes.io/docs/user-guide/annotations
                          type: object
                          additionalProperties:
                            type: string
                        labels:
                          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
                          additionalProperties:
                            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/
                          type: array
                          items:
                            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
                          type: integer
                          format: int32
                        port:
                          description: >-
                            The port that are exposed by this service. More
                            info:
                            https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
                          type: integer
                          format: int32
                        portName:
                          description: >-
                            The PortName that are exposed by this service. More
                            info:
                            https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
                          type: string
                        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
                    jenkinsImageRef:
                      description: >-
                        JenkinsImageRef a reference to a JenkinsImage in the
                        current namespace. The JenkinsImage must have status to
                        be "SuccessfullyBuilt" ; then the image target image in
                        JenkinsImage.To will be used as the image of the Master
                        container.
                      type: string
                    persistentSpec:
                      description: PersistentSpec
                      type: object
                      properties:
                        enabled:
                          type: boolean
                        storageClassName:
                          type: string
                        volumeSize:
                          type: string
                    configurationAsCode:
                      description: >-
                        ConfigurationAsCode defines configuration of Jenkins
                        configuration via Configuration as Code Jenkins plugin
                      type: object
                      required:
                        - defaultConfig
                        - enableAutoReload
                        - enabled
                      properties:
                        configurations:
                          type: array
                          items:
                            description: ConfigMapRef is reference to Kubernetes ConfigMap
                            type: object
                            required:
                              - name
                            properties:
                              name:
                                type: string
                        defaultConfig:
                          type: boolean
                        enableAutoReload:
                          type: boolean
                        enabled:
                          type: boolean
                        secret:
                          description: SecretRef is reference to Kubernetes secret
                          type: object
                          required:
                            - name
                          properties:
                            name:
                              type: string
                    service:
                      description: >-
                        Service is Kubernetes service of Jenkins master HTTP pod
                        Defaults to : port: 8080 type: ClusterIP
                      type: object
                      properties:
                        annotations:
                          description: >-
                            Annotations is an unstructured key value map stored
                            with a resource that may be set by external tools to
                            store and retrieve arbitrary metadata. They are not
                            queryable and should be preserved when modifying
                            objects. More info:
                            http://kubernetes.io/docs/user-guide/annotations
                          type: object
                          additionalProperties:
                            type: string
                        labels:
                          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
                          additionalProperties:
                            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/
                          type: array
                          items:
                            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
                          type: integer
                          format: int32
                        port:
                          description: >-
                            The port that are exposed by this service. More
                            info:
                            https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
                          type: integer
                          format: int32
                        portName:
                          description: >-
                            The PortName that are exposed by this service. More
                            info:
                            https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
                          type: string
                        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
                    backupVolumes:
                      description: BackupEnabled defines whether backup feature is enabled
                      type: array
                      items:
                        type: string
                    forceBasePluginsInstall:
                      type: boolean
                    serviceAccount:
                      description: >-
                        ServiceAccount defines Jenkins master service account
                        attributes
                      type: object
                      properties:
                        annotations:
                          description: >-
                            Annotations is an unstructured key value map stored
                            with a resource that may be set by external tools to
                            store and retrieve arbitrary metadata. They are not
                            queryable and should be preserved when modifying
                            objects. More info:
                            http://kubernetes.io/docs/user-guide/annotations
                          type: object
                          additionalProperties:
                            type: string
                    proxyConfigurationEnabled:
                      description: >-
                        ProxyConfigurationEnabled defines whether openshift
                        global proxy configuration is enabled if enabled, and if
                        a global proxy is set in openshift, the operator will
                        automatically configure the jenkins proxy
                      type: boolean
                    roles:
                      description: >-
                        Roles defines list of extra RBAC roles for the Jenkins
                        Master pod service account
                      type: array
                      items:
                        description: >-
                          RoleRef contains information that points to the role
                          being used
                        type: object
                        required:
                          - apiGroup
                          - kind
                          - name
                        properties:
                          apiGroup:
                            description: >-
                              APIGroup is the group for the resource being
                              referenced
                            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
                    metricsEnabled:
                      description: >-
                        MetricsEnabled defines whether prometheus metrics are
                        enabled
                      type: boolean
                userAndPasswordHash:
                  description: >-
                    UserAndPasswordHash is a SHA256 hash made from user and
                    password
                  type: string
      subresources:
        status: {}
  conversion:
    strategy: None
