---
openapi: 3.0.0
info:
  x-ibm-name: appconnect
  version: 1.1.0
  title: IBM App Connect API
  description: For an overview of this API, see the [IBM App Connect Enterprise certified
    container API overview](https://ibm.biz/acecc_api-v13)
  contact:
    name: IBM App Connect discussion forum
    url: http://ibm.biz/accommunity
    email: ask.application.integration@uk.ibm.com
security: []
tags:
- name: BAR file
  description: Managing BAR file objects.
- name: Configuration
  description: Managing configuration objects.
- name: Integration runtime
  description: Managing integration runtime objects.
- name: Trace
  description: Managing trace objects.
- name: Pod
  description: Managing pod objects.
paths:
  "/api/v1/traces":
    description: The collection of trace operations.
    get:
      summary: List the trace objects
      description: Retrieve a list of trace objects.
      operationId: list_trace
      parameters:
      - "$ref": "#/components/parameters/spec-integration-runtime-name"
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/TraceList"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Trace
  "/api/v1/traces/{trace}":
    description: Trace object operations
    parameters:
    - "$ref": "#/components/parameters/trace"
    get:
      summary: Get the trace object by name
      description: Retrieve information about the trace object with the specified
        name.
      operationId: get_trace
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/Trace"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '404':
          "$ref": "#/components/responses/Error404"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Trace
    put:
      summary: Replace or create the trace object by name
      description: Replace the trace object with the specified name if it exists,
        or create a trace object with the specified name if it doesn't exist. You
        enable trace for an integration runtime by creating a trace object. You can
        download and reset trace by using the collect-trace and reset-trace operations.
      operationId: replace_trace
      x-codegen-request-body-name: Trace
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/Trace"
      responses:
        '200':
          description: The trace object with the specified name was replaced successfully.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/Trace"
        '201':
          description: A trace object was created successfully with the specified
            name.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/Trace"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Trace
    delete:
      summary: Delete the trace object by name
      description: Delete the trace object with the specified name. You disabled trace
        for an integration runtime by deleting the trace object.
      operationId: delete_trace
      responses:
        '204':
          description: The trace object with the specified name was deleted successfully.
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Trace
  "/api/v1/pods":
    description: The collection of pod operations.
    get:
      summary: List the pod objects
      description: Retrieve a list of pod objects.
      operationId: list_pod
      parameters:
      - "$ref": "#/components/parameters/kind"
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/PodList"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Pod
  "/api/v1/configurations":
    description: The collection of configuration operations.
    get:
      summary: List the configuration objects
      description: Retrieve a list of configurations.
      operationId: list_configuration
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ConfigurationList"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Configuration
    post:
      summary: Create the configuration object
      description: Create a configuration object to configure an integration runtimes;
        for example, configuration types can be server.conf.yaml, policy projects,
        or accounts.yaml definitions.
      operationId: create_configuration
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/Configuration"
      responses:
        '201':
          description: A configuration object was created successfully.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/Configuration"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '409':
          "$ref": "#/components/responses/Error409"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Configuration
  "/api/v1/configurations/{configuration}":
    description: Configuration object operations
    parameters:
    - "$ref": "#/components/parameters/configuration"
    get:
      summary: Get the configuration object by name
      description: Retrieve information about the configuration object with the specified
        name.
      operationId: get_configuration
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/Configuration"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '404':
          "$ref": "#/components/responses/Error404"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Configuration
    put:
      summary: Replace or create the configuration object by name
      description: Replace the configuration object with the specified name if it
        exists, or create a configuration object with the specified name if it doesn't
        exist. Create a configuration object to configure an integration runtimes;
        for example, configuration types can be server.conf.yaml, policy projects,
        or accounts.yaml definitions.
      operationId: replace_configuration
      x-codegen-request-body-name: Configuration
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/Configuration"
      responses:
        '200':
          description: The configuration object with the specified name was replaced
            successfully.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/Configuration"
        '201':
          description: A configuration object was created successfully with the specified
            name.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/Configuration"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Configuration
    delete:
      summary: Delete the configuration object by name
      description: Delete the configuration object with the specified name.
      operationId: delete_configuration
      responses:
        '204':
          description: The configuration object with the specified name was deleted
            successfully.
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '404':
          "$ref": "#/components/responses/Error404"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Configuration
  "/api/v1/bar-files":
    description: The collection of BAR file operations
    get:
      summary: List the BAR file objects
      description: Retrieve a list of URLs that can be used in integration runtimes
        to access BAR files. The BAR file URL is used in the integration runtime specification
        when you create an integration runtime. You can't use these URLs to access
        BAR files externally.
      operationId: list_bar_file
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/BarFileList"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - BAR file
  "/api/v1/bar-files/{bar-file}":
    description: BAR file object operations
    parameters:
    - "$ref": "#/components/parameters/bar-file"
    get:
      summary: Get the BAR file object by name
      description: Retrieve information about the BAR file with the specified name.
        Specify the name of the BAR file without the .bar file extension.
      operationId: get_bar_file
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/BarFile"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '404':
          "$ref": "#/components/responses/Error404"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - BAR file
    put:
      summary: Replace or create the BAR file object by name
      description: Replace the BAR file with the specified name if it exists, or create
        a BAR file with the specified name if it doesn't exist.
      operationId: replace_bar_file
      x-codegen-request-body-name: BarFileContent
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              "$ref": "#/components/schemas/BarFileContent"
      responses:
        '200':
          description: The BAR file with the specified name was replaced successfully.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/BarFile"
        '201':
          description: A BAR file was created successfully with the specified name.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/BarFile"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '403':
          "$ref": "#/components/responses/Error403"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - BAR file
    delete:
      summary: Delete the BAR file object by name
      description: Delete the BAR filewith the specified name. You can delete a BAR
        file only if it's not deployed to an integration runtime.
      operationId: delete_bar_file
      responses:
        '204':
          description: The specified BAR file was deleted successfully.
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '403':
          "$ref": "#/components/responses/Error403"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - BAR file
  "/api/v1/bar-files/{bar-file}/download":
    x-ibm-path-type: custom-operation
    description: BAR file custom download operation
    parameters:
    - "$ref": "#/components/parameters/bar-file"
    post:
      summary: Download the BAR file by name
      operationId: download_bar_file
      description: Download the BAR file with the specified name.
      responses:
        '200':
          description: Success
          content:
            application/octet-stream:
              schema:
                "$ref": "#/components/schemas/BarFileContent"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '403':
          "$ref": "#/components/responses/Error403"
        '404':
          "$ref": "#/components/responses/Error404"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - BAR file
  "/api/v1/integration-runtimes":
    description: The collection of integration runtime operations
    get:
      summary: List the integration runtime objects
      description: Retrieve a list of deployed and running integration runtimes.
      operationId: list_integration_runtime
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/IntegrationRuntimeList"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '403':
          "$ref": "#/components/responses/Error403"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Integration runtime
    post:
      summary: Create the integration runtime object
      description: Create an integration runtime to run your integration.
      operationId: create_integration_runtime
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/IntegrationRuntime"
      responses:
        '201':
          description: The integration runtime was created successfully.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/IntegrationRuntime"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '409':
          "$ref": "#/components/responses/Error409"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Integration runtime
  "/api/v1/integration-runtimes/{integration-runtime}":
    description: Integration runtime object operations
    parameters:
    - "$ref": "#/components/parameters/integration-runtime"
    get:
      summary: Get the integration runtime object by name
      description: Retrieve information about the integration runtime with the specified
        name.
      operationId: get_integration_runtime
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/IntegrationRuntime"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '403':
          "$ref": "#/components/responses/Error403"
        '404':
          "$ref": "#/components/responses/Error404"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Integration runtime
    put:
      summary: Replace or create the integration runtime object by name
      description: Replace the integration runtime with the specified name if it exists
        or create an integration runtime with the specified name if it doesn't exist.
      operationId: replace_integration_runtime
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/IntegrationRuntime"
      responses:
        '200':
          description: The specified integration runtime was replaced successfully.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/IntegrationRuntime"
        '201':
          description: An integration runtime was created successfully with the specified
            name.
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/IntegrationRuntime"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '403':
          "$ref": "#/components/responses/Error403"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Integration runtime
    delete:
      summary: Delete the integration runtime object by name
      description: Delete the integration runtime with the specified name.
      operationId: delete_integration_runtime
      responses:
        '204':
          description: The specified integration runtime was deleted successfully.
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '403':
          "$ref": "#/components/responses/Error403"
        '404':
          "$ref": "#/components/responses/Error404"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Integration runtime
  "/api/v1/integration-runtimes/{integration-runtime}/retrieve-basic-auth-credentials":
    x-ibm-path-type: custom-operation
    description: Retrieve basic authentication credentials.
    parameters:
    - "$ref": "#/components/parameters/integration-runtime"
    post:
      summary: Retrieve basic auth credentials for the integration runtime
      description: Retrieve basic authentication credentials for the integration runtime.
      operationId: retrieve_basic_auth_credentials_integration_runtime
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/IntegrationRuntimeRetrieveBasicAuthCredentials"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '403':
          "$ref": "#/components/responses/Error403"
        '404':
          "$ref": "#/components/responses/Error404"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Integration runtime
  "/api/v1/integration-runtimes/{integration-runtime}/reset-basic-auth-credentials":
    x-ibm-path-type: custom-operation
    description: Reset basic authentication credentials.
    parameters:
    - "$ref": "#/components/parameters/integration-runtime"
    post:
      summary: Reset basic auth credentials for the integration runtime
      description: Reset basic authentication credentials for the integration runtime.
      operationId: reset_basic_auth_credentials_integration_runtime
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/IntegrationRuntimeResetBasicAuthCredentials"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '403':
          "$ref": "#/components/responses/Error403"
        '404':
          "$ref": "#/components/responses/Error404"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Integration runtime
  "/api/v1/integration-runtimes/{integration-runtime}/retrieve-mcp-basic-auth-credentials":
    x-ibm-path-type: custom-operation
    description: Retrieve MCP basic authentication credentials.
    parameters:
    - "$ref": "#/components/parameters/integration-runtime"
    post:
      summary: Retrieve MCP basic auth credentials for the integration runtime
      description: Retrieve MCP basic authentication credentials for the integration
        runtime.
      operationId: retrieve_mcp_basic_auth_credentials_integration_runtime
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/IntegrationRuntimeRetrieveMcpBasicAuthCredentials"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '403':
          "$ref": "#/components/responses/Error403"
        '404':
          "$ref": "#/components/responses/Error404"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Integration runtime
  "/api/v1/integration-runtimes/{integration-runtime}/reset-mcp-basic-auth-credentials":
    x-ibm-path-type: custom-operation
    description: Reset MCP basic authentication credentials.
    parameters:
    - "$ref": "#/components/parameters/integration-runtime"
    post:
      summary: Reset MCP basic auth credentials for the integration runtime
      description: Reset MCP basic authentication credentials for the integration
        runtime.
      operationId: reset_mcp_basic_auth_credentials_integration_runtime
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/IntegrationRuntimeResetMcpBasicAuthCredentials"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '403':
          "$ref": "#/components/responses/Error403"
        '404':
          "$ref": "#/components/responses/Error404"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Integration runtime
  "/api/v1/integration-runtimes/{integration-runtime}/collect-trace":
    x-ibm-path-type: custom-operation
    description: Integration runtime custom collect trace operation
    parameters:
    - "$ref": "#/components/parameters/integration-runtime"
    post:
      summary: Collect trace from the integration runtime object by name
      description: Download trace log files from the integration runtime with the
        specified name.
      operationId: collect_trace_integration_runtime
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/IntegrationRuntimeCollectTrace"
      responses:
        '200':
          description: Success
          content:
            application/octet-stream:
              schema:
                "$ref": "#/components/schemas/TraceZipIr"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '403':
          "$ref": "#/components/responses/Error403"
        '404':
          "$ref": "#/components/responses/Error404"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Integration runtime
  "/api/v1/integration-runtimes/{integration-runtime}/reset-trace":
    x-ibm-path-type: custom-operation
    description: Integration runtime custom reset trace operation
    parameters:
    - "$ref": "#/components/parameters/integration-runtime"
    post:
      summary: Reset trace on the integration runtime object by name
      description: Reset trace on the integration runtime with the specified name.
      operationId: reset_trace_integration_runtime
      requestBody:
        required: true
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/IntegrationRuntimeResetTrace"
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/IntegrationRuntimeResetTrace"
          description: Success
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '403':
          "$ref": "#/components/responses/Error403"
        '404':
          "$ref": "#/components/responses/Error404"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Integration runtime
  "/api/v1/integration-runtimes/{integration-runtime}/collect-pod-usage":
    x-ibm-path-type: custom-operation
    description: Collect pod usage metrics for an integration runtime
    parameters:
    - "$ref": "#/components/parameters/integration-runtime"
    post:
      summary: Collect pod usage metrics for an integration runtime
      description: Collect usage metrics for all the containers for all the pods for
        the integration runtime.
      operationId: collect_pod_usage_integration_runtime
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/IntegrationRuntimeCollectPodUsageResponse"
        '400':
          "$ref": "#/components/responses/Error400"
        '401':
          "$ref": "#/components/responses/Error401"
        '404':
          "$ref": "#/components/responses/Error404"
        '500':
          "$ref": "#/components/responses/Error500"
      tags:
      - Integration runtime
components:
  parameters:
    bar-file:
      name: bar-file
      in: path
      description: The name of a BAR file
      required: true
      schema:
        type: string
    configuration:
      name: configuration
      in: path
      description: The name of a configuration
      required: true
      schema:
        type: string
    integration-runtime:
      name: integration-runtime
      in: path
      description: The name of an integration runtime
      required: true
      schema:
        type: string
    kind:
      name: kind
      in: query
      description: The kind of a resource
      required: true
      schema:
        type: string
    trace:
      name: trace
      in: path
      description: The name of a trace object
      required: true
      schema:
        type: string
    spec-integration-runtime-name:
      name: spec.integrationRuntimeName
      in: query
      description: The name of an integration runtime
      required: false
      schema:
        type: string
  schemas:
    BarFileContent:
      type: string
      description: The contents of a BAR file
      format: binary
    BarFile:
      type: object
      additionalProperties: false
      description: |
        BAR file type has two properties:
          * `name` - The name that was specified on the API when the BAR file was created
          * `url` - The URL that can be used to retrieve the contents of the BAR file
          * `type` - The type indicates whether the BAR file contains resources authored in the App Connect Enterprise Toolkit or App Connect Designer
      properties:
        name:
          description: 'The name that was specified on the API when the BAR file was
            created. This property is provided in the body of responses only. For
            the create or replace method, the property is provided as a path parameter.

            '
          type: string
        url:
          description: |
            The URL that can be used to retrieve the contents of the BAR file.
              * This value is 'read only' and is returned for a retrieve method only.
              * This value is not the URL to this resource on the API, but it is the 'opaque' URL that you used when you create an integration runtime.
          type: string
        type:
          description: |
            Indicates whether the BAR file contains resources that were authored in the App Connect Enterprise Toolkit or App Connect Designer authoring tool.
              * This value is 'read only' and is returned for a retrieve method only.
          type: string
          enum:
          - toolkit
          - designer
          - unknown
        metadata:
          "$ref": "#/components/schemas/BarFileMetadata"
    BarFileList:
      type: object
      required:
      - barFiles
      additionalProperties: true
      description: A list of BAR files
      properties:
        backupEnabled:
          type: boolean
          description: This property specifies whether the BAR file backup functionality
            is enabled.
        barFiles:
          type: array
          description: This property contains an array of BAR file objects.
          items:
            "$ref": "#/components/schemas/BarFile"
        restoreEnabled:
          type: boolean
          description: This property specifies whether the BAR file restore functionality
            is enabled.
    BarFileMetadata:
      type: object
      description: |
        BAR file metadata
        * This value is 'read only' and is returned for a retrieve method only.
      additionalProperties: false
      properties:
        lastModified:
          description: When this BAR file was last modified.
          type: string
        hash:
          description: A uniquely identifiable hash (based on contents) for this BAR
            file.
          type: string
        containsToolkitMessageFlow:
          description: 'Indicates if the BAR file contains toolkit message flow.

            '
          type: boolean
        containsDesignerEventFlow:
          description: 'Indicates if the BAR file contains designer event-driven flow.

            '
          type: boolean
        containsDesignerAPIFlow:
          description: 'Indicates if the BAR file contains designer API flow.

            '
          type: boolean
        containsDesignerBatch:
          description: 'Indicates if the BAR file contains designer Batch node.

            '
          type: boolean
        contents:
          description: 'Lists the names of the contents inside the BAR file.

            '
          type: array
          items:
            type: string
    Trace:
      description: Trace to use with an integration runtime
      properties:
        metadata:
          "$ref": "#/components/schemas/Metadata"
        spec:
          "$ref": "#/components/schemas/TraceSpec"
        status:
          "$ref": "#/components/schemas/TraceStatus"
      required:
      - spec
      additionalProperties: false
    TraceList:
      type: object
      description: A list of trace items
      required:
      - traces
      additionalProperties: true
      properties:
        traces:
          type: array
          description: An array of trace items
          items:
            "$ref": "#/components/schemas/Trace"
    TraceSpec:
      description: This property defines the desired state of the trace resource.
      properties:
        integrationServerName:
          description: The name of the integration server which is being targeted
          type: string
        integrationRuntimeName:
          description: The name of the target integration runtime
          type: string
        switchServerName:
          description: The name of the target switch server
          type: string
        type:
          "$ref": "#/components/schemas/TraceType"
      required:
      - type
      type: object
      additionalProperties: false
    TraceStatus:
      description: This property defines the observed state of trace.
      properties:
        conditions:
          description: A list of conditions of the trace
          items:
            properties:
              lastTransitionTime:
                description: This property specifies the last time that the status
                  was changed.
                format: date-time
                type: string
              message:
                description: This property specifies the status message.
                type: string
              reason:
                description: This property specifies the reason for the last transition
                  of this status.
                type: string
              status:
                description: This property identifies whether this condition applies
                  to the resource.
                enum:
                - 'True'
                - 'False'
                - Unknown
                type: string
              type:
                description: The status type
                type: string
            required:
            - lastTransitionTime
            - message
            - status
            - type
            type: object
            additionalProperties: false
          type: array
        phase:
          description: The status of the trace
          type: string
      type: object
      additionalProperties: false
    Configuration:
      description: A configuration to use with an integration runtime
      properties:
        metadata:
          "$ref": "#/components/schemas/Metadata"
        spec:
          "$ref": "#/components/schemas/ConfigurationSpec"
      required:
      - spec
      additionalProperties: false
    ConfigurationTypeName:
      description: The name of the configuration type
      type: string
      enum:
      - accounts
      - adminssl
      - agenta
      - agentx
      - barauth
      - db2cli
      - generic
      - keystore
      - loopbackdatasource
      - mqccdt
      - mqccred
      - odbc
      - persistencerediscredentials
      - policyproject
      - privatenetworkagent
      - resiliencekafkacredentials
      - s3credentials
      - serverconf
      - setdbparms
      - truststore
      - truststorecertificate
      - vault
      - vaultarchive
      - vaultarchivekey
      - vaultkey
      - workdiroverride
    ConfigurationSpec:
      description: |-
        This property specifies the schema for exactly one configuration item.
          ***The custom resource definition cannot restrict this property because Kubernetes doesn't allow the use of `minProperties` and `maxProperties`.
          This property can represent one of the following types of configuration resource.
        - accounts
        - adminssl
        - agenta
        - agentx
        - barauth
        - db2cli
        - generic
        - keystore
        - loopbackdatasource
        - mqccred
        - odbc
        - persistencerediscredentials
        - policyproject
        - privatenetworkagent
        - resiliencekafkacredentials
        - s3credentials
        - serverconf
        - setdbparms
        - truststore
        - truststorecertificate
        - vault
        - vaultarchive
        - vaultarchivekey
        - vaultkey
        - workdiroverride
          A single integration that is defined in a BAR file can use one or more of types.
          Each resource type is modelled in a `Configuration` definition as a different field. Therefore, a single `configuration` item must have exactly one of those fields set.
          The following subset of resources contains confidential information such as passwords.
        - accounts
        - adminssl
        - agenta
        - agentx
        - barauth
        - generic
        - keystore
        - loopbackdatasource
        - mqccdt
        - privatenetworkagent
        - s3credentials
        - resiliencekafkacredentials
        - persistencerediscredentials
        - setdbparms
        - truststore
        - truststorecertificate
        - workdiroverride
          In these cases, the main resource content is held in a Kubernetes secret and is represented in this object as a reference to the secret. The secret is currently restricted to be in the same namespace.
      properties:
        contents:
          description: The Base64-encoded (non-secret) contents of the configuration
            file. Do not set secrets in this field.
          type: string
        data:
          description: The Base64-encoded contents of the configuration file, which
            will be moved to either a secret or the contents field.
          type: string
          writeOnly: true
        description:
          description: A description of the configuration object.
          type: string
        type:
          "$ref": "#/components/schemas/ConfigurationTypeName"
        version:
          description: This field is populated by the App Connect operator and doesn't
            need to be populated manually.
          type: string
      required:
      - type
      - data
      type: object
      additionalProperties: false
    ConfigurationList:
      type: object
      description: A list of configuration items.
      required:
      - configurations
      additionalProperties: true
      properties:
        configurations:
          type: array
          description: An array of configuration items.
          items:
            "$ref": "#/components/schemas/Configuration"
    IntegrationRuntime:
      description: An App Connect integration runtime.
      properties:
        apiVersion:
          type: string
        kind:
          type: string
        metadata:
          "$ref": "#/components/schemas/Metadata"
        spec:
          "$ref": "#/components/schemas/IntegrationRuntimeSpec"
        status:
          "$ref": "#/components/schemas/IntegrationRuntimeStatus"
      required:
      - spec
      additionalProperties: false
    IntegrationRuntimeSpec:
      description: This property defines the desired state of the IntegrationRuntime.
      properties:
        barURL:
          description: This property specifies a URL to a BAR file that is stored
            at an external endpoint.
          items:
            type: string
          type: array
        configurations:
          description: The name of a configuration custom resource that is used to
            configure the flows that are run by this integration runtime.
          items:
            type: string
          type: array
        connectorService:
          properties:
            disableEvents:
              description: 'Disable events API from the connector service. Only applicable
                when "Enabled" is set to "true" (default: false)'
              type: boolean
            enabled:
              description: This property enables the connector service API and the
                default is false.
              type: boolean
          type: object
        dashboardUsers:
          description: Dashboard Users
          properties:
            bypassGenerate:
              description: Bypass the generation of the dashboard users
              type: boolean
          type: object
        defaultAppName:
          description: This poperty specifies the name of the application that top-level
            flows will be deployed to.
          type: string
        defaultNetworkPolicy:
          properties:
            enabled:
              default: true
              type: boolean
          type: object
        desiredRunState:
          enum:
          - stopped
          - running
          type: string
        flowType:
          properties:
            designerAPIFlow:
              description: This property enables the runtime for Designer API flows
                and the default is false.
              type: boolean
            designerEventFlow:
              description: This property enables the runtime for Designer event-driven
                flows and the default is false.
              type: boolean
            designerWebhookEventFlow:
              description: This property enables the runtime for Designer webhook
                event-driven flows and the default is false.
              type: boolean
            toolkitFlow:
              description: This property enables the runtime for Toolkit flows and
                the default is false.
              type: boolean
          type: object
        forceFlowBasicAuth:
          properties:
            enabled:
              description: This property enables basic authentication on all HTTP
                input flows.
              type: boolean
            secretName:
              type: string
          type: object
        forceFlowsHTTPS:
          description: Force all HTTP flows to use TLS
          properties:
            enabled:
              description: Enable to force all HTTP nodes to use TLS
              type: boolean
            secretName:
              description: Name of the secret that contains the TLS certificate and
                key to use for Force Flow HTTPS. Required if 'Force Flow HTTPS' is
                enabled.
              type: string
          type: object
        ingress:
          description: Ingress
          properties:
            domain:
              description: Ingress subdomain of your cluster
              type: string
            enabled:
              description: 'Enable App Connect to manage the ingress resource for
                the instance. For IBM Cloud Kubernetes Service environments only (default:
                false)'
              type: boolean
          type: object
        java:
          properties:
            version:
              description: The Java version to be used by the App Connect Enterprise
                runtime. Only valid for operands 13.0.5.0-r1 and above.
              type: string
          type: object
        license:
          properties:
            accept:
              default: false
              description: Accept Terms and Conditions - Please refer to https://ibm.biz/acelicense
                to select the appropriate LI & use fields
              type: boolean
            license:
              type: string
            use:
              type: string
          required:
          - accept
          - license
          - use
          type: object
        logFormat:
          default: basic
          description: Format of the logs to produce (default=basic)
          enum:
          - basic
          - json
          type: string
        mcp:
          description: "(Only supported on operands 13.0.6.1 and above)"
          properties:
            runtime:
              properties:
                basicAuth:
                  properties:
                    disabled:
                      description: 'Disable basic auth on the MCP Server (default:
                        false)'
                      type: boolean
                    secretName:
                      description: Name of the secret that contains the basic auth
                        setdbparms configuration.  If not supplied credentials will
                        be created.
                      type: string
                  type: object
                disabled:
                  description: 'Disable the MCP Server on the IntegrationRuntime (default:
                    true)'
                  type: boolean
                tls:
                  properties:
                    disabled:
                      description: 'Disable TLS on the MCP Server (default: false)'
                      type: boolean
                    secretName:
                      description: Name of the secret that contains the TLS certificate
                        If not supplied a self signed certificate will be created.
                      type: string
                  type: object
              type: object
          type: object
        metrics:
          description: Metrics
          properties:
            disabled:
              description: 'Enable the generation of accounting and stats / resources
                stats. (default: false)'
              type: boolean
            tls:
              properties:
                provider:
                  description: The provider to use for configuring secure communication
                    for the Prometheus-compatible metrics. Defaults to none. Use none
                    for insecure HTTP metrics. Use openshift to use OpenShift-provided
                    certificates with a ServiceMonitor.
                  type: string
              type: object
          type: object
        nodeSelector:
          additionalProperties:
            type: string
          description: 'The NodeSelector field allows users to specify a set of key
            value pair that must be matched against the node labels to decide whether
            App Connect Pods can be scheduled on that node. Only nodes matching all
            of these key value pairs in their labels will be selected for scheduling
            App Connect Pods. For more information, please see the Kubernetes documentation.
            NOTE: only applicable to deployment. Not currently supported for kNative'
          type: object
        nodePortService:
          properties:
            ports:
              items:
                properties:
                  name:
                    pattern: "^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$"
                    type: string
                  nodePort:
                    format: int32
                    maximum: 32767
                    minimum: 30000
                    type: integer
                  port:
                    format: int32
                    maximum: 65535
                    minimum: 1
                    type: integer
                  protocol:
                    description: Protocol defines network protocols supported for
                      things like container ports.
                    type: string
                  targetPort:
                    format: int32
                    maximum: 65535
                    minimum: 1
                    type: integer
                type: object
              type: array
          type: object
        replicas:
          description: This property specifies the number of replicas. If you increase
            the number of replicas, resource requirements are increated proportionally.
          format: int32
          minimum: 0
          type: integer
        restApiHTTPS:
          description: HTTPS Rest APIs
          properties:
            enabled:
              description: 'Declare the existance of HTTPS based rest APIs in the
                configuration. (default: false)'
              type: boolean
          type: object
        routes:
          description: Routes
          properties:
            disabled:
              description: 'Disable the creation of OpenShift routes. (default: false)'
              type: boolean
            domain:
              description: Custom hostname to be used on route creation.
              type: string
            metadata:
              description: Metadata to be attached to the Routes. This only supports
                an `annotations` property for annotations.
              properties:
                annotations:
                  additionalProperties:
                    type: string
                  description: Apply custom annotations to the Route resources
                  type: object
              type: object
            timeout:
              description: 'Timeout for all routes (default: false)'
              type: string
          type: object
        serverless:
          properties:
            knativeService:
              properties:
                enabled:
                  description: Enable knative service
                  type: boolean
                imagePullSecrets:
                  items:
                    description: LocalObjectReference contains enough information
                      to let you locate the referenced object inside the same namespace.
                    properties:
                      name:
                        default: ''
                        description: 'Name of the referent. This field is effectively
                          required, but due to backwards compatibility is allowed
                          to be empty. Instances of this type with an empty value
                          here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                  type: array
                metadata:
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: Apply custom annotations
                      type: object
                    labels:
                      additionalProperties:
                        type: string
                      description: Apply custom labels
                      type: object
                  type: object
                template:
                  properties:
                    metadata:
                      properties:
                        annotations:
                          additionalProperties:
                            type: string
                          description: Apply custom annotations
                          type: object
                        labels:
                          additionalProperties:
                            type: string
                          description: Apply custom labels
                          type: object
                      type: object
                    spec:
                      properties:
                        containerConcurrency:
                          description: ContainerConcurrency specifies the maximum
                            allowed in-flight (concurrent) requests per container
                            of the Revision.  Defaults to `0` which means concurrency
                            to the application is not limited, and the system decides
                            the target concurrency for the autoscaler.
                          format: int64
                          type: integer
                        containers:
                          items:
                            properties:
                              env:
                                description: Defines the collection of EnvVar to inject
                                  into container.
                                items:
                                  description: EnvVar represents an environment variable
                                    present in a Container.
                                  properties:
                                    name:
                                      description: Name of the environment variable.
                                        May consist of any printable ASCII characters
                                        except '='.
                                      type: string
                                    value:
                                      description: 'Variable references $(VAR_NAME)
                                        are expanded using the previously defined
                                        environment variables in the container and
                                        any service environment variables. If a variable
                                        cannot be resolved, the reference in the input
                                        string will be unchanged. Double $$ are reduced
                                        to a single $, which allows for escaping the
                                        $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
                                        produce the string literal "$(VAR_NAME)".
                                        Escaped references will never be expanded,
                                        regardless of whether the variable exists
                                        or not. Defaults to "".'
                                      type: string
                                    valueFrom:
                                      description: Source for the environment variable's
                                        value. Cannot be used if value is not empty.
                                      properties:
                                        configMapKeyRef:
                                          description: Selects a key of a ConfigMap.
                                          properties:
                                            key:
                                              description: The key to select.
                                              type: string
                                            name:
                                              default: ''
                                              description: 'Name of the referent.
                                                This field is effectively required,
                                                but due to backwards compatibility
                                                is allowed to be empty. Instances
                                                of this type with an empty value here
                                                are almost certainly wrong. More info:
                                                https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                              type: string
                                            optional:
                                              description: Specify whether the ConfigMap
                                                or its key must be defined
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        fieldRef:
                                          description: 'Selects a field of the pod:
                                            supports metadata.name, metadata.namespace,
                                            `metadata.labels[''<KEY>'']`, `metadata.annotations[''<KEY>'']`,
                                            spec.nodeName, spec.serviceAccountName,
                                            status.hostIP, status.podIP, status.podIPs.'
                                          properties:
                                            apiVersion:
                                              description: Version of the schema the
                                                FieldPath is written in terms of,
                                                defaults to "v1".
                                              type: string
                                            fieldPath:
                                              description: Path of the field to select
                                                in the specified API version.
                                              type: string
                                          required:
                                          - fieldPath
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        fileKeyRef:
                                          description: FileKeyRef selects a key of
                                            the env file. Requires the EnvFiles feature
                                            gate to be enabled.
                                          properties:
                                            key:
                                              description: The key within the env
                                                file. An invalid key will prevent
                                                the pod from starting. The keys defined
                                                within a source may consist of any
                                                printable ASCII characters except
                                                '='. During Alpha stage of the EnvFiles
                                                feature gate, the key size is limited
                                                to 128 characters.
                                              type: string
                                            optional:
                                              default: false
                                              description: Specify whether the file
                                                or its key must be defined. If the
                                                file or key does not exist, then the
                                                env var is not published. If optional
                                                is set to true and the specified key
                                                does not exist, the environment variable
                                                will not be set in the Pod's containers.
                                                If optional is set to false and the
                                                specified key does not exist, an error
                                                will be returned during Pod creation.
                                              type: boolean
                                            path:
                                              description: The path within the volume
                                                from which to select the file. Must
                                                be relative and may not contain the
                                                '..' path or start with '..'.
                                              type: string
                                            volumeName:
                                              description: The name of the volume
                                                mount containing the env file.
                                              type: string
                                          required:
                                          - key
                                          - path
                                          - volumeName
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        resourceFieldRef:
                                          description: 'Selects a resource of the
                                            container: only resources limits and requests
                                            (limits.cpu, limits.memory, limits.ephemeral-storage,
                                            requests.cpu, requests.memory and requests.ephemeral-storage)
                                            are currently supported.'
                                          properties:
                                            containerName:
                                              description: 'Container name: required
                                                for volumes, optional for env vars'
                                              type: string
                                            divisor:
                                              anyOf:
                                              - type: integer
                                              - type: string
                                              description: Specifies the output format
                                                of the exposed resources, defaults
                                                to "1"
                                              pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
                                              x-kubernetes-int-or-string: true
                                            resource:
                                              description: 'Required: resource to
                                                select'
                                              type: string
                                          required:
                                          - resource
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        secretKeyRef:
                                          description: Selects a key of a secret in
                                            the pod's namespace
                                          properties:
                                            key:
                                              description: The key of the secret to
                                                select from.  Must be a valid secret
                                                key.
                                              type: string
                                            name:
                                              default: ''
                                              description: 'Name of the referent.
                                                This field is effectively required,
                                                but due to backwards compatibility
                                                is allowed to be empty. Instances
                                                of this type with an empty value here
                                                are almost certainly wrong. More info:
                                                https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                              type: string
                                            optional:
                                              description: Specify whether the Secret
                                                or its key must be defined
                                              type: boolean
                                          required:
                                          - key
                                          type: object
                                          x-kubernetes-map-type: atomic
                                      type: object
                                  required:
                                  - name
                                  type: object
                                type: array
                              envFrom:
                                description: Defines the collection of EnvFromSource
                                  to inject into container.
                                items:
                                  description: EnvFromSource represents the source
                                    of a set of ConfigMaps or Secrets
                                  properties:
                                    configMapRef:
                                      description: The ConfigMap to select from
                                      properties:
                                        name:
                                          default: ''
                                          description: 'Name of the referent. This
                                            field is effectively required, but due
                                            to backwards compatibility is allowed
                                            to be empty. Instances of this type with
                                            an empty value here are almost certainly
                                            wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                          type: string
                                        optional:
                                          description: Specify whether the ConfigMap
                                            must be defined
                                          type: boolean
                                      type: object
                                      x-kubernetes-map-type: atomic
                                    prefix:
                                      description: Optional text to prepend to the
                                        name of each environment variable. May consist
                                        of any printable ASCII characters except '='.
                                      type: string
                                    secretRef:
                                      description: The Secret to select from
                                      properties:
                                        name:
                                          default: ''
                                          description: 'Name of the referent. This
                                            field is effectively required, but due
                                            to backwards compatibility is allowed
                                            to be empty. Instances of this type with
                                            an empty value here are almost certainly
                                            wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                          type: string
                                        optional:
                                          description: Specify whether the Secret
                                            must be defined
                                          type: boolean
                                      type: object
                                      x-kubernetes-map-type: atomic
                                  type: object
                                type: array
                              image:
                                description: Path for the image to run in this container,
                                  including the tag
                                type: string
                              imagePullPolicy:
                                description: Set the policy for if/when to pull a
                                  container image
                                enum:
                                - IfNotPresent
                                - Always
                                - Never
                                type: string
                              lifecycle:
                                "$ref": "#/components/schemas/CoreV1Lifecycle"
                              livenessProbe:
                                description: Configuration of the liveness probes
                                properties:
                                  exec:
                                    description: Exec specifies a command to execute
                                      in the container.
                                    properties:
                                      command:
                                        description: Command is the command line to
                                          execute inside the container, the working
                                          directory for the command  is root ('/')
                                          in the container's filesystem. The command
                                          is simply exec'd, it is not run inside a
                                          shell, so traditional shell instructions
                                          ('|', etc) won't work. To use a shell, you
                                          need to explicitly call out to that shell.
                                          Exit status of 0 is treated as live/healthy
                                          and non-zero is unhealthy.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                  failureThreshold:
                                    description: Minimum consecutive failures for
                                      the probe to be considered failed after having
                                      succeeded. Defaults to 3. Minimum value is 1.
                                    format: int32
                                    type: integer
                                  grpc:
                                    description: GRPC specifies a GRPC HealthCheckRequest.
                                    properties:
                                      port:
                                        description: Port number of the gRPC service.
                                          Number must be in the range 1 to 65535.
                                        format: int32
                                        type: integer
                                      service:
                                        default: ''
                                        description: Service is the name of the service
                                          to place in the gRPC HealthCheckRequest
                                          (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
                                          If this is not specified, the default behavior
                                          is defined by gRPC.
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  httpGet:
                                    description: HTTPGet specifies an HTTP GET request
                                      to perform.
                                    properties:
                                      host:
                                        description: Host name to connect to, defaults
                                          to the pod IP. You probably want to set
                                          "Host" in httpHeaders instead.
                                        type: string
                                      httpHeaders:
                                        description: Custom headers to set in the
                                          request. HTTP allows repeated headers.
                                        items:
                                          description: HTTPHeader describes a custom
                                            header to be used in HTTP probes
                                          properties:
                                            name:
                                              description: The header field name.
                                                This will be canonicalized upon output,
                                                so case-variant names will be understood
                                                as the same header.
                                              type: string
                                            value:
                                              description: The header field value
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      path:
                                        description: Path to access on the HTTP server.
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: Name or number of the port to
                                          access on the container. Number must be
                                          in the range 1 to 65535. Name must be an
                                          IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        description: Scheme to use for connecting
                                          to the host. Defaults to HTTP.
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  initialDelaySeconds:
                                    description: 'Number of seconds after the container
                                      has started before liveness probes are initiated.
                                      More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
                                    format: int32
                                    type: integer
                                  periodSeconds:
                                    description: How often (in seconds) to perform
                                      the probe. Default to 10 seconds. Minimum value
                                      is 1.
                                    format: int32
                                    type: integer
                                  successThreshold:
                                    description: Minimum consecutive successes for
                                      the probe to be considered successful after
                                      having failed. Defaults to 1. Must be 1 for
                                      liveness and startup. Minimum value is 1.
                                    format: int32
                                    type: integer
                                  tcpSocket:
                                    description: TCPSocket specifies a connection
                                      to a TCP port.
                                    properties:
                                      host:
                                        description: 'Optional: Host name to connect
                                          to, defaults to the pod IP.'
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: Number or name of the port to
                                          access on the container. Number must be
                                          in the range 1 to 65535. Name must be an
                                          IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                    required:
                                    - port
                                    type: object
                                  terminationGracePeriodSeconds:
                                    description: Optional duration in seconds the
                                      pod needs to terminate gracefully upon probe
                                      failure. The grace period is the duration in
                                      seconds after the processes running in the pod
                                      are sent a termination signal and the time when
                                      the processes are forcibly halted with a kill
                                      signal. Set this value longer than the expected
                                      cleanup time for your process. If this value
                                      is nil, the pod's terminationGracePeriodSeconds
                                      will be used. Otherwise, this value overrides
                                      the value provided by the pod spec. Value must
                                      be non-negative integer. The value zero indicates
                                      stop immediately via the kill signal (no opportunity
                                      to shut down). This is a beta field and requires
                                      enabling ProbeTerminationGracePeriod feature
                                      gate. Minimum value is 1. spec.terminationGracePeriodSeconds
                                      is used if unset.
                                    format: int64
                                    type: integer
                                  timeoutSeconds:
                                    description: 'Number of seconds after which the
                                      probe times out. Defaults to 1 second. Minimum
                                      value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
                                    format: int32
                                    type: integer
                                type: object
                              name:
                                description: Name of the container to apply these
                                  values
                                type: string
                              readinessProbe:
                                description: Configuration of the readiness probes
                                properties:
                                  exec:
                                    description: Exec specifies a command to execute
                                      in the container.
                                    properties:
                                      command:
                                        description: Command is the command line to
                                          execute inside the container, the working
                                          directory for the command  is root ('/')
                                          in the container's filesystem. The command
                                          is simply exec'd, it is not run inside a
                                          shell, so traditional shell instructions
                                          ('|', etc) won't work. To use a shell, you
                                          need to explicitly call out to that shell.
                                          Exit status of 0 is treated as live/healthy
                                          and non-zero is unhealthy.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                  failureThreshold:
                                    description: Minimum consecutive failures for
                                      the probe to be considered failed after having
                                      succeeded. Defaults to 3. Minimum value is 1.
                                    format: int32
                                    type: integer
                                  grpc:
                                    description: GRPC specifies a GRPC HealthCheckRequest.
                                    properties:
                                      port:
                                        description: Port number of the gRPC service.
                                          Number must be in the range 1 to 65535.
                                        format: int32
                                        type: integer
                                      service:
                                        default: ''
                                        description: Service is the name of the service
                                          to place in the gRPC HealthCheckRequest
                                          (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
                                          If this is not specified, the default behavior
                                          is defined by gRPC.
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  httpGet:
                                    description: HTTPGet specifies an HTTP GET request
                                      to perform.
                                    properties:
                                      host:
                                        description: Host name to connect to, defaults
                                          to the pod IP. You probably want to set
                                          "Host" in httpHeaders instead.
                                        type: string
                                      httpHeaders:
                                        description: Custom headers to set in the
                                          request. HTTP allows repeated headers.
                                        items:
                                          description: HTTPHeader describes a custom
                                            header to be used in HTTP probes
                                          properties:
                                            name:
                                              description: The header field name.
                                                This will be canonicalized upon output,
                                                so case-variant names will be understood
                                                as the same header.
                                              type: string
                                            value:
                                              description: The header field value
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      path:
                                        description: Path to access on the HTTP server.
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: Name or number of the port to
                                          access on the container. Number must be
                                          in the range 1 to 65535. Name must be an
                                          IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        description: Scheme to use for connecting
                                          to the host. Defaults to HTTP.
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  initialDelaySeconds:
                                    description: 'Number of seconds after the container
                                      has started before liveness probes are initiated.
                                      More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
                                    format: int32
                                    type: integer
                                  periodSeconds:
                                    description: How often (in seconds) to perform
                                      the probe. Default to 10 seconds. Minimum value
                                      is 1.
                                    format: int32
                                    type: integer
                                  successThreshold:
                                    description: Minimum consecutive successes for
                                      the probe to be considered successful after
                                      having failed. Defaults to 1. Must be 1 for
                                      liveness and startup. Minimum value is 1.
                                    format: int32
                                    type: integer
                                  tcpSocket:
                                    description: TCPSocket specifies a connection
                                      to a TCP port.
                                    properties:
                                      host:
                                        description: 'Optional: Host name to connect
                                          to, defaults to the pod IP.'
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: Number or name of the port to
                                          access on the container. Number must be
                                          in the range 1 to 65535. Name must be an
                                          IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                    required:
                                    - port
                                    type: object
                                  terminationGracePeriodSeconds:
                                    description: Optional duration in seconds the
                                      pod needs to terminate gracefully upon probe
                                      failure. The grace period is the duration in
                                      seconds after the processes running in the pod
                                      are sent a termination signal and the time when
                                      the processes are forcibly halted with a kill
                                      signal. Set this value longer than the expected
                                      cleanup time for your process. If this value
                                      is nil, the pod's terminationGracePeriodSeconds
                                      will be used. Otherwise, this value overrides
                                      the value provided by the pod spec. Value must
                                      be non-negative integer. The value zero indicates
                                      stop immediately via the kill signal (no opportunity
                                      to shut down). This is a beta field and requires
                                      enabling ProbeTerminationGracePeriod feature
                                      gate. Minimum value is 1. spec.terminationGracePeriodSeconds
                                      is used if unset.
                                    format: int64
                                    type: integer
                                  timeoutSeconds:
                                    description: 'Number of seconds after which the
                                      probe times out. Defaults to 1 second. Minimum
                                      value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
                                    format: int32
                                    type: integer
                                type: object
                              resources:
                                description: ResourceRequirements describes the compute
                                  resource requirements.
                                properties:
                                  claims:
                                    description: Claims lists the names of resources,
                                      defined in spec.resourceClaims, that are used
                                      by this container. This field depends on the
                                      DynamicResourceAllocation feature gate. This
                                      field is immutable. It can only be set for containers.
                                    items:
                                      description: ResourceClaim references one entry
                                        in PodSpec.ResourceClaims.
                                      properties:
                                        name:
                                          description: Name must match the name of
                                            one entry in pod.spec.resourceClaims of
                                            the Pod where this field is used. It makes
                                            that resource available inside a container.
                                          type: string
                                        request:
                                          description: Request is the name chosen
                                            for a request in the referenced claim.
                                            If empty, everything from the claim is
                                            made available, otherwise only the result
                                            of this request.
                                          type: string
                                      required:
                                      - name
                                      type: object
                                    type: array
                                    x-kubernetes-list-map-keys:
                                    - name
                                    x-kubernetes-list-type: map
                                  limits:
                                    additionalProperties:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
                                      x-kubernetes-int-or-string: true
                                    description: 'Limits describes the maximum amount
                                      of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
                                    type: object
                                  requests:
                                    additionalProperties:
                                      anyOf:
                                      - type: integer
                                      - type: string
                                      pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
                                      x-kubernetes-int-or-string: true
                                    description: 'Requests describes the minimum amount
                                      of compute resources required. If Requests is
                                      omitted for a container, it defaults to Limits
                                      if that is explicitly specified, otherwise to
                                      an implementation-defined value. Requests cannot
                                      exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
                                    type: object
                                type: object
                              startupProbe:
                                description: Configuration of the liveness probes
                                properties:
                                  exec:
                                    description: Exec specifies a command to execute
                                      in the container.
                                    properties:
                                      command:
                                        description: Command is the command line to
                                          execute inside the container, the working
                                          directory for the command  is root ('/')
                                          in the container's filesystem. The command
                                          is simply exec'd, it is not run inside a
                                          shell, so traditional shell instructions
                                          ('|', etc) won't work. To use a shell, you
                                          need to explicitly call out to that shell.
                                          Exit status of 0 is treated as live/healthy
                                          and non-zero is unhealthy.
                                        items:
                                          type: string
                                        type: array
                                        x-kubernetes-list-type: atomic
                                    type: object
                                  failureThreshold:
                                    description: Minimum consecutive failures for
                                      the probe to be considered failed after having
                                      succeeded. Defaults to 3. Minimum value is 1.
                                    format: int32
                                    type: integer
                                  grpc:
                                    description: GRPC specifies a GRPC HealthCheckRequest.
                                    properties:
                                      port:
                                        description: Port number of the gRPC service.
                                          Number must be in the range 1 to 65535.
                                        format: int32
                                        type: integer
                                      service:
                                        default: ''
                                        description: Service is the name of the service
                                          to place in the gRPC HealthCheckRequest
                                          (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
                                          If this is not specified, the default behavior
                                          is defined by gRPC.
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  httpGet:
                                    description: HTTPGet specifies an HTTP GET request
                                      to perform.
                                    properties:
                                      host:
                                        description: Host name to connect to, defaults
                                          to the pod IP. You probably want to set
                                          "Host" in httpHeaders instead.
                                        type: string
                                      httpHeaders:
                                        description: Custom headers to set in the
                                          request. HTTP allows repeated headers.
                                        items:
                                          description: HTTPHeader describes a custom
                                            header to be used in HTTP probes
                                          properties:
                                            name:
                                              description: The header field name.
                                                This will be canonicalized upon output,
                                                so case-variant names will be understood
                                                as the same header.
                                              type: string
                                            value:
                                              description: The header field value
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      path:
                                        description: Path to access on the HTTP server.
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: Name or number of the port to
                                          access on the container. Number must be
                                          in the range 1 to 65535. Name must be an
                                          IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        description: Scheme to use for connecting
                                          to the host. Defaults to HTTP.
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  initialDelaySeconds:
                                    description: 'Number of seconds after the container
                                      has started before liveness probes are initiated.
                                      More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
                                    format: int32
                                    type: integer
                                  periodSeconds:
                                    description: How often (in seconds) to perform
                                      the probe. Default to 10 seconds. Minimum value
                                      is 1.
                                    format: int32
                                    type: integer
                                  successThreshold:
                                    description: Minimum consecutive successes for
                                      the probe to be considered successful after
                                      having failed. Defaults to 1. Must be 1 for
                                      liveness and startup. Minimum value is 1.
                                    format: int32
                                    type: integer
                                  tcpSocket:
                                    description: TCPSocket specifies a connection
                                      to a TCP port.
                                    properties:
                                      host:
                                        description: 'Optional: Host name to connect
                                          to, defaults to the pod IP.'
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        description: Number or name of the port to
                                          access on the container. Number must be
                                          in the range 1 to 65535. Name must be an
                                          IANA_SVC_NAME.
                                        x-kubernetes-int-or-string: true
                                    required:
                                    - port
                                    type: object
                                  terminationGracePeriodSeconds:
                                    description: Optional duration in seconds the
                                      pod needs to terminate gracefully upon probe
                                      failure. The grace period is the duration in
                                      seconds after the processes running in the pod
                                      are sent a termination signal and the time when
                                      the processes are forcibly halted with a kill
                                      signal. Set this value longer than the expected
                                      cleanup time for your process. If this value
                                      is nil, the pod's terminationGracePeriodSeconds
                                      will be used. Otherwise, this value overrides
                                      the value provided by the pod spec. Value must
                                      be non-negative integer. The value zero indicates
                                      stop immediately via the kill signal (no opportunity
                                      to shut down). This is a beta field and requires
                                      enabling ProbeTerminationGracePeriod feature
                                      gate. Minimum value is 1. spec.terminationGracePeriodSeconds
                                      is used if unset.
                                    format: int64
                                    type: integer
                                  timeoutSeconds:
                                    description: 'Number of seconds after which the
                                      probe times out. Defaults to 1 second. Minimum
                                      value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
                                    format: int32
                                    type: integer
                                type: object
                              volumeMounts:
                                description: Volume Mounts
                                items:
                                  description: VolumeMount describes a mounting of
                                    a Volume within a container.
                                  properties:
                                    mountPath:
                                      description: Path within the container at which
                                        the volume should be mounted.  Must not contain
                                        ':'.
                                      type: string
                                    mountPropagation:
                                      description: mountPropagation determines how
                                        mounts are propagated from the host to container
                                        and the other way around. When not set, MountPropagationNone
                                        is used. This field is beta in 1.10. When
                                        RecursiveReadOnly is set to IfPossible or
                                        to Enabled, MountPropagation must be None
                                        or unspecified (which defaults to None).
                                      type: string
                                    name:
                                      description: This must match the Name of a Volume.
                                      type: string
                                    readOnly:
                                      description: Mounted read-only if true, read-write
                                        otherwise (false or unspecified). Defaults
                                        to false.
                                      type: boolean
                                    recursiveReadOnly:
                                      description: RecursiveReadOnly specifies whether
                                        read-only mounts should be handled recursively.
                                        If ReadOnly is false, this field has no meaning
                                        and must be unspecified. If ReadOnly is true,
                                        and this field is set to Disabled, the mount
                                        is not made recursively read-only.  If this
                                        field is set to IfPossible, the mount is made
                                        recursively read-only, if it is supported
                                        by the container runtime.  If this field is
                                        set to Enabled, the mount is made recursively
                                        read-only if it is supported by the container
                                        runtime, otherwise the pod will not be started
                                        and an error will be generated to indicate
                                        the reason. If this field is set to IfPossible
                                        or Enabled, MountPropagation must be set to
                                        None (or be unspecified, which defaults to
                                        None). If this field is not specified, it
                                        is treated as an equivalent of Disabled.
                                      type: string
                                    subPath:
                                      description: Path within the volume from which
                                        the container's volume should be mounted.
                                        Defaults to "" (volume's root).
                                      type: string
                                    subPathExpr:
                                      description: Expanded path within the volume
                                        from which the container's volume should be
                                        mounted. Behaves similarly to SubPath but
                                        environment variable references $(VAR_NAME)
                                        are expanded using the container's environment.
                                        Defaults to "" (volume's root). SubPathExpr
                                        and SubPath are mutually exclusive.
                                      type: string
                                  required:
                                  - mountPath
                                  - name
                                  type: object
                                type: array
                            type: object
                          type: array
                        priority:
                          description: The priority value. Various system components
                            use this field to find the priority of the pod. When Priority
                            Admission Controller is enabled, it prevents users from
                            setting this field. The admission controller populates
                            this field from PriorityClassName. The higher the value,
                            the higher the priority.
                          format: int32
                          type: integer
                        priorityClassName:
                          description: If specified, indicates the pod's priority.
                            "system-node-critical" and "system-cluster-critical" are
                            two special keywords which indicate the highest priorities
                            with the former being the highest priority. Any other
                            name must be defined by creating a PriorityClass object
                            with that name. If not specified, the pod priority will
                            be default or zero if there is no default.
                          type: string
                        timeoutSeconds:
                          description: TimeoutSeconds is the maximum duration in seconds
                            that the request routing layer will wait for a request
                            delivered to a container to begin replying (send network
                            traffic). If unspecified, a system default will be provided.
                          format: int64
                          type: integer
                        tolerations:
                          description: If specified, the pod's tolerations.
                          items:
                            description: The pod this Toleration is attached to tolerates
                              any taint that matches the triple <key,value,effect>
                              using the matching operator <operator>.
                            properties:
                              effect:
                                description: Effect indicates the taint effect to
                                  match. Empty means match all taint effects. When
                                  specified, allowed values are NoSchedule, PreferNoSchedule
                                  and NoExecute.
                                type: string
                              key:
                                description: Key is the taint key that the toleration
                                  applies to. Empty means match all taint keys. If
                                  the key is empty, operator must be Exists; this
                                  combination means to match all values and all keys.
                                type: string
                              operator:
                                description: Operator represents a key's relationship
                                  to the value. Valid operators are Exists and Equal.
                                  Defaults to Equal. Exists is equivalent to wildcard
                                  for value, so that a pod can tolerate all taints
                                  of a particular category.
                                type: string
                              tolerationSeconds:
                                description: TolerationSeconds represents the period
                                  of time the toleration (which must be of effect
                                  NoExecute, otherwise this field is ignored) tolerates
                                  the taint. By default, it is not set, which means
                                  tolerate the taint forever (do not evict). Zero
                                  and negative values will be treated as 0 (evict
                                  immediately) by the system.
                                format: int64
                                type: integer
                              value:
                                description: Value is the taint value the toleration
                                  matches to. If the operator is Exists, the value
                                  should be empty, otherwise just a regular string.
                                type: string
                            type: object
                          type: array
                        volumes:
                          description: Volumes
                          items:
                            description: Volume represents a named volume in a pod
                              that may be accessed by any container in the pod.
                            properties:
                              awsElasticBlockStore:
                                description: 'awsElasticBlockStore represents an AWS
                                  Disk resource that is attached to a kubelet''s host
                                  machine and then exposed to the pod. Deprecated:
                                  AWSElasticBlockStore is deprecated. All operations
                                  for the in-tree awsElasticBlockStore type are redirected
                                  to the ebs.csi.aws.com CSI driver. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
                                properties:
                                  fsType:
                                    description: 'fsType is the filesystem type of
                                      the volume that you want to mount. Tip: Ensure
                                      that the filesystem type is supported by the
                                      host operating system. Examples: "ext4", "xfs",
                                      "ntfs". Implicitly inferred to be "ext4" if
                                      unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
                                    type: string
                                  partition:
                                    description: 'partition is the partition in the
                                      volume that you want to mount. If omitted, the
                                      default is to mount by volume name. Examples:
                                      For volume /dev/sda1, you specify the partition
                                      as "1". Similarly, the volume partition for
                                      /dev/sda is "0" (or you can leave the property
                                      empty).'
                                    format: int32
                                    type: integer
                                  readOnly:
                                    description: 'readOnly value true will force the
                                      readOnly setting in VolumeMounts. More info:
                                      https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
                                    type: boolean
                                  volumeID:
                                    description: 'volumeID is unique ID of the persistent
                                      disk resource in AWS (Amazon EBS volume). More
                                      info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
                                    type: string
                                required:
                                - volumeID
                                type: object
                              azureDisk:
                                description: 'azureDisk represents an Azure Data Disk
                                  mount on the host and bind mount to the pod. Deprecated:
                                  AzureDisk is deprecated. All operations for the
                                  in-tree azureDisk type are redirected to the disk.csi.azure.com
                                  CSI driver.'
                                properties:
                                  cachingMode:
                                    description: 'cachingMode is the Host Caching
                                      mode: None, Read Only, Read Write.'
                                    type: string
                                  diskName:
                                    description: diskName is the Name of the data
                                      disk in the blob storage
                                    type: string
                                  diskURI:
                                    description: diskURI is the URI of data disk in
                                      the blob storage
                                    type: string
                                  fsType:
                                    default: ext4
                                    description: fsType is Filesystem type to mount.
                                      Must be a filesystem type supported by the host
                                      operating system. Ex. "ext4", "xfs", "ntfs".
                                      Implicitly inferred to be "ext4" if unspecified.
                                    type: string
                                  kind:
                                    description: 'kind expected values are Shared:
                                      multiple blob disks per storage account  Dedicated:
                                      single blob disk per storage account  Managed:
                                      azure managed data disk (only in managed availability
                                      set). defaults to shared'
                                    type: string
                                  readOnly:
                                    default: false
                                    description: readOnly Defaults to false (read/write).
                                      ReadOnly here will force the ReadOnly setting
                                      in VolumeMounts.
                                    type: boolean
                                required:
                                - diskName
                                - diskURI
                                type: object
                              azureFile:
                                description: 'azureFile represents an Azure File Service
                                  mount on the host and bind mount to the pod. Deprecated:
                                  AzureFile is deprecated. All operations for the
                                  in-tree azureFile type are redirected to the file.csi.azure.com
                                  CSI driver.'
                                properties:
                                  readOnly:
                                    description: readOnly defaults to false (read/write).
                                      ReadOnly here will force the ReadOnly setting
                                      in VolumeMounts.
                                    type: boolean
                                  secretName:
                                    description: secretName is the  name of secret
                                      that contains Azure Storage Account Name and
                                      Key
                                    type: string
                                  shareName:
                                    description: shareName is the azure share Name
                                    type: string
                                required:
                                - secretName
                                - shareName
                                type: object
                              cephfs:
                                description: 'cephFS represents a Ceph FS mount on
                                  the host that shares a pod''s lifetime. Deprecated:
                                  CephFS is deprecated and the in-tree cephfs type
                                  is no longer supported.'
                                properties:
                                  monitors:
                                    description: 'monitors is Required: Monitors is
                                      a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  path:
                                    description: 'path is Optional: Used as the mounted
                                      root, rather than the full Ceph tree, default
                                      is /'
                                    type: string
                                  readOnly:
                                    description: 'readOnly is Optional: Defaults to
                                      false (read/write). ReadOnly here will force
                                      the ReadOnly setting in VolumeMounts. More info:
                                      https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
                                    type: boolean
                                  secretFile:
                                    description: 'secretFile is Optional: SecretFile
                                      is the path to key ring for User, default is
                                      /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
                                    type: string
                                  secretRef:
                                    description: 'secretRef is Optional: SecretRef
                                      is reference to the authentication secret for
                                      User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
                                    properties:
                                      name:
                                        default: ''
                                        description: 'Name of the referent. This field
                                          is effectively required, but due to backwards
                                          compatibility is allowed to be empty. Instances
                                          of this type with an empty value here are
                                          almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                        type: string
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  user:
                                    description: 'user is optional: User is the rados
                                      user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
                                    type: string
                                required:
                                - monitors
                                type: object
                              cinder:
                                description: 'cinder represents a cinder volume attached
                                  and mounted on kubelets host machine. Deprecated:
                                  Cinder is deprecated. All operations for the in-tree
                                  cinder type are redirected to the cinder.csi.openstack.org
                                  CSI driver. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
                                properties:
                                  fsType:
                                    description: 'fsType is the filesystem type to
                                      mount. Must be a filesystem type supported by
                                      the host operating system. Examples: "ext4",
                                      "xfs", "ntfs". Implicitly inferred to be "ext4"
                                      if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
                                    type: string
                                  readOnly:
                                    description: 'readOnly defaults to false (read/write).
                                      ReadOnly here will force the ReadOnly setting
                                      in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
                                    type: boolean
                                  secretRef:
                                    description: 'secretRef is optional: points to
                                      a secret object containing parameters used to
                                      connect to OpenStack.'
                                    properties:
                                      name:
                                        default: ''
                                        description: 'Name of the referent. This field
                                          is effectively required, but due to backwards
                                          compatibility is allowed to be empty. Instances
                                          of this type with an empty value here are
                                          almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                        type: string
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  volumeID:
                                    description: 'volumeID used to identify the volume
                                      in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
                                    type: string
                                required:
                                - volumeID
                                type: object
                              configMap:
                                description: configMap represents a configMap that
                                  should populate this volume
                                properties:
                                  defaultMode:
                                    description: 'defaultMode is optional: mode bits
                                      used to set permissions on created files by
                                      default. Must be an octal value between 0000
                                      and 0777 or a decimal value between 0 and 511.
                                      YAML accepts both octal and decimal values,
                                      JSON requires decimal values for mode bits.
                                      Defaults to 0644. Directories within the path
                                      are not affected by this setting. This might
                                      be in conflict with other options that affect
                                      the file mode, like fsGroup, and the result
                                      can be other mode bits set.'
                                    format: int32
                                    type: integer
                                  items:
                                    description: items if unspecified, each key-value
                                      pair in the Data field of the referenced ConfigMap
                                      will be projected into the volume as a file
                                      whose name is the key and content is the value.
                                      If specified, the listed keys will be projected
                                      into the specified paths, and unlisted keys
                                      will not be present. If a key is specified which
                                      is not present in the ConfigMap, the volume
                                      setup will error unless it is marked optional.
                                      Paths must be relative and may not contain the
                                      '..' path or start with '..'.
                                    items:
                                      description: Maps a string key to a path within
                                        a volume.
                                      properties:
                                        key:
                                          description: key is the key to project.
                                          type: string
                                        mode:
                                          description: 'mode is Optional: mode bits
                                            used to set permissions on this file.
                                            Must be an octal value between 0000 and
                                            0777 or a decimal value between 0 and
                                            511. YAML accepts both octal and decimal
                                            values, JSON requires decimal values for
                                            mode bits. If not specified, the volume
                                            defaultMode will be used. This might be
                                            in conflict with other options that affect
                                            the file mode, like fsGroup, and the result
                                            can be other mode bits set.'
                                          format: int32
                                          type: integer
                                        path:
                                          description: path is the relative path of
                                            the file to map the key to. May not be
                                            an absolute path. May not contain the
                                            path element '..'. May not start with
                                            the string '..'.
                                          type: string
                                      required:
                                      - key
                                      - path
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  name:
                                    default: ''
                                    description: 'Name of the referent. This field
                                      is effectively required, but due to backwards
                                      compatibility is allowed to be empty. Instances
                                      of this type with an empty value here are almost
                                      certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                    type: string
                                  optional:
                                    description: optional specify whether the ConfigMap
                                      or its keys must be defined
                                    type: boolean
                                type: object
                                x-kubernetes-map-type: atomic
                              csi:
                                description: csi (Container Storage Interface) represents
                                  ephemeral storage that is handled by certain external
                                  CSI drivers.
                                properties:
                                  driver:
                                    description: driver is the name of the CSI driver
                                      that handles this volume. Consult with your
                                      admin for the correct name as registered in
                                      the cluster.
                                    type: string
                                  fsType:
                                    description: fsType to mount. Ex. "ext4", "xfs",
                                      "ntfs". If not provided, the empty value is
                                      passed to the associated CSI driver which will
                                      determine the default filesystem to apply.
                                    type: string
                                  nodePublishSecretRef:
                                    description: nodePublishSecretRef is a reference
                                      to the secret object containing sensitive information
                                      to pass to the CSI driver to complete the CSI
                                      NodePublishVolume and NodeUnpublishVolume calls.
                                      This field is optional, and  may be empty if
                                      no secret is required. If the secret object
                                      contains more than one secret, all secret references
                                      are passed.
                                    properties:
                                      name:
                                        default: ''
                                        description: 'Name of the referent. This field
                                          is effectively required, but due to backwards
                                          compatibility is allowed to be empty. Instances
                                          of this type with an empty value here are
                                          almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                        type: string
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  readOnly:
                                    description: readOnly specifies a read-only configuration
                                      for the volume. Defaults to false (read/write).
                                    type: boolean
                                  volumeAttributes:
                                    additionalProperties:
                                      type: string
                                    description: volumeAttributes stores driver-specific
                                      properties that are passed to the CSI driver.
                                      Consult your driver's documentation for supported
                                      values.
                                    type: object
                                required:
                                - driver
                                type: object
                              downwardAPI:
                                description: downwardAPI represents downward API about
                                  the pod that should populate this volume
                                properties:
                                  defaultMode:
                                    description: 'Optional: mode bits to use on created
                                      files by default. Must be a Optional: mode bits
                                      used to set permissions on created files by
                                      default. Must be an octal value between 0000
                                      and 0777 or a decimal value between 0 and 511.
                                      YAML accepts both octal and decimal values,
                                      JSON requires decimal values for mode bits.
                                      Defaults to 0644. Directories within the path
                                      are not affected by this setting. This might
                                      be in conflict with other options that affect
                                      the file mode, like fsGroup, and the result
                                      can be other mode bits set.'
                                    format: int32
                                    type: integer
                                  items:
                                    description: Items is a list of downward API volume
                                      file
                                    items:
                                      description: DownwardAPIVolumeFile represents
                                        information to create the file containing
                                        the pod field
                                      properties:
                                        fieldRef:
                                          description: 'Required: Selects a field
                                            of the pod: only annotations, labels,
                                            name, namespace and uid are supported.'
                                          properties:
                                            apiVersion:
                                              description: Version of the schema the
                                                FieldPath is written in terms of,
                                                defaults to "v1".
                                              type: string
                                            fieldPath:
                                              description: Path of the field to select
                                                in the specified API version.
                                              type: string
                                          required:
                                          - fieldPath
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        mode:
                                          description: 'Optional: mode bits used to
                                            set permissions on this file, must be
                                            an octal value between 0000 and 0777 or
                                            a decimal value between 0 and 511. YAML
                                            accepts both octal and decimal values,
                                            JSON requires decimal values for mode
                                            bits. If not specified, the volume defaultMode
                                            will be used. This might be in conflict
                                            with other options that affect the file
                                            mode, like fsGroup, and the result can
                                            be other mode bits set.'
                                          format: int32
                                          type: integer
                                        path:
                                          description: 'Required: Path is  the relative
                                            path name of the file to be created. Must
                                            not be absolute or contain the ''..''
                                            path. Must be utf-8 encoded. The first
                                            item of the relative path must not start
                                            with ''..'''
                                          type: string
                                        resourceFieldRef:
                                          description: 'Selects a resource of the
                                            container: only resources limits and requests
                                            (limits.cpu, limits.memory, requests.cpu
                                            and requests.memory) are currently supported.'
                                          properties:
                                            containerName:
                                              description: 'Container name: required
                                                for volumes, optional for env vars'
                                              type: string
                                            divisor:
                                              anyOf:
                                              - type: integer
                                              - type: string
                                              description: Specifies the output format
                                                of the exposed resources, defaults
                                                to "1"
                                              pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
                                              x-kubernetes-int-or-string: true
                                            resource:
                                              description: 'Required: resource to
                                                select'
                                              type: string
                                          required:
                                          - resource
                                          type: object
                                          x-kubernetes-map-type: atomic
                                      required:
                                      - path
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              emptyDir:
                                description: 'emptyDir represents a temporary directory
                                  that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
                                properties:
                                  medium:
                                    description: 'medium represents what type of storage
                                      medium should back this directory. The default
                                      is "" which means to use the node''s default
                                      medium. Must be an empty string (default) or
                                      Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
                                    type: string
                                  sizeLimit:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    description: 'sizeLimit is the total amount of
                                      local storage required for this EmptyDir volume.
                                      The size limit is also applicable for memory
                                      medium. The maximum usage on memory medium EmptyDir
                                      would be the minimum value between the SizeLimit
                                      specified here and the sum of memory limits
                                      of all containers in a pod. The default is nil
                                      which means that the limit is undefined. More
                                      info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
                                    pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
                                    x-kubernetes-int-or-string: true
                                type: object
                              ephemeral:
                                description: |-
                                  ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity
                                      tracking are needed,
                                  c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through
                                      a PersistentVolumeClaim (see EphemeralVolumeSource for more
                                      information on the connection between this volume type
                                      and PersistentVolumeClaim).
                                  Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. A pod can use both types of ephemeral volumes and persistent volumes at the same time.
                                properties:
                                  volumeClaimTemplate:
                                    description: Will be used to create a stand-alone
                                      PVC to provision the volume. The pod in which
                                      this EphemeralVolumeSource is embedded will
                                      be the owner of the PVC, i.e. the PVC will be
                                      deleted together with the pod.  The name of
                                      the PVC will be `<pod name>-<volume name>` where
                                      `<volume name>` is the name from the `PodSpec.Volumes`
                                      array entry. Pod validation will reject the
                                      pod if the concatenated name is not valid for
                                      a PVC (for example, too long). An existing PVC
                                      with that name that is not owned by the pod
                                      will *not* be used for the pod to avoid using
                                      an unrelated volume by mistake. Starting the
                                      pod is then blocked until the unrelated PVC
                                      is removed. If such a pre-created PVC is meant
                                      to be used by the pod, the PVC has to updated
                                      with an owner reference to the pod once the
                                      pod exists. Normally this should not be necessary,
                                      but it may be useful when manually reconstructing
                                      a broken cluster. This field is read-only and
                                      no changes will be made by Kubernetes to the
                                      PVC after it has been created. Required, must
                                      not be nil.
                                    properties:
                                      metadata:
                                        description: May contain labels and annotations
                                          that will be copied into the PVC when creating
                                          it. No other fields are allowed and will
                                          be rejected during validation.
                                        type: object
                                      spec:
                                        description: The specification for the PersistentVolumeClaim.
                                          The entire content is copied unchanged into
                                          the PVC that gets created from this template.
                                          The same fields as in a PersistentVolumeClaim
                                          are also valid here.
                                        properties:
                                          accessModes:
                                            description: 'accessModes contains the
                                              desired access modes the volume should
                                              have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
                                            items:
                                              type: string
                                            type: array
                                            x-kubernetes-list-type: atomic
                                          dataSource:
                                            description: 'dataSource field can be
                                              used to specify either: * An existing
                                              VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
                                              * An existing PVC (PersistentVolumeClaim)
                                              If the provisioner or an external controller
                                              can support the specified data source,
                                              it will create a new volume based on
                                              the contents of the specified data source.
                                              When the AnyVolumeDataSource feature
                                              gate is enabled, dataSource contents
                                              will be copied to dataSourceRef, and
                                              dataSourceRef contents will be copied
                                              to dataSource when dataSourceRef.namespace
                                              is not specified. If the namespace is
                                              specified, then dataSourceRef will not
                                              be copied to dataSource.'
                                            properties:
                                              apiGroup:
                                                description: APIGroup is the group
                                                  for the resource being referenced.
                                                  If APIGroup is not specified, the
                                                  specified Kind must be in the core
                                                  API group. For any other third-party
                                                  types, APIGroup is required.
                                                type: string
                                              kind:
                                                description: Kind is the type of resource
                                                  being referenced
                                                type: string
                                              name:
                                                description: Name is the name of resource
                                                  being referenced
                                                type: string
                                            required:
                                            - kind
                                            - name
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          dataSourceRef:
                                            description: |-
                                              dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef
                                                allows any non-core object, as well as PersistentVolumeClaim objects.
                                              * While dataSource ignores disallowed values (dropping them), dataSourceRef
                                                preserves all values, and generates an error if a disallowed value is
                                                specified.
                                              * While dataSource only allows local objects, dataSourceRef allows objects
                                                in any namespaces.
                                              (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                                            properties:
                                              apiGroup:
                                                description: APIGroup is the group
                                                  for the resource being referenced.
                                                  If APIGroup is not specified, the
                                                  specified Kind must be in the core
                                                  API group. For any other third-party
                                                  types, APIGroup is required.
                                                type: string
                                              kind:
                                                description: Kind is the type of resource
                                                  being referenced
                                                type: string
                                              name:
                                                description: Name is the name of resource
                                                  being referenced
                                                type: string
                                              namespace:
                                                description: Namespace is the namespace
                                                  of resource being referenced Note
                                                  that when a namespace is specified,
                                                  a gateway.networking.k8s.io/ReferenceGrant
                                                  object is required in the referent
                                                  namespace to allow that namespace's
                                                  owner to accept the reference. See
                                                  the ReferenceGrant documentation
                                                  for details. (Alpha) This field
                                                  requires the CrossNamespaceVolumeDataSource
                                                  feature gate to be enabled.
                                                type: string
                                            required:
                                            - kind
                                            - name
                                            type: object
                                          resources:
                                            description: 'resources represents the
                                              minimum resources the volume should
                                              have. If RecoverVolumeExpansionFailure
                                              feature is enabled users are allowed
                                              to specify resource requirements that
                                              are lower than previous value but must
                                              still be higher than capacity recorded
                                              in the status field of the claim. More
                                              info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                                            properties:
                                              limits:
                                                additionalProperties:
                                                  anyOf:
                                                  - type: integer
                                                  - type: string
                                                  pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
                                                  x-kubernetes-int-or-string: true
                                                description: 'Limits describes the
                                                  maximum amount of compute resources
                                                  allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
                                                type: object
                                              requests:
                                                additionalProperties:
                                                  anyOf:
                                                  - type: integer
                                                  - type: string
                                                  pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
                                                  x-kubernetes-int-or-string: true
                                                description: 'Requests describes the
                                                  minimum amount of compute resources
                                                  required. If Requests is omitted
                                                  for a container, it defaults to
                                                  Limits if that is explicitly specified,
                                                  otherwise to an implementation-defined
                                                  value. Requests cannot exceed Limits.
                                                  More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
                                                type: object
                                            type: object
                                          selector:
                                            description: selector is a label query
                                              over volumes to consider for binding.
                                            properties:
                                              matchExpressions:
                                                description: matchExpressions is a
                                                  list of label selector requirements.
                                                  The requirements are ANDed.
                                                items:
                                                  description: A label selector requirement
                                                    is a selector that contains values,
                                                    a key, and an operator that relates
                                                    the key and values.
                                                  properties:
                                                    key:
                                                      description: key is the label
                                                        key that the selector applies
                                                        to.
                                                      type: string
                                                    operator:
                                                      description: operator represents
                                                        a key's relationship to a
                                                        set of values. Valid operators
                                                        are In, NotIn, Exists and
                                                        DoesNotExist.
                                                      type: string
                                                    values:
                                                      description: values is an array
                                                        of string values. If the operator
                                                        is In or NotIn, the values
                                                        array must be non-empty. If
                                                        the operator is Exists or
                                                        DoesNotExist, the values array
                                                        must be empty. This array
                                                        is replaced during a strategic
                                                        merge patch.
                                                      items:
                                                        type: string
                                                      type: array
                                                      x-kubernetes-list-type: atomic
                                                  required:
                                                  - key
                                                  - operator
                                                  type: object
                                                type: array
                                                x-kubernetes-list-type: atomic
                                              matchLabels:
                                                additionalProperties:
                                                  type: string
                                                description: matchLabels is a map
                                                  of {key,value} pairs. A single {key,value}
                                                  in the matchLabels map is equivalent
                                                  to an element of matchExpressions,
                                                  whose key field is "key", the operator
                                                  is "In", and the values array contains
                                                  only "value". The requirements are
                                                  ANDed.
                                                type: object
                                            type: object
                                            x-kubernetes-map-type: atomic
                                          storageClassName:
                                            description: 'storageClassName is the
                                              name of the StorageClass required by
                                              the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                                            type: string
                                          volumeAttributesClassName:
                                            description: 'volumeAttributesClassName
                                              may be used to set the VolumeAttributesClass
                                              used by this claim. If specified, the
                                              CSI driver will create or update the
                                              volume with the attributes defined in
                                              the corresponding VolumeAttributesClass.
                                              This has a different purpose than storageClassName,
                                              it can be changed after the claim is
                                              created. An empty string or nil value
                                              indicates that no VolumeAttributesClass
                                              will be applied to the claim. If the
                                              claim enters an Infeasible error state,
                                              this field can be reset to its previous
                                              value (including nil) to cancel the
                                              modification. If the resource referred
                                              to by volumeAttributesClass does not
                                              exist, this PersistentVolumeClaim will
                                              be set to a Pending state, as reflected
                                              by the modifyVolumeStatus field, until
                                              such as a resource exists. More info:
                                              https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/'
                                            type: string
                                          volumeMode:
                                            description: volumeMode defines what type
                                              of volume is required by the claim.
                                              Value of Filesystem is implied when
                                              not included in claim spec.
                                            type: string
                                          volumeName:
                                            description: volumeName is the binding
                                              reference to the PersistentVolume backing
                                              this claim.
                                            type: string
                                        type: object
                                    required:
                                    - spec
                                    type: object
                                type: object
                              fc:
                                description: fc represents a Fibre Channel resource
                                  that is attached to a kubelet's host machine and
                                  then exposed to the pod.
                                properties:
                                  fsType:
                                    description: fsType is the filesystem type to
                                      mount. Must be a filesystem type supported by
                                      the host operating system. Ex. "ext4", "xfs",
                                      "ntfs". Implicitly inferred to be "ext4" if
                                      unspecified.
                                    type: string
                                  lun:
                                    description: 'lun is Optional: FC target lun number'
                                    format: int32
                                    type: integer
                                  readOnly:
                                    description: 'readOnly is Optional: Defaults to
                                      false (read/write). ReadOnly here will force
                                      the ReadOnly setting in VolumeMounts.'
                                    type: boolean
                                  targetWWNs:
                                    description: 'targetWWNs is Optional: FC target
                                      worldwide names (WWNs)'
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  wwids:
                                    description: 'wwids Optional: FC volume world
                                      wide identifiers (wwids) Either wwids or combination
                                      of targetWWNs and lun must be set, but not both
                                      simultaneously.'
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              flexVolume:
                                description: 'flexVolume represents a generic volume
                                  resource that is provisioned/attached using an exec
                                  based plugin. Deprecated: FlexVolume is deprecated.
                                  Consider using a CSIDriver instead.'
                                properties:
                                  driver:
                                    description: driver is the name of the driver
                                      to use for this volume.
                                    type: string
                                  fsType:
                                    description: fsType is the filesystem type to
                                      mount. Must be a filesystem type supported by
                                      the host operating system. Ex. "ext4", "xfs",
                                      "ntfs". The default filesystem depends on FlexVolume
                                      script.
                                    type: string
                                  options:
                                    additionalProperties:
                                      type: string
                                    description: 'options is Optional: this field
                                      holds extra command options if any.'
                                    type: object
                                  readOnly:
                                    description: 'readOnly is Optional: defaults to
                                      false (read/write). ReadOnly here will force
                                      the ReadOnly setting in VolumeMounts.'
                                    type: boolean
                                  secretRef:
                                    description: 'secretRef is Optional: secretRef
                                      is reference to the secret object containing
                                      sensitive information to pass to the plugin
                                      scripts. This may be empty if no secret object
                                      is specified. If the secret object contains
                                      more than one secret, all secrets are passed
                                      to the plugin scripts.'
                                    properties:
                                      name:
                                        default: ''
                                        description: 'Name of the referent. This field
                                          is effectively required, but due to backwards
                                          compatibility is allowed to be empty. Instances
                                          of this type with an empty value here are
                                          almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                        type: string
                                    type: object
                                    x-kubernetes-map-type: atomic
                                required:
                                - driver
                                type: object
                              flocker:
                                description: 'flocker represents a Flocker volume
                                  attached to a kubelet''s host machine. This depends
                                  on the Flocker control service being running. Deprecated:
                                  Flocker is deprecated and the in-tree flocker type
                                  is no longer supported.'
                                properties:
                                  datasetName:
                                    description: datasetName is Name of the dataset
                                      stored as metadata -> name on the dataset for
                                      Flocker should be considered as deprecated
                                    type: string
                                  datasetUUID:
                                    description: datasetUUID is the UUID of the dataset.
                                      This is unique identifier of a Flocker dataset
                                    type: string
                                type: object
                              gcePersistentDisk:
                                description: 'gcePersistentDisk represents a GCE Disk
                                  resource that is attached to a kubelet''s host machine
                                  and then exposed to the pod. Deprecated: GCEPersistentDisk
                                  is deprecated. All operations for the in-tree gcePersistentDisk
                                  type are redirected to the pd.csi.storage.gke.io
                                  CSI driver. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
                                properties:
                                  fsType:
                                    description: 'fsType is filesystem type of the
                                      volume that you want to mount. Tip: Ensure that
                                      the filesystem type is supported by the host
                                      operating system. Examples: "ext4", "xfs", "ntfs".
                                      Implicitly inferred to be "ext4" if unspecified.
                                      More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
                                    type: string
                                  partition:
                                    description: 'partition is the partition in the
                                      volume that you want to mount. If omitted, the
                                      default is to mount by volume name. Examples:
                                      For volume /dev/sda1, you specify the partition
                                      as "1". Similarly, the volume partition for
                                      /dev/sda is "0" (or you can leave the property
                                      empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
                                    format: int32
                                    type: integer
                                  pdName:
                                    description: 'pdName is unique name of the PD
                                      resource in GCE. Used to identify the disk in
                                      GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
                                    type: string
                                  readOnly:
                                    description: 'readOnly here will force the ReadOnly
                                      setting in VolumeMounts. Defaults to false.
                                      More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
                                    type: boolean
                                required:
                                - pdName
                                type: object
                              gitRepo:
                                description: 'gitRepo represents a git repository
                                  at a particular revision. Deprecated: GitRepo is
                                  deprecated. To provision a container with a git
                                  repo, mount an EmptyDir into an InitContainer that
                                  clones the repo using git, then mount the EmptyDir
                                  into the Pod''s container.'
                                properties:
                                  directory:
                                    description: directory is the target directory
                                      name. Must not contain or start with '..'.  If
                                      '.' is supplied, the volume directory will be
                                      the git repository.  Otherwise, if specified,
                                      the volume will contain the git repository in
                                      the subdirectory with the given name.
                                    type: string
                                  repository:
                                    description: repository is the URL
                                    type: string
                                  revision:
                                    description: revision is the commit hash for the
                                      specified revision.
                                    type: string
                                required:
                                - repository
                                type: object
                              glusterfs:
                                description: 'glusterfs represents a Glusterfs mount
                                  on the host that shares a pod''s lifetime. Deprecated:
                                  Glusterfs is deprecated and the in-tree glusterfs
                                  type is no longer supported.'
                                properties:
                                  endpoints:
                                    description: endpoints is the endpoint name that
                                      details Glusterfs topology.
                                    type: string
                                  path:
                                    description: 'path is the Glusterfs volume path.
                                      More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
                                    type: string
                                  readOnly:
                                    description: 'readOnly here will force the Glusterfs
                                      volume to be mounted with read-only permissions.
                                      Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
                                    type: boolean
                                required:
                                - endpoints
                                - path
                                type: object
                              hostPath:
                                description: 'hostPath represents a pre-existing file
                                  or directory on the host machine that is directly
                                  exposed to the container. This is generally used
                                  for system agents or other privileged things that
                                  are allowed to see the host machine. Most containers
                                  will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
                                properties:
                                  path:
                                    description: 'path of the directory on the host.
                                      If the path is a symlink, it will follow the
                                      link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
                                    type: string
                                  type:
                                    description: 'type for HostPath Volume Defaults
                                      to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
                                    type: string
                                required:
                                - path
                                type: object
                              image:
                                description: 'image represents an OCI object (a container
                                  image or artifact) pulled and mounted on the kubelet''s
                                  host machine. The volume is resolved at pod startup
                                  depending on which PullPolicy value is provided:
                                  - Always: the kubelet always attempts to pull the
                                  reference. Container creation will fail If the pull
                                  fails. - Never: the kubelet never pulls the reference
                                  and only uses a local image or artifact. Container
                                  creation will fail if the reference isn''t present.
                                  - IfNotPresent: the kubelet pulls if the reference
                                  isn''t already present on disk. Container creation
                                  will fail if the reference isn''t present and the
                                  pull fails. The volume gets re-resolved if the pod
                                  gets deleted and recreated, which means that new
                                  remote content will become available on pod recreation.
                                  A failure to resolve or pull the image during pod
                                  startup will block containers from starting and
                                  may add significant latency. Failures will be retried
                                  using normal volume backoff and will be reported
                                  on the pod reason and message. The types of objects
                                  that may be mounted by this volume are defined by
                                  the container runtime implementation on a host machine
                                  and at minimum must include all valid types supported
                                  by the container image field. The OCI object gets
                                  mounted in a single directory (spec.containers[*].volumeMounts.mountPath)
                                  by merging the manifest layers in the same way as
                                  for container images. The volume will be mounted
                                  read-only (ro) and non-executable files (noexec).
                                  Sub path mounts for containers are not supported
                                  (spec.containers[*].volumeMounts.subpath) before
                                  1.33. The field spec.securityContext.fsGroupChangePolicy
                                  has no effect on this volume type.'
                                properties:
                                  pullPolicy:
                                    description: 'Policy for pulling OCI objects.
                                      Possible values are: Always: the kubelet always
                                      attempts to pull the reference. Container creation
                                      will fail If the pull fails. Never: the kubelet
                                      never pulls the reference and only uses a local
                                      image or artifact. Container creation will fail
                                      if the reference isn''t present. IfNotPresent:
                                      the kubelet pulls if the reference isn''t already
                                      present on disk. Container creation will fail
                                      if the reference isn''t present and the pull
                                      fails. Defaults to Always if :latest tag is
                                      specified, or IfNotPresent otherwise.'
                                    type: string
                                  reference:
                                    description: 'Required: Image or artifact reference
                                      to be used. Behaves in the same way as pod.spec.containers[*].image.
                                      Pull secrets will be assembled in the same way
                                      as for the container image by looking up node
                                      credentials, SA image pull secrets, and pod
                                      spec image pull secrets. More info: https://kubernetes.io/docs/concepts/containers/images
                                      This field is optional to allow higher level
                                      config management to default or override container
                                      images in workload controllers like Deployments
                                      and StatefulSets.'
                                    type: string
                                type: object
                              iscsi:
                                description: 'iscsi represents an ISCSI Disk resource
                                  that is attached to a kubelet''s host machine and
                                  then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes/#iscsi'
                                properties:
                                  chapAuthDiscovery:
                                    description: chapAuthDiscovery defines whether
                                      support iSCSI Discovery CHAP authentication
                                    type: boolean
                                  chapAuthSession:
                                    description: chapAuthSession defines whether support
                                      iSCSI Session CHAP authentication
                                    type: boolean
                                  fsType:
                                    description: 'fsType is the filesystem type of
                                      the volume that you want to mount. Tip: Ensure
                                      that the filesystem type is supported by the
                                      host operating system. Examples: "ext4", "xfs",
                                      "ntfs". Implicitly inferred to be "ext4" if
                                      unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi'
                                    type: string
                                  initiatorName:
                                    description: initiatorName is the custom iSCSI
                                      Initiator Name. If initiatorName is specified
                                      with iscsiInterface simultaneously, new iSCSI
                                      interface <target portal>:<volume name> will
                                      be created for the connection.
                                    type: string
                                  iqn:
                                    description: iqn is the target iSCSI Qualified
                                      Name.
                                    type: string
                                  iscsiInterface:
                                    default: default
                                    description: iscsiInterface is the interface Name
                                      that uses an iSCSI transport. Defaults to 'default'
                                      (tcp).
                                    type: string
                                  lun:
                                    description: lun represents iSCSI Target Lun number.
                                    format: int32
                                    type: integer
                                  portals:
                                    description: portals is the iSCSI Target Portal
                                      List. The portal is either an IP or ip_addr:port
                                      if the port is other than default (typically
                                      TCP ports 860 and 3260).
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  readOnly:
                                    description: readOnly here will force the ReadOnly
                                      setting in VolumeMounts. Defaults to false.
                                    type: boolean
                                  secretRef:
                                    description: secretRef is the CHAP Secret for
                                      iSCSI target and initiator authentication
                                    properties:
                                      name:
                                        default: ''
                                        description: 'Name of the referent. This field
                                          is effectively required, but due to backwards
                                          compatibility is allowed to be empty. Instances
                                          of this type with an empty value here are
                                          almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                        type: string
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  targetPortal:
                                    description: targetPortal is iSCSI Target Portal.
                                      The Portal is either an IP or ip_addr:port if
                                      the port is other than default (typically TCP
                                      ports 860 and 3260).
                                    type: string
                                required:
                                - iqn
                                - lun
                                - targetPortal
                                type: object
                              name:
                                description: 'name of the volume. Must be a DNS_LABEL
                                  and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                type: string
                              nfs:
                                description: 'nfs represents an NFS mount on the host
                                  that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
                                properties:
                                  path:
                                    description: 'path that is exported by the NFS
                                      server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
                                    type: string
                                  readOnly:
                                    description: 'readOnly here will force the NFS
                                      export to be mounted with read-only permissions.
                                      Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
                                    type: boolean
                                  server:
                                    description: 'server is the hostname or IP address
                                      of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
                                    type: string
                                required:
                                - path
                                - server
                                type: object
                              persistentVolumeClaim:
                                description: 'persistentVolumeClaimVolumeSource represents
                                  a reference to a PersistentVolumeClaim in the same
                                  namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
                                properties:
                                  claimName:
                                    description: 'claimName is the name of a PersistentVolumeClaim
                                      in the same namespace as the pod using this
                                      volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
                                    type: string
                                  readOnly:
                                    description: readOnly Will force the ReadOnly
                                      setting in VolumeMounts. Default false.
                                    type: boolean
                                required:
                                - claimName
                                type: object
                              photonPersistentDisk:
                                description: 'photonPersistentDisk represents a PhotonController
                                  persistent disk attached and mounted on kubelets
                                  host machine. Deprecated: PhotonPersistentDisk is
                                  deprecated and the in-tree photonPersistentDisk
                                  type is no longer supported.'
                                properties:
                                  fsType:
                                    description: fsType is the filesystem type to
                                      mount. Must be a filesystem type supported by
                                      the host operating system. Ex. "ext4", "xfs",
                                      "ntfs". Implicitly inferred to be "ext4" if
                                      unspecified.
                                    type: string
                                  pdID:
                                    description: pdID is the ID that identifies Photon
                                      Controller persistent disk
                                    type: string
                                required:
                                - pdID
                                type: object
                              portworxVolume:
                                description: 'portworxVolume represents a portworx
                                  volume attached and mounted on kubelets host machine.
                                  Deprecated: PortworxVolume is deprecated. All operations
                                  for the in-tree portworxVolume type are redirected
                                  to the pxd.portworx.com CSI driver when the CSIMigrationPortworx
                                  feature-gate is on.'
                                properties:
                                  fsType:
                                    description: fSType represents the filesystem
                                      type to mount Must be a filesystem type supported
                                      by the host operating system. Ex. "ext4", "xfs".
                                      Implicitly inferred to be "ext4" if unspecified.
                                    type: string
                                  readOnly:
                                    description: readOnly defaults to false (read/write).
                                      ReadOnly here will force the ReadOnly setting
                                      in VolumeMounts.
                                    type: boolean
                                  volumeID:
                                    description: volumeID uniquely identifies a Portworx
                                      volume
                                    type: string
                                required:
                                - volumeID
                                type: object
                              projected:
                                description: projected items for all in one resources
                                  secrets, configmaps, and downward API
                                properties:
                                  defaultMode:
                                    description: defaultMode are the mode bits used
                                      to set permissions on created files by default.
                                      Must be an octal value between 0000 and 0777
                                      or a decimal value between 0 and 511. YAML accepts
                                      both octal and decimal values, JSON requires
                                      decimal values for mode bits. Directories within
                                      the path are not affected by this setting. This
                                      might be in conflict with other options that
                                      affect the file mode, like fsGroup, and the
                                      result can be other mode bits set.
                                    format: int32
                                    type: integer
                                  sources:
                                    description: sources is the list of volume projections.
                                      Each entry in this list handles one source.
                                    items:
                                      description: Projection that may be projected
                                        along with other supported volume types. Exactly
                                        one of these fields must be set.
                                      properties:
                                        clusterTrustBundle:
                                          description: ClusterTrustBundle allows a
                                            pod to access the `.spec.trustBundle`
                                            field of ClusterTrustBundle objects in
                                            an auto-updating file. Alpha, gated by
                                            the ClusterTrustBundleProjection feature
                                            gate. ClusterTrustBundle objects can either
                                            be selected by name, or by the combination
                                            of signer name and a label selector. Kubelet
                                            performs aggressive normalization of the
                                            PEM contents written into the pod filesystem.  Esoteric
                                            PEM features such as inter-block comments
                                            and block headers are stripped.  Certificates
                                            are deduplicated. The ordering of certificates
                                            within the file is arbitrary, and Kubelet
                                            may change the order over time.
                                          properties:
                                            labelSelector:
                                              description: Select all ClusterTrustBundles
                                                that match this label selector.  Only
                                                has effect if signerName is set.  Mutually-exclusive
                                                with name.  If unset, interpreted
                                                as "match nothing".  If set but empty,
                                                interpreted as "match everything".
                                              properties:
                                                matchExpressions:
                                                  description: matchExpressions is
                                                    a list of label selector requirements.
                                                    The requirements are ANDed.
                                                  items:
                                                    description: A label selector
                                                      requirement is a selector that
                                                      contains values, a key, and
                                                      an operator that relates the
                                                      key and values.
                                                    properties:
                                                      key:
                                                        description: key is the label
                                                          key that the selector applies
                                                          to.
                                                        type: string
                                                      operator:
                                                        description: operator represents
                                                          a key's relationship to
                                                          a set of values. Valid operators
                                                          are In, NotIn, Exists and
                                                          DoesNotExist.
                                                        type: string
                                                      values:
                                                        description: values is an
                                                          array of string values.
                                                          If the operator is In or
                                                          NotIn, the values array
                                                          must be non-empty. If the
                                                          operator is Exists or DoesNotExist,
                                                          the values array must be
                                                          empty. This array is replaced
                                                          during a strategic merge
                                                          patch.
                                                        items:
                                                          type: string
                                                        type: array
                                                        x-kubernetes-list-type: atomic
                                                    required:
                                                    - key
                                                    - operator
                                                    type: object
                                                  type: array
                                                  x-kubernetes-list-type: atomic
                                                matchLabels:
                                                  additionalProperties:
                                                    type: string
                                                  description: matchLabels is a map
                                                    of {key,value} pairs. A single
                                                    {key,value} in the matchLabels
                                                    map is equivalent to an element
                                                    of matchExpressions, whose key
                                                    field is "key", the operator is
                                                    "In", and the values array contains
                                                    only "value". The requirements
                                                    are ANDed.
                                                  type: object
                                              type: object
                                              x-kubernetes-map-type: atomic
                                            name:
                                              description: Select a single ClusterTrustBundle
                                                by object name.  Mutually-exclusive
                                                with signerName and labelSelector.
                                              type: string
                                            optional:
                                              description: If true, don't block pod
                                                startup if the referenced ClusterTrustBundle(s)
                                                aren't available.  If using name,
                                                then the named ClusterTrustBundle
                                                is allowed not to exist.  If using
                                                signerName, then the combination of
                                                signerName and labelSelector is allowed
                                                to match zero ClusterTrustBundles.
                                              type: boolean
                                            path:
                                              description: Relative path from the
                                                volume root to write the bundle.
                                              type: string
                                            signerName:
                                              description: Select all ClusterTrustBundles
                                                that match this signer name. Mutually-exclusive
                                                with name.  The contents of all selected
                                                ClusterTrustBundles will be unified
                                                and deduplicated.
                                              type: string
                                          required:
                                          - path
                                          type: object
                                        configMap:
                                          description: configMap information about
                                            the configMap data to project
                                          properties:
                                            items:
                                              description: items if unspecified, each
                                                key-value pair in the Data field of
                                                the referenced ConfigMap will be projected
                                                into the volume as a file whose name
                                                is the key and content is the value.
                                                If specified, the listed keys will
                                                be projected into the specified paths,
                                                and unlisted keys will not be present.
                                                If a key is specified which is not
                                                present in the ConfigMap, the volume
                                                setup will error unless it is marked
                                                optional. Paths must be relative and
                                                may not contain the '..' path or start
                                                with '..'.
                                              items:
                                                description: Maps a string key to
                                                  a path within a volume.
                                                properties:
                                                  key:
                                                    description: key is the key to
                                                      project.
                                                    type: string
                                                  mode:
                                                    description: 'mode is Optional:
                                                      mode bits used to set permissions
                                                      on this file. Must be an octal
                                                      value between 0000 and 0777
                                                      or a decimal value between 0
                                                      and 511. YAML accepts both octal
                                                      and decimal values, JSON requires
                                                      decimal values for mode bits.
                                                      If not specified, the volume
                                                      defaultMode will be used. This
                                                      might be in conflict with other
                                                      options that affect the file
                                                      mode, like fsGroup, and the
                                                      result can be other mode bits
                                                      set.'
                                                    format: int32
                                                    type: integer
                                                  path:
                                                    description: path is the relative
                                                      path of the file to map the
                                                      key to. May not be an absolute
                                                      path. May not contain the path
                                                      element '..'. May not start
                                                      with the string '..'.
                                                    type: string
                                                required:
                                                - key
                                                - path
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            name:
                                              default: ''
                                              description: 'Name of the referent.
                                                This field is effectively required,
                                                but due to backwards compatibility
                                                is allowed to be empty. Instances
                                                of this type with an empty value here
                                                are almost certainly wrong. More info:
                                                https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                              type: string
                                            optional:
                                              description: optional specify whether
                                                the ConfigMap or its keys must be
                                                defined
                                              type: boolean
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        downwardAPI:
                                          description: downwardAPI information about
                                            the downwardAPI data to project
                                          properties:
                                            items:
                                              description: Items is a list of DownwardAPIVolume
                                                file
                                              items:
                                                description: DownwardAPIVolumeFile
                                                  represents information to create
                                                  the file containing the pod field
                                                properties:
                                                  fieldRef:
                                                    description: 'Required: Selects
                                                      a field of the pod: only annotations,
                                                      labels, name, namespace and
                                                      uid are supported.'
                                                    properties:
                                                      apiVersion:
                                                        description: Version of the
                                                          schema the FieldPath is
                                                          written in terms of, defaults
                                                          to "v1".
                                                        type: string
                                                      fieldPath:
                                                        description: Path of the field
                                                          to select in the specified
                                                          API version.
                                                        type: string
                                                    required:
                                                    - fieldPath
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                  mode:
                                                    description: 'Optional: mode bits
                                                      used to set permissions on this
                                                      file, must be an octal value
                                                      between 0000 and 0777 or a decimal
                                                      value between 0 and 511. YAML
                                                      accepts both octal and decimal
                                                      values, JSON requires decimal
                                                      values for mode bits. If not
                                                      specified, the volume defaultMode
                                                      will be used. This might be
                                                      in conflict with other options
                                                      that affect the file mode, like
                                                      fsGroup, and the result can
                                                      be other mode bits set.'
                                                    format: int32
                                                    type: integer
                                                  path:
                                                    description: 'Required: Path is  the
                                                      relative path name of the file
                                                      to be created. Must not be absolute
                                                      or contain the ''..'' path.
                                                      Must be utf-8 encoded. The first
                                                      item of the relative path must
                                                      not start with ''..'''
                                                    type: string
                                                  resourceFieldRef:
                                                    description: 'Selects a resource
                                                      of the container: only resources
                                                      limits and requests (limits.cpu,
                                                      limits.memory, requests.cpu
                                                      and requests.memory) are currently
                                                      supported.'
                                                    properties:
                                                      containerName:
                                                        description: 'Container name:
                                                          required for volumes, optional
                                                          for env vars'
                                                        type: string
                                                      divisor:
                                                        anyOf:
                                                        - type: integer
                                                        - type: string
                                                        description: Specifies the
                                                          output format of the exposed
                                                          resources, defaults to "1"
                                                        pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
                                                        x-kubernetes-int-or-string: true
                                                      resource:
                                                        description: 'Required: resource
                                                          to select'
                                                        type: string
                                                    required:
                                                    - resource
                                                    type: object
                                                    x-kubernetes-map-type: atomic
                                                required:
                                                - path
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          type: object
                                        podCertificate:
                                          description: Projects an auto-rotating credential
                                            bundle (private key and certificate chain)
                                            that the pod can use either as a TLS client
                                            or server. Kubelet generates a private
                                            key and uses it to send a PodCertificateRequest
                                            to the named signer.  Once the signer
                                            approves the request and issues a certificate
                                            chain, Kubelet writes the key and certificate
                                            chain to the pod filesystem.  The pod
                                            does not start until certificates have
                                            been issued for each podCertificate projected
                                            volume source in its spec. Kubelet will
                                            begin trying to rotate the certificate
                                            at the time indicated by the signer using
                                            the PodCertificateRequest.Status.BeginRefreshAt
                                            timestamp. Kubelet can write a single
                                            file, indicated by the credentialBundlePath
                                            field, or separate files, indicated by
                                            the keyPath and certificateChainPath fields.
                                            The credential bundle is a single file
                                            in PEM format.  The first PEM entry is
                                            the private key (in PKCS#8 format), and
                                            the remaining PEM entries are the certificate
                                            chain issued by the signer (typically,
                                            signers will return their certificate
                                            chain in leaf-to-root order). Prefer using
                                            the credential bundle format, since your
                                            application code can read it atomically.  If
                                            you use keyPath and certificateChainPath,
                                            your application must make two separate
                                            file reads. If these coincide with a certificate
                                            rotation, it is possible that the private
                                            key and leaf certificate you read may
                                            not correspond to each other.  Your application
                                            will need to check for this condition,
                                            and re-read until they are consistent.
                                            The named signer controls chooses the
                                            format of the certificate it issues; consult
                                            the signer implementation's documentation
                                            to learn how to use the certificates it
                                            issues.
                                          properties:
                                            certificateChainPath:
                                              description: Write the certificate chain
                                                at this path in the projected volume.
                                                Most applications should use credentialBundlePath.  When
                                                using keyPath and certificateChainPath,
                                                your application needs to check that
                                                the key and leaf certificate are consistent,
                                                because it is possible to read the
                                                files mid-rotation.
                                              type: string
                                            credentialBundlePath:
                                              description: Write the credential bundle
                                                at this path in the projected volume.
                                                The credential bundle is a single
                                                file that contains multiple PEM blocks.
                                                The first PEM block is a PRIVATE KEY
                                                block, containing a PKCS#8 private
                                                key. The remaining blocks are CERTIFICATE
                                                blocks, containing the issued certificate
                                                chain from the signer (leaf and any
                                                intermediates). Using credentialBundlePath
                                                lets your Pod's application code make
                                                a single atomic read that retrieves
                                                a consistent key and certificate chain.  If
                                                you project them to separate files,
                                                your application code will need to
                                                additionally check that the leaf certificate
                                                was issued to the key.
                                              type: string
                                            keyPath:
                                              description: Write the key at this path
                                                in the projected volume. Most applications
                                                should use credentialBundlePath.  When
                                                using keyPath and certificateChainPath,
                                                your application needs to check that
                                                the key and leaf certificate are consistent,
                                                because it is possible to read the
                                                files mid-rotation.
                                              type: string
                                            keyType:
                                              description: The type of keypair Kubelet
                                                will generate for the pod. Valid values
                                                are "RSA3072", "RSA4096", "ECDSAP256",
                                                "ECDSAP384", "ECDSAP521", and "ED25519".
                                              type: string
                                            maxExpirationSeconds:
                                              description: maxExpirationSeconds is
                                                the maximum lifetime permitted for
                                                the certificate. Kubelet copies this
                                                value verbatim into the PodCertificateRequests
                                                it generates for this projection.
                                                If omitted, kube-apiserver will set
                                                it to 86400(24 hours). kube-apiserver
                                                will reject values shorter than 3600
                                                (1 hour).  The maximum allowable value
                                                is 7862400 (91 days). The signer implementation
                                                is then free to issue a certificate
                                                with any lifetime *shorter* than MaxExpirationSeconds,
                                                but no shorter than 3600 seconds (1
                                                hour).  This constraint is enforced
                                                by kube-apiserver. `kubernetes.io`
                                                signers will never issue certificates
                                                with a lifetime longer than 24 hours.
                                              format: int32
                                              type: integer
                                            signerName:
                                              description: Kubelet's generated CSRs
                                                will be addressed to this signer.
                                              type: string
                                            userAnnotations:
                                              additionalProperties:
                                                type: string
                                              description: |-
                                                userAnnotations allow pod authors to pass additional information to
                                                the signer implementation.  Kubernetes does not restrict or validate this
                                                metadata in any way.
                                                These values are copied verbatim into the `spec.unverifiedUserAnnotations` field of
                                                the PodCertificateRequest objects that Kubelet creates.
                                                Entries are subject to the same validation as object metadata annotations,
                                                with the addition that all keys must be domain-prefixed. No restrictions
                                                are placed on values, except an overall size limitation on the entire field.
                                                Signers should document the keys and values they support. Signers should
                                                deny requests that contain keys they do not recognize.
                                              type: object
                                          required:
                                          - keyType
                                          - signerName
                                          type: object
                                        secret:
                                          description: secret information about the
                                            secret data to project
                                          properties:
                                            items:
                                              description: items if unspecified, each
                                                key-value pair in the Data field of
                                                the referenced Secret will be projected
                                                into the volume as a file whose name
                                                is the key and content is the value.
                                                If specified, the listed keys will
                                                be projected into the specified paths,
                                                and unlisted keys will not be present.
                                                If a key is specified which is not
                                                present in the Secret, the volume
                                                setup will error unless it is marked
                                                optional. Paths must be relative and
                                                may not contain the '..' path or start
                                                with '..'.
                                              items:
                                                description: Maps a string key to
                                                  a path within a volume.
                                                properties:
                                                  key:
                                                    description: key is the key to
                                                      project.
                                                    type: string
                                                  mode:
                                                    description: 'mode is Optional:
                                                      mode bits used to set permissions
                                                      on this file. Must be an octal
                                                      value between 0000 and 0777
                                                      or a decimal value between 0
                                                      and 511. YAML accepts both octal
                                                      and decimal values, JSON requires
                                                      decimal values for mode bits.
                                                      If not specified, the volume
                                                      defaultMode will be used. This
                                                      might be in conflict with other
                                                      options that affect the file
                                                      mode, like fsGroup, and the
                                                      result can be other mode bits
                                                      set.'
                                                    format: int32
                                                    type: integer
                                                  path:
                                                    description: path is the relative
                                                      path of the file to map the
                                                      key to. May not be an absolute
                                                      path. May not contain the path
                                                      element '..'. May not start
                                                      with the string '..'.
                                                    type: string
                                                required:
                                                - key
                                                - path
                                                type: object
                                              type: array
                                              x-kubernetes-list-type: atomic
                                            name:
                                              default: ''
                                              description: 'Name of the referent.
                                                This field is effectively required,
                                                but due to backwards compatibility
                                                is allowed to be empty. Instances
                                                of this type with an empty value here
                                                are almost certainly wrong. More info:
                                                https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                              type: string
                                            optional:
                                              description: optional field specify
                                                whether the Secret or its key must
                                                be defined
                                              type: boolean
                                          type: object
                                          x-kubernetes-map-type: atomic
                                        serviceAccountToken:
                                          description: serviceAccountToken is information
                                            about the serviceAccountToken data to
                                            project
                                          properties:
                                            audience:
                                              description: audience is the intended
                                                audience of the token. A recipient
                                                of a token must identify itself with
                                                an identifier specified in the audience
                                                of the token, and otherwise should
                                                reject the token. The audience defaults
                                                to the identifier of the apiserver.
                                              type: string
                                            expirationSeconds:
                                              description: expirationSeconds is the
                                                requested duration of validity of
                                                the service account token. As the
                                                token approaches expiration, the kubelet
                                                volume plugin will proactively rotate
                                                the service account token. The kubelet
                                                will start trying to rotate the token
                                                if the token is older than 80 percent
                                                of its time to live or if the token
                                                is older than 24 hours.Defaults to
                                                1 hour and must be at least 10 minutes.
                                              format: int64
                                              type: integer
                                            path:
                                              description: path is the path relative
                                                to the mount point of the file to
                                                project the token into.
                                              type: string
                                          required:
                                          - path
                                          type: object
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                              quobyte:
                                description: 'quobyte represents a Quobyte mount on
                                  the host that shares a pod''s lifetime. Deprecated:
                                  Quobyte is deprecated and the in-tree quobyte type
                                  is no longer supported.'
                                properties:
                                  group:
                                    description: |-
                                      group to map volume access to
                                      Default is no group
                                    type: string
                                  readOnly:
                                    description: readOnly here will force the Quobyte
                                      volume to be mounted with read-only permissions.
                                      Defaults to false.
                                    type: boolean
                                  registry:
                                    description: registry represents a single or multiple
                                      Quobyte Registry services specified as a string
                                      as host:port pair (multiple entries are separated
                                      with commas) which acts as the central registry
                                      for volumes
                                    type: string
                                  tenant:
                                    description: tenant owning the given Quobyte volume
                                      in the Backend Used with dynamically provisioned
                                      Quobyte volumes, value is set by the plugin
                                    type: string
                                  user:
                                    description: |-
                                      user to map volume access to
                                      Defaults to serivceaccount user
                                    type: string
                                  volume:
                                    description: volume is a string that references
                                      an already created Quobyte volume by name.
                                    type: string
                                required:
                                - registry
                                - volume
                                type: object
                              rbd:
                                description: 'rbd represents a Rados Block Device
                                  mount on the host that shares a pod''s lifetime.
                                  Deprecated: RBD is deprecated and the in-tree rbd
                                  type is no longer supported.'
                                properties:
                                  fsType:
                                    description: 'fsType is the filesystem type of
                                      the volume that you want to mount. Tip: Ensure
                                      that the filesystem type is supported by the
                                      host operating system. Examples: "ext4", "xfs",
                                      "ntfs". Implicitly inferred to be "ext4" if
                                      unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd'
                                    type: string
                                  image:
                                    description: 'image is the rados image name. More
                                      info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                                    type: string
                                  keyring:
                                    default: "/etc/ceph/keyring"
                                    description: 'keyring is the path to key ring
                                      for RBDUser. Default is /etc/ceph/keyring. More
                                      info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                                    type: string
                                  monitors:
                                    description: 'monitors is a collection of Ceph
                                      monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  pool:
                                    default: rbd
                                    description: 'pool is the rados pool name. Default
                                      is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                                    type: string
                                  readOnly:
                                    description: 'readOnly here will force the ReadOnly
                                      setting in VolumeMounts. Defaults to false.
                                      More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                                    type: boolean
                                  secretRef:
                                    description: 'secretRef is name of the authentication
                                      secret for RBDUser. If provided overrides keyring.
                                      Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                                    properties:
                                      name:
                                        default: ''
                                        description: 'Name of the referent. This field
                                          is effectively required, but due to backwards
                                          compatibility is allowed to be empty. Instances
                                          of this type with an empty value here are
                                          almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                        type: string
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  user:
                                    default: admin
                                    description: 'user is the rados user name. Default
                                      is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                                    type: string
                                required:
                                - image
                                - monitors
                                type: object
                              scaleIO:
                                description: 'scaleIO represents a ScaleIO persistent
                                  volume attached and mounted on Kubernetes nodes.
                                  Deprecated: ScaleIO is deprecated and the in-tree
                                  scaleIO type is no longer supported.'
                                properties:
                                  fsType:
                                    default: xfs
                                    description: fsType is the filesystem type to
                                      mount. Must be a filesystem type supported by
                                      the host operating system. Ex. "ext4", "xfs",
                                      "ntfs". Default is "xfs".
                                    type: string
                                  gateway:
                                    description: gateway is the host address of the
                                      ScaleIO API Gateway.
                                    type: string
                                  protectionDomain:
                                    description: protectionDomain is the name of the
                                      ScaleIO Protection Domain for the configured
                                      storage.
                                    type: string
                                  readOnly:
                                    description: readOnly Defaults to false (read/write).
                                      ReadOnly here will force the ReadOnly setting
                                      in VolumeMounts.
                                    type: boolean
                                  secretRef:
                                    description: secretRef references to the secret
                                      for ScaleIO user and other sensitive information.
                                      If this is not provided, Login operation will
                                      fail.
                                    properties:
                                      name:
                                        default: ''
                                        description: 'Name of the referent. This field
                                          is effectively required, but due to backwards
                                          compatibility is allowed to be empty. Instances
                                          of this type with an empty value here are
                                          almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                        type: string
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  sslEnabled:
                                    description: sslEnabled Flag enable/disable SSL
                                      communication with Gateway, default false
                                    type: boolean
                                  storageMode:
                                    default: ThinProvisioned
                                    description: storageMode indicates whether the
                                      storage for a volume should be ThickProvisioned
                                      or ThinProvisioned. Default is ThinProvisioned.
                                    type: string
                                  storagePool:
                                    description: storagePool is the ScaleIO Storage
                                      Pool associated with the protection domain.
                                    type: string
                                  system:
                                    description: system is the name of the storage
                                      system as configured in ScaleIO.
                                    type: string
                                  volumeName:
                                    description: volumeName is the name of a volume
                                      already created in the ScaleIO system that is
                                      associated with this volume source.
                                    type: string
                                required:
                                - gateway
                                - secretRef
                                - system
                                type: object
                              secret:
                                description: 'secret represents a secret that should
                                  populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
                                properties:
                                  defaultMode:
                                    description: 'defaultMode is Optional: mode bits
                                      used to set permissions on created files by
                                      default. Must be an octal value between 0000
                                      and 0777 or a decimal value between 0 and 511.
                                      YAML accepts both octal and decimal values,
                                      JSON requires decimal values for mode bits.
                                      Defaults to 0644. Directories within the path
                                      are not affected by this setting. This might
                                      be in conflict with other options that affect
                                      the file mode, like fsGroup, and the result
                                      can be other mode bits set.'
                                    format: int32
                                    type: integer
                                  items:
                                    description: items If unspecified, each key-value
                                      pair in the Data field of the referenced Secret
                                      will be projected into the volume as a file
                                      whose name is the key and content is the value.
                                      If specified, the listed keys will be projected
                                      into the specified paths, and unlisted keys
                                      will not be present. If a key is specified which
                                      is not present in the Secret, the volume setup
                                      will error unless it is marked optional. Paths
                                      must be relative and may not contain the '..'
                                      path or start with '..'.
                                    items:
                                      description: Maps a string key to a path within
                                        a volume.
                                      properties:
                                        key:
                                          description: key is the key to project.
                                          type: string
                                        mode:
                                          description: 'mode is Optional: mode bits
                                            used to set permissions on this file.
                                            Must be an octal value between 0000 and
                                            0777 or a decimal value between 0 and
                                            511. YAML accepts both octal and decimal
                                            values, JSON requires decimal values for
                                            mode bits. If not specified, the volume
                                            defaultMode will be used. This might be
                                            in conflict with other options that affect
                                            the file mode, like fsGroup, and the result
                                            can be other mode bits set.'
                                          format: int32
                                          type: integer
                                        path:
                                          description: path is the relative path of
                                            the file to map the key to. May not be
                                            an absolute path. May not contain the
                                            path element '..'. May not start with
                                            the string '..'.
                                          type: string
                                      required:
                                      - key
                                      - path
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  optional:
                                    description: optional field specify whether the
                                      Secret or its keys must be defined
                                    type: boolean
                                  secretName:
                                    description: 'secretName is the name of the secret
                                      in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
                                    type: string
                                type: object
                              storageos:
                                description: 'storageOS represents a StorageOS volume
                                  attached and mounted on Kubernetes nodes. Deprecated:
                                  StorageOS is deprecated and the in-tree storageos
                                  type is no longer supported.'
                                properties:
                                  fsType:
                                    description: fsType is the filesystem type to
                                      mount. Must be a filesystem type supported by
                                      the host operating system. Ex. "ext4", "xfs",
                                      "ntfs". Implicitly inferred to be "ext4" if
                                      unspecified.
                                    type: string
                                  readOnly:
                                    description: readOnly defaults to false (read/write).
                                      ReadOnly here will force the ReadOnly setting
                                      in VolumeMounts.
                                    type: boolean
                                  secretRef:
                                    description: secretRef specifies the secret to
                                      use for obtaining the StorageOS API credentials.  If
                                      not specified, default values will be attempted.
                                    properties:
                                      name:
                                        default: ''
                                        description: 'Name of the referent. This field
                                          is effectively required, but due to backwards
                                          compatibility is allowed to be empty. Instances
                                          of this type with an empty value here are
                                          almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                                        type: string
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  volumeName:
                                    description: volumeName is the human-readable
                                      name of the StorageOS volume.  Volume names
                                      are only unique within a namespace.
                                    type: string
                                  volumeNamespace:
                                    description: volumeNamespace specifies the scope
                                      of the volume within StorageOS.  If no namespace
                                      is specified then the Pod's namespace will be
                                      used.  This allows the Kubernetes name scoping
                                      to be mirrored within StorageOS for tighter
                                      integration. Set VolumeName to any name to override
                                      the default behaviour. Set to "default" if you
                                      are not using namespaces within StorageOS. Namespaces
                                      that do not pre-exist within StorageOS will
                                      be created.
                                    type: string
                                type: object
                              vsphereVolume:
                                description: 'vsphereVolume represents a vSphere volume
                                  attached and mounted on kubelets host machine. Deprecated:
                                  VsphereVolume is deprecated. All operations for
                                  the in-tree vsphereVolume type are redirected to
                                  the csi.vsphere.vmware.com CSI driver.'
                                properties:
                                  fsType:
                                    description: fsType is filesystem type to mount.
                                      Must be a filesystem type supported by the host
                                      operating system. Ex. "ext4", "xfs", "ntfs".
                                      Implicitly inferred to be "ext4" if unspecified.
                                    type: string
                                  storagePolicyID:
                                    description: storagePolicyID is the storage Policy
                                      Based Management (SPBM) profile ID associated
                                      with the StoragePolicyName.
                                    type: string
                                  storagePolicyName:
                                    description: storagePolicyName is the storage
                                      Policy Based Management (SPBM) profile name.
                                    type: string
                                  volumePath:
                                    description: volumePath is the path that identifies
                                      vSphere volume vmdk
                                    type: string
                                required:
                                - volumePath
                                type: object
                            required:
                            - name
                            type: object
                          type: array
                      type: object
                  type: object
              type: object
          type: object
        service:
          properties:
            ports:
              items:
                properties:
                  name:
                    pattern: "^(([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])\\.)*([a-z0-9]|[a-z0-9][a-z0-9\\-]*[a-z0-9])$"
                    type: string
                  nodePort:
                    format: int32
                    maximum: 32767
                    minimum: 30000
                    type: integer
                  port:
                    format: int32
                    maximum: 65535
                    minimum: 1
                    type: integer
                  protocol:
                    default: TCP
                    type: string
                  targetPort:
                    format: int32
                    maximum: 65535
                    minimum: 1
                    type: integer
                type: object
              type: array
            type:
              description: Service Type string describes ingress methods for a service
              type: string
          type: object
        startupResources:
          properties:
            limits:
              description: Limit values for the duration of the runtime container
                startup
              properties:
                cpu:
                  anyOf:
                  - type: integer
                  - type: string
                  description: The minimum required CPU core. Specify integers, fractions
                    (e.g. 0.5), or millicore values (e.g. 100m, where 100m is equivalent
                    to .1 core)
                  pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
                  x-kubernetes-int-or-string: true
              type: object
            requests:
              description: Requests values for the duration of the runtime container
                startup
              properties:
                cpu:
                  anyOf:
                  - type: integer
                  - type: string
                  description: The minimum required CPU core. Specify integers, fractions
                    (e.g. 0.5), or millicore values (e.g. 100m, where 100m is equivalent
                    to .1 core)
                  pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
                  x-kubernetes-int-or-string: true
              type: object
          type: object
        strategy:
          description: Update strategy for Always-On deployments
          properties:
            rollingUpdate:
              description: This field specifies rolling update configuration parameters.
                This field is present only if DeploymentStrategyType = RollingUpdate.
              properties:
                maxSurge:
                  anyOf:
                  - type: integer
                  - type: string
                  description: The maximum number of pods that can be scheduled above
                    the desired number of pods. This value can be an absolute number
                    (such as  5) or a percentage of desired pods (such as 10%). This
                    value can't  be 0 if MaxUnavailable is 0. The absolute number
                    is calculated from the percentage by rounding up and defaults
                    to 25%. For example,  when this value is set to 30%, the new ReplicaSet
                    can be scaled up immediately when the rolling update starts, so
                    that the total number of old and new pods don't exceed 130% of
                    desired pods. When old pods have been stopped, a new ReplicaSet
                    can be scaled up further, ensuring that the total number of pods
                    that are running at any time during the update is at most 130%
                    of desired pods.
                  x-kubernetes-int-or-string: true
                maxUnavailable:
                  anyOf:
                  - type: integer
                  - type: string
                  description: The maximum number of pods that can be unavailable
                    during the update. This value can be an absolute number (such
                    as 5) or a percentage of desired pods (such as 10%). The absolute
                    number is calculated from the percentage by rounding down. This
                    value can't be 0 if MaxSurge is 0 and it defaults to 25%. For
                    example, when this value is set to 30%, the old ReplicaSet can
                    be scaled down to 70% of desired pods immediately when the rolling
                    update starts. When new pods are ready, the old ReplicaSet can
                    be scaled down further, followed by scaling up the new ReplicaSet,
                    ensuring that the total number of pods that are available at all
                    times during the update is at least 70% of desired pods.
                  x-kubernetes-int-or-string: true
              type: object
            type:
              description: The type of deployment, which can be "Recreate" or "RollingUpdate"
                (the default).
              type: string
          type: object
        telemetry:
          properties:
            tracing:
              properties:
                openTelemetry:
                  properties:
                    enabled:
                      description: Enable openTelemtry on the ACE runtime flows.
                      type: boolean
                    endpoint:
                      description: 'Endpoint of the openTelemetry agent (default:
                        <status.hostIP>:4317)'
                      type: string
                    protocol:
                      description: 'Protocol to send data using (default: grpc)'
                      type: string
                    timeout:
                      description: 'Connection timeout (default: 10s)'
                      type: string
                    tls:
                      properties:
                        caCertificate:
                          description: 'Name of the secret key which contains the
                            certificate authority public certificate (default: ca.crt)'
                          type: string
                        secretName:
                          description: Name of the secret which contains the certificate
                            authority public certificate
                          type: string
                      type: object
                  type: object
              type: object
          type: object
        template:
          description: Template
          properties:
            spec:
              additionalProperties: false
              properties:
                affinity:
                  description: If specified, the pod's scheduling constraints
                  properties:
                    nodeAffinity:
                      description: Describes node affinity scheduling rules for the
                        pod.
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          description: The scheduler will prefer to schedule pods
                            to nodes that satisfy the affinity expressions specified
                            by this field, but it may choose a node that violates
                            one or more of the expressions. The node that is most
                            preferred is the one with the greatest sum of weights,
                            i.e. for each node that meets all of the scheduling requirements
                            (resource request, requiredDuringScheduling affinity expressions,
                            etc.), compute a sum by iterating through the elements
                            of this field and adding "weight" to the sum if the node
                            matches the corresponding matchExpressions; the node(s)
                            with the highest sum are the most preferred.
                          items:
                            description: An empty preferred scheduling term matches
                              all objects with implicit weight 0 (i.e. it's a no-op).
                              A null preferred scheduling term matches no objects
                              (i.e. is also a no-op).
                            properties:
                              preference:
                                description: A node selector term, associated with
                                  the corresponding weight.
                                properties:
                                  matchExpressions:
                                    description: A list of node selector requirements
                                      by node's labels.
                                    items:
                                      description: A node selector requirement is
                                        a selector that contains values, a key, and
                                        an operator that relates the key and values.
                                      properties:
                                        key:
                                          description: The label key that the selector
                                            applies to.
                                          type: string
                                        operator:
                                          description: Represents a key's relationship
                                            to a set of values. Valid operators are
                                            In, NotIn, Exists, DoesNotExist. Gt, and
                                            Lt.
                                          type: string
                                        values:
                                          description: An array of string values.
                                            If the operator is In or NotIn, the values
                                            array must be non-empty. If the operator
                                            is Exists or DoesNotExist, the values
                                            array must be empty. If the operator is
                                            Gt or Lt, the values array must have a
                                            single element, which will be interpreted
                                            as an integer. This array is replaced
                                            during a strategic merge patch.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchFields:
                                    description: A list of node selector requirements
                                      by node's fields.
                                    items:
                                      description: A node selector requirement is
                                        a selector that contains values, a key, and
                                        an operator that relates the key and values.
                                      properties:
                                        key:
                                          description: The label key that the selector
                                            applies to.
                                          type: string
                                        operator:
                                          description: Represents a key's relationship
                                            to a set of values. Valid operators are
                                            In, NotIn, Exists, DoesNotExist. Gt, and
                                            Lt.
                                          type: string
                                        values:
                                          description: An array of string values.
                                            If the operator is In or NotIn, the values
                                            array must be non-empty. If the operator
                                            is Exists or DoesNotExist, the values
                                            array must be empty. If the operator is
                                            Gt or Lt, the values array must have a
                                            single element, which will be interpreted
                                            as an integer. This array is replaced
                                            during a strategic merge patch.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                                x-kubernetes-map-type: atomic
                              weight:
                                description: Weight associated with matching the corresponding
                                  nodeSelectorTerm, in the range 1-100.
                                format: int32
                                type: integer
                            required:
                            - preference
                            - weight
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        requiredDuringSchedulingIgnoredDuringExecution:
                          description: If the affinity requirements specified by this
                            field are not met at scheduling time, the pod will not
                            be scheduled onto the node. If the affinity requirements
                            specified by this field cease to be met at some point
                            during pod execution (e.g. due to an update), the system
                            may or may not try to eventually evict the pod from its
                            node.
                          properties:
                            nodeSelectorTerms:
                              description: Required. A list of node selector terms.
                                The terms are ORed.
                              items:
                                description: A null or empty node selector term matches
                                  no objects. The requirements of them are ANDed.
                                  The TopologySelectorTerm type implements a subset
                                  of the NodeSelectorTerm.
                                properties:
                                  matchExpressions:
                                    description: A list of node selector requirements
                                      by node's labels.
                                    items:
                                      description: A node selector requirement is
                                        a selector that contains values, a key, and
                                        an operator that relates the key and values.
                                      properties:
                                        key:
                                          description: The label key that the selector
                                            applies to.
                                          type: string
                                        operator:
                                          description: Represents a key's relationship
                                            to a set of values. Valid operators are
                                            In, NotIn, Exists, DoesNotExist. Gt, and
                                            Lt.
                                          type: string
                                        values:
                                          description: An array of string values.
                                            If the operator is In or NotIn, the values
                                            array must be non-empty. If the operator
                                            is Exists or DoesNotExist, the values
                                            array must be empty. If the operator is
                                            Gt or Lt, the values array must have a
                                            single element, which will be interpreted
                                            as an integer. This array is replaced
                                            during a strategic merge patch.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchFields:
                                    description: A list of node selector requirements
                                      by node's fields.
                                    items:
                                      description: A node selector requirement is
                                        a selector that contains values, a key, and
                                        an operator that relates the key and values.
                                      properties:
                                        key:
                                          description: The label key that the selector
                                            applies to.
                                          type: string
                                        operator:
                                          description: Represents a key's relationship
                                            to a set of values. Valid operators are
                                            In, NotIn, Exists, DoesNotExist. Gt, and
                                            Lt.
                                          type: string
                                        values:
                                          description: An array of string values.
                                            If the operator is In or NotIn, the values
                                            array must be non-empty. If the operator
                                            is Exists or DoesNotExist, the values
                                            array must be empty. If the operator is
                                            Gt or Lt, the values array must have a
                                            single element, which will be interpreted
                                            as an integer. This array is replaced
                                            during a strategic merge patch.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                type: object
                                x-kubernetes-map-type: atomic
                              type: array
                              x-kubernetes-list-type: atomic
                          required:
                          - nodeSelectorTerms
                          type: object
                          x-kubernetes-map-type: atomic
                      type: object
                    podAffinity:
                      description: Describes pod affinity scheduling rules (e.g. co-locate
                        this pod in the same node, zone, etc. as some other pod(s)).
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          description: The scheduler will prefer to schedule pods
                            to nodes that satisfy the affinity expressions specified
                            by this field, but it may choose a node that violates
                            one or more of the expressions. The node that is most
                            preferred is the one with the greatest sum of weights,
                            i.e. for each node that meets all of the scheduling requirements
                            (resource request, requiredDuringScheduling affinity expressions,
                            etc.), compute a sum by iterating through the elements
                            of this field and adding "weight" to the sum if the node
                            has pods which matches the corresponding podAffinityTerm;
                            the node(s) with the highest sum are the most preferred.
                          items:
                            description: The weights of all of the matched WeightedPodAffinityTerm
                              fields are added per-node to find the most preferred
                              node(s)
                            properties:
                              podAffinityTerm:
                                description: Required. A pod affinity term, associated
                                  with the corresponding weight.
                                properties:
                                  labelSelector:
                                    description: A label query over a set of resources,
                                      in this case pods. If it's null, this PodAffinityTerm
                                      matches with no Pods.
                                    properties:
                                      matchExpressions:
                                        description: matchExpressions is a list of
                                          label selector requirements. The requirements
                                          are ANDed.
                                        items:
                                          description: A label selector requirement
                                            is a selector that contains values, a
                                            key, and an operator that relates the
                                            key and values.
                                          properties:
                                            key:
                                              description: key is the label key that
                                                the selector applies to.
                                              type: string
                                            operator:
                                              description: operator represents a key's
                                                relationship to a set of values. Valid
                                                operators are In, NotIn, Exists and
                                                DoesNotExist.
                                              type: string
                                            values:
                                              description: values is an array of string
                                                values. If the operator is In or NotIn,
                                                the values array must be non-empty.
                                                If the operator is Exists or DoesNotExist,
                                                the values array must be empty. This
                                                array is replaced during a strategic
                                                merge patch.
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        description: matchLabels is a map of {key,value}
                                          pairs. A single {key,value} in the matchLabels
                                          map is equivalent to an element of matchExpressions,
                                          whose key field is "key", the operator is
                                          "In", and the values array contains only
                                          "value". The requirements are ANDed.
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    description: MatchLabelKeys is a set of pod label
                                      keys to select which pods will be taken into
                                      consideration. The keys are used to lookup values
                                      from the incoming pod labels, those key-value
                                      labels are merged with `labelSelector` as `key
                                      in (value)` to select the group of existing
                                      pods which pods will be taken into consideration
                                      for the incoming pod's pod (anti) affinity.
                                      Keys that don't exist in the incoming pod labels
                                      will be ignored. The default value is empty.
                                      The same key is forbidden to exist in both matchLabelKeys
                                      and labelSelector. Also, matchLabelKeys cannot
                                      be set when labelSelector isn't set. This is
                                      a beta field and requires enabling MatchLabelKeysInPodAffinity
                                      feature gate (enabled by default).
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    description: MismatchLabelKeys is a set of pod
                                      label keys to select which pods will be taken
                                      into consideration. The keys are used to lookup
                                      values from the incoming pod labels, those key-value
                                      labels are merged with `labelSelector` as `key
                                      notin (value)` to select the group of existing
                                      pods which pods will be taken into consideration
                                      for the incoming pod's pod (anti) affinity.
                                      Keys that don't exist in the incoming pod labels
                                      will be ignored. The default value is empty.
                                      The same key is forbidden to exist in both mismatchLabelKeys
                                      and labelSelector. Also, mismatchLabelKeys cannot
                                      be set when labelSelector isn't set. This is
                                      a beta field and requires enabling MatchLabelKeysInPodAffinity
                                      feature gate (enabled by default).
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    description: A label query over the set of namespaces
                                      that the term applies to. The term is applied
                                      to the union of the namespaces selected by this
                                      field and the ones listed in the namespaces
                                      field. null selector and null or empty namespaces
                                      list means "this pod's namespace". An empty
                                      selector ({}) matches all namespaces.
                                    properties:
                                      matchExpressions:
                                        description: matchExpressions is a list of
                                          label selector requirements. The requirements
                                          are ANDed.
                                        items:
                                          description: A label selector requirement
                                            is a selector that contains values, a
                                            key, and an operator that relates the
                                            key and values.
                                          properties:
                                            key:
                                              description: key is the label key that
                                                the selector applies to.
                                              type: string
                                            operator:
                                              description: operator represents a key's
                                                relationship to a set of values. Valid
                                                operators are In, NotIn, Exists and
                                                DoesNotExist.
                                              type: string
                                            values:
                                              description: values is an array of string
                                                values. If the operator is In or NotIn,
                                                the values array must be non-empty.
                                                If the operator is Exists or DoesNotExist,
                                                the values array must be empty. This
                                                array is replaced during a strategic
                                                merge patch.
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        description: matchLabels is a map of {key,value}
                                          pairs. A single {key,value} in the matchLabels
                                          map is equivalent to an element of matchExpressions,
                                          whose key field is "key", the operator is
                                          "In", and the values array contains only
                                          "value". The requirements are ANDed.
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    description: namespaces specifies a static list
                                      of namespace names that the term applies to.
                                      The term is applied to the union of the namespaces
                                      listed in this field and the ones selected by
                                      namespaceSelector. null or empty namespaces
                                      list and null namespaceSelector means "this
                                      pod's namespace".
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    description: This pod should be co-located (affinity)
                                      or not co-located (anti-affinity) with the pods
                                      matching the labelSelector in the specified
                                      namespaces, where co-located is defined as running
                                      on a node whose value of the label with key
                                      topologyKey matches that of any node on which
                                      any of the selected pods is running. Empty topologyKey
                                      is not allowed.
                                    type: string
                                required:
                                - topologyKey
                                type: object
                              weight:
                                description: weight associated with matching the corresponding
                                  podAffinityTerm, in the range 1-100.
                                format: int32
                                type: integer
                            required:
                            - podAffinityTerm
                            - weight
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        requiredDuringSchedulingIgnoredDuringExecution:
                          description: If the affinity requirements specified by this
                            field are not met at scheduling time, the pod will not
                            be scheduled onto the node. If the affinity requirements
                            specified by this field cease to be met at some point
                            during pod execution (e.g. due to a pod label update),
                            the system may or may not try to eventually evict the
                            pod from its node. When there are multiple elements, the
                            lists of nodes corresponding to each podAffinityTerm are
                            intersected, i.e. all terms must be satisfied.
                          items:
                            description: Defines a set of pods (namely those matching
                              the labelSelector relative to the given namespace(s))
                              that this pod should be co-located (affinity) or not
                              co-located (anti-affinity) with, where co-located is
                              defined as running on a node whose value of the label
                              with key <topologyKey> matches that of any node on which
                              a pod of the set of pods is running
                            properties:
                              labelSelector:
                                description: A label query over a set of resources,
                                  in this case pods. If it's null, this PodAffinityTerm
                                  matches with no Pods.
                                properties:
                                  matchExpressions:
                                    description: matchExpressions is a list of label
                                      selector requirements. The requirements are
                                      ANDed.
                                    items:
                                      description: A label selector requirement is
                                        a selector that contains values, a key, and
                                        an operator that relates the key and values.
                                      properties:
                                        key:
                                          description: key is the label key that the
                                            selector applies to.
                                          type: string
                                        operator:
                                          description: operator represents a key's
                                            relationship to a set of values. Valid
                                            operators are In, NotIn, Exists and DoesNotExist.
                                          type: string
                                        values:
                                          description: values is an array of string
                                            values. If the operator is In or NotIn,
                                            the values array must be non-empty. If
                                            the operator is Exists or DoesNotExist,
                                            the values array must be empty. This array
                                            is replaced during a strategic merge patch.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    description: matchLabels is a map of {key,value}
                                      pairs. A single {key,value} in the matchLabels
                                      map is equivalent to an element of matchExpressions,
                                      whose key field is "key", the operator is "In",
                                      and the values array contains only "value".
                                      The requirements are ANDed.
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              matchLabelKeys:
                                description: MatchLabelKeys is a set of pod label
                                  keys to select which pods will be taken into consideration.
                                  The keys are used to lookup values from the incoming
                                  pod labels, those key-value labels are merged with
                                  `labelSelector` as `key in (value)` to select the
                                  group of existing pods which pods will be taken
                                  into consideration for the incoming pod's pod (anti)
                                  affinity. Keys that don't exist in the incoming
                                  pod labels will be ignored. The default value is
                                  empty. The same key is forbidden to exist in both
                                  matchLabelKeys and labelSelector. Also, matchLabelKeys
                                  cannot be set when labelSelector isn't set. This
                                  is a beta field and requires enabling MatchLabelKeysInPodAffinity
                                  feature gate (enabled by default).
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              mismatchLabelKeys:
                                description: MismatchLabelKeys is a set of pod label
                                  keys to select which pods will be taken into consideration.
                                  The keys are used to lookup values from the incoming
                                  pod labels, those key-value labels are merged with
                                  `labelSelector` as `key notin (value)` to select
                                  the group of existing pods which pods will be taken
                                  into consideration for the incoming pod's pod (anti)
                                  affinity. Keys that don't exist in the incoming
                                  pod labels will be ignored. The default value is
                                  empty. The same key is forbidden to exist in both
                                  mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys
                                  cannot be set when labelSelector isn't set. This
                                  is a beta field and requires enabling MatchLabelKeysInPodAffinity
                                  feature gate (enabled by default).
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              namespaceSelector:
                                description: A label query over the set of namespaces
                                  that the term applies to. The term is applied to
                                  the union of the namespaces selected by this field
                                  and the ones listed in the namespaces field. null
                                  selector and null or empty namespaces list means
                                  "this pod's namespace". An empty selector ({}) matches
                                  all namespaces.
                                properties:
                                  matchExpressions:
                                    description: matchExpressions is a list of label
                                      selector requirements. The requirements are
                                      ANDed.
                                    items:
                                      description: A label selector requirement is
                                        a selector that contains values, a key, and
                                        an operator that relates the key and values.
                                      properties:
                                        key:
                                          description: key is the label key that the
                                            selector applies to.
                                          type: string
                                        operator:
                                          description: operator represents a key's
                                            relationship to a set of values. Valid
                                            operators are In, NotIn, Exists and DoesNotExist.
                                          type: string
                                        values:
                                          description: values is an array of string
                                            values. If the operator is In or NotIn,
                                            the values array must be non-empty. If
                                            the operator is Exists or DoesNotExist,
                                            the values array must be empty. This array
                                            is replaced during a strategic merge patch.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    description: matchLabels is a map of {key,value}
                                      pairs. A single {key,value} in the matchLabels
                                      map is equivalent to an element of matchExpressions,
                                      whose key field is "key", the operator is "In",
                                      and the values array contains only "value".
                                      The requirements are ANDed.
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              namespaces:
                                description: namespaces specifies a static list of
                                  namespace names that the term applies to. The term
                                  is applied to the union of the namespaces listed
                                  in this field and the ones selected by namespaceSelector.
                                  null or empty namespaces list and null namespaceSelector
                                  means "this pod's namespace".
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              topologyKey:
                                description: This pod should be co-located (affinity)
                                  or not co-located (anti-affinity) with the pods
                                  matching the labelSelector in the specified namespaces,
                                  where co-located is defined as running on a node
                                  whose value of the label with key topologyKey matches
                                  that of any node on which any of the selected pods
                                  is running. Empty topologyKey is not allowed.
                                type: string
                            required:
                            - topologyKey
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                      type: object
                    podAntiAffinity:
                      description: Describes pod anti-affinity scheduling rules (e.g.
                        avoid putting this pod in the same node, zone, etc. as some
                        other pod(s)).
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          description: The scheduler will prefer to schedule pods
                            to nodes that satisfy the anti-affinity expressions specified
                            by this field, but it may choose a node that violates
                            one or more of the expressions. The node that is most
                            preferred is the one with the greatest sum of weights,
                            i.e. for each node that meets all of the scheduling requirements
                            (resource request, requiredDuringScheduling anti-affinity
                            expressions, etc.), compute a sum by iterating through
                            the elements of this field and adding "weight" to the
                            sum if the node has pods which matches the corresponding
                            podAffinityTerm; the node(s) with the highest sum are
                            the most preferred.
                          items:
                            description: The weights of all of the matched WeightedPodAffinityTerm
                              fields are added per-node to find the most preferred
                              node(s)
                            properties:
                              podAffinityTerm:
                                description: Required. A pod affinity term, associated
                                  with the corresponding weight.
                                properties:
                                  labelSelector:
                                    description: A label query over a set of resources,
                                      in this case pods. If it's null, this PodAffinityTerm
                                      matches with no Pods.
                                    properties:
                                      matchExpressions:
                                        description: matchExpressions is a list of
                                          label selector requirements. The requirements
                                          are ANDed.
                                        items:
                                          description: A label selector requirement
                                            is a selector that contains values, a
                                            key, and an operator that relates the
                                            key and values.
                                          properties:
                                            key:
                                              description: key is the label key that
                                                the selector applies to.
                                              type: string
                                            operator:
                                              description: operator represents a key's
                                                relationship to a set of values. Valid
                                                operators are In, NotIn, Exists and
                                                DoesNotExist.
                                              type: string
                                            values:
                                              description: values is an array of string
                                                values. If the operator is In or NotIn,
                                                the values array must be non-empty.
                                                If the operator is Exists or DoesNotExist,
                                                the values array must be empty. This
                                                array is replaced during a strategic
                                                merge patch.
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        description: matchLabels is a map of {key,value}
                                          pairs. A single {key,value} in the matchLabels
                                          map is equivalent to an element of matchExpressions,
                                          whose key field is "key", the operator is
                                          "In", and the values array contains only
                                          "value". The requirements are ANDed.
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  matchLabelKeys:
                                    description: MatchLabelKeys is a set of pod label
                                      keys to select which pods will be taken into
                                      consideration. The keys are used to lookup values
                                      from the incoming pod labels, those key-value
                                      labels are merged with `labelSelector` as `key
                                      in (value)` to select the group of existing
                                      pods which pods will be taken into consideration
                                      for the incoming pod's pod (anti) affinity.
                                      Keys that don't exist in the incoming pod labels
                                      will be ignored. The default value is empty.
                                      The same key is forbidden to exist in both matchLabelKeys
                                      and labelSelector. Also, matchLabelKeys cannot
                                      be set when labelSelector isn't set. This is
                                      a beta field and requires enabling MatchLabelKeysInPodAffinity
                                      feature gate (enabled by default).
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  mismatchLabelKeys:
                                    description: MismatchLabelKeys is a set of pod
                                      label keys to select which pods will be taken
                                      into consideration. The keys are used to lookup
                                      values from the incoming pod labels, those key-value
                                      labels are merged with `labelSelector` as `key
                                      notin (value)` to select the group of existing
                                      pods which pods will be taken into consideration
                                      for the incoming pod's pod (anti) affinity.
                                      Keys that don't exist in the incoming pod labels
                                      will be ignored. The default value is empty.
                                      The same key is forbidden to exist in both mismatchLabelKeys
                                      and labelSelector. Also, mismatchLabelKeys cannot
                                      be set when labelSelector isn't set. This is
                                      a beta field and requires enabling MatchLabelKeysInPodAffinity
                                      feature gate (enabled by default).
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  namespaceSelector:
                                    description: A label query over the set of namespaces
                                      that the term applies to. The term is applied
                                      to the union of the namespaces selected by this
                                      field and the ones listed in the namespaces
                                      field. null selector and null or empty namespaces
                                      list means "this pod's namespace". An empty
                                      selector ({}) matches all namespaces.
                                    properties:
                                      matchExpressions:
                                        description: matchExpressions is a list of
                                          label selector requirements. The requirements
                                          are ANDed.
                                        items:
                                          description: A label selector requirement
                                            is a selector that contains values, a
                                            key, and an operator that relates the
                                            key and values.
                                          properties:
                                            key:
                                              description: key is the label key that
                                                the selector applies to.
                                              type: string
                                            operator:
                                              description: operator represents a key's
                                                relationship to a set of values. Valid
                                                operators are In, NotIn, Exists and
                                                DoesNotExist.
                                              type: string
                                            values:
                                              description: values is an array of string
                                                values. If the operator is In or NotIn,
                                                the values array must be non-empty.
                                                If the operator is Exists or DoesNotExist,
                                                the values array must be empty. This
                                                array is replaced during a strategic
                                                merge patch.
                                              items:
                                                type: string
                                              type: array
                                              x-kubernetes-list-type: atomic
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                        x-kubernetes-list-type: atomic
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        description: matchLabels is a map of {key,value}
                                          pairs. A single {key,value} in the matchLabels
                                          map is equivalent to an element of matchExpressions,
                                          whose key field is "key", the operator is
                                          "In", and the values array contains only
                                          "value". The requirements are ANDed.
                                        type: object
                                    type: object
                                    x-kubernetes-map-type: atomic
                                  namespaces:
                                    description: namespaces specifies a static list
                                      of namespace names that the term applies to.
                                      The term is applied to the union of the namespaces
                                      listed in this field and the ones selected by
                                      namespaceSelector. null or empty namespaces
                                      list and null namespaceSelector means "this
                                      pod's namespace".
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  topologyKey:
                                    description: This pod should be co-located (affinity)
                                      or not co-located (anti-affinity) with the pods
                                      matching the labelSelector in the specified
                                      namespaces, where co-located is defined as running
                                      on a node whose value of the label with key
                                      topologyKey matches that of any node on which
                                      any of the selected pods is running. Empty topologyKey
                                      is not allowed.
                                    type: string
                                required:
                                - topologyKey
                                type: object
                              weight:
                                description: weight associated with matching the corresponding
                                  podAffinityTerm, in the range 1-100.
                                format: int32
                                type: integer
                            required:
                            - podAffinityTerm
                            - weight
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        requiredDuringSchedulingIgnoredDuringExecution:
                          description: If the anti-affinity requirements specified
                            by this field are not met at scheduling time, the pod
                            will not be scheduled onto the node. If the anti-affinity
                            requirements specified by this field cease to be met at
                            some point during pod execution (e.g. due to a pod label
                            update), the system may or may not try to eventually evict
                            the pod from its node. When there are multiple elements,
                            the lists of nodes corresponding to each podAffinityTerm
                            are intersected, i.e. all terms must be satisfied.
                          items:
                            description: Defines a set of pods (namely those matching
                              the labelSelector relative to the given namespace(s))
                              that this pod should be co-located (affinity) or not
                              co-located (anti-affinity) with, where co-located is
                              defined as running on a node whose value of the label
                              with key <topologyKey> matches that of any node on which
                              a pod of the set of pods is running
                            properties:
                              labelSelector:
                                description: A label query over a set of resources,
                                  in this case pods. If it's null, this PodAffinityTerm
                                  matches with no Pods.
                                properties:
                                  matchExpressions:
                                    description: matchExpressions is a list of label
                                      selector requirements. The requirements are
                                      ANDed.
                                    items:
                                      description: A label selector requirement is
                                        a selector that contains values, a key, and
                                        an operator that relates the key and values.
                                      properties:
                                        key:
                                          description: key is the label key that the
                                            selector applies to.
                                          type: string
                                        operator:
                                          description: operator represents a key's
                                            relationship to a set of values. Valid
                                            operators are In, NotIn, Exists and DoesNotExist.
                                          type: string
                                        values:
                                          description: values is an array of string
                                            values. If the operator is In or NotIn,
                                            the values array must be non-empty. If
                                            the operator is Exists or DoesNotExist,
                                            the values array must be empty. This array
                                            is replaced during a strategic merge patch.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    description: matchLabels is a map of {key,value}
                                      pairs. A single {key,value} in the matchLabels
                                      map is equivalent to an element of matchExpressions,
                                      whose key field is "key", the operator is "In",
                                      and the values array contains only "value".
                                      The requirements are ANDed.
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              matchLabelKeys:
                                description: MatchLabelKeys is a set of pod label
                                  keys to select which pods will be taken into consideration.
                                  The keys are used to lookup values from the incoming
                                  pod labels, those key-value labels are merged with
                                  `labelSelector` as `key in (value)` to select the
                                  group of existing pods which pods will be taken
                                  into consideration for the incoming pod's pod (anti)
                                  affinity. Keys that don't exist in the incoming
                                  pod labels will be ignored. The default value is
                                  empty. The same key is forbidden to exist in both
                                  matchLabelKeys and labelSelector. Also, matchLabelKeys
                                  cannot be set when labelSelector isn't set. This
                                  is a beta field and requires enabling MatchLabelKeysInPodAffinity
                                  feature gate (enabled by default).
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              mismatchLabelKeys:
                                description: MismatchLabelKeys is a set of pod label
                                  keys to select which pods will be taken into consideration.
                                  The keys are used to lookup values from the incoming
                                  pod labels, those key-value labels are merged with
                                  `labelSelector` as `key notin (value)` to select
                                  the group of existing pods which pods will be taken
                                  into consideration for the incoming pod's pod (anti)
                                  affinity. Keys that don't exist in the incoming
                                  pod labels will be ignored. The default value is
                                  empty. The same key is forbidden to exist in both
                                  mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys
                                  cannot be set when labelSelector isn't set. This
                                  is a beta field and requires enabling MatchLabelKeysInPodAffinity
                                  feature gate (enabled by default).
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              namespaceSelector:
                                description: A label query over the set of namespaces
                                  that the term applies to. The term is applied to
                                  the union of the namespaces selected by this field
                                  and the ones listed in the namespaces field. null
                                  selector and null or empty namespaces list means
                                  "this pod's namespace". An empty selector ({}) matches
                                  all namespaces.
                                properties:
                                  matchExpressions:
                                    description: matchExpressions is a list of label
                                      selector requirements. The requirements are
                                      ANDed.
                                    items:
                                      description: A label selector requirement is
                                        a selector that contains values, a key, and
                                        an operator that relates the key and values.
                                      properties:
                                        key:
                                          description: key is the label key that the
                                            selector applies to.
                                          type: string
                                        operator:
                                          description: operator represents a key's
                                            relationship to a set of values. Valid
                                            operators are In, NotIn, Exists and DoesNotExist.
                                          type: string
                                        values:
                                          description: values is an array of string
                                            values. If the operator is In or NotIn,
                                            the values array must be non-empty. If
                                            the operator is Exists or DoesNotExist,
                                            the values array must be empty. This array
                                            is replaced during a strategic merge patch.
                                          items:
                                            type: string
                                          type: array
                                          x-kubernetes-list-type: atomic
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                    x-kubernetes-list-type: atomic
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    description: matchLabels is a map of {key,value}
                                      pairs. A single {key,value} in the matchLabels
                                      map is equivalent to an element of matchExpressions,
                                      whose key field is "key", the operator is "In",
                                      and the values array contains only "value".
                                      The requirements are ANDed.
                                    type: object
                                type: object
                                x-kubernetes-map-type: atomic
                              namespaces:
                                description: namespaces specifies a static list of
                                  namespace names that the term applies to. The term
                                  is applied to the union of the namespaces listed
                                  in this field and the ones selected by namespaceSelector.
                                  null or empty namespaces list and null namespaceSelector
                                  means "this pod's namespace".
                                items:
                                  type: string
                                type: array
                                x-kubernetes-list-type: atomic
                              topologyKey:
                                description: This pod should be co-located (affinity)
                                  or not co-located (anti-affinity) with the pods
                                  matching the labelSelector in the specified namespaces,
                                  where co-located is defined as running on a node
                                  whose value of the label with key topologyKey matches
                                  that of any node on which any of the selected pods
                                  is running. Empty topologyKey is not allowed.
                                type: string
                            required:
                            - topologyKey
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                      type: object
                  type: object
                containers:
                  description: Container-specific configuration
                  items:
                    additionalProperties: false
                    properties:
                      env:
                        "$ref": "#/components/schemas/CoreV1EnvVar"
                      envFrom:
                        "$ref": "#/components/schemas/CoreV1EnvFromSource"
                      image:
                        "$ref": "#/components/schemas/Image"
                      imagePullPolicy:
                        "$ref": "#/components/schemas/ImagePullPolicy"
                      lifecycle:
                        "$ref": "#/components/schemas/CoreV1Lifecycle"
                      livenessProbe:
                        "$ref": "#/components/schemas/CoreV1Probe"
                      name:
                        "$ref": "#/components/schemas/ContainerName"
                      readinessProbe:
                        "$ref": "#/components/schemas/CoreV1Probe"
                      resources:
                        "$ref": "#/components/schemas/ReqLimStorage"
                      startupProbe:
                        "$ref": "#/components/schemas/CoreV1Probe"
                      volumeMounts:
                        "$ref": "#/components/schemas/VolumeMounts"
                    type: object
                  type: array
                hostAliases:
                  items:
                    description: HostAlias holds the mapping between IP and hostnames
                      that will be injected as an entry in the pod's hosts file.
                    properties:
                      hostnames:
                        description: Hostnames for the above IP address.
                        items:
                          type: string
                        type: array
                      ip:
                        description: IP address of the host file entry.
                        type: string
                    required:
                    - ip
                    type: object
                  type: array
                nodeSelector:
                  additionalProperties:
                    type: string
                  description: 'The NodeSelector field allows users to specify a set
                    of key value pair that must be matched against the node labels
                    to decide whether App Connect Pods can be scheduled on that node.
                    Only nodes matching all of these key value pairs in their labels
                    will be selected for scheduling App Connect Pods. For more information,
                    please see the Kubernetes documentation. NOTE: only applicable
                    to always-on deployments, not currently supported for kNative'
                  type: object
                podSecurityContext:
                  description: PodSecurityContext describes the desired security context
                    for non-privileged pods. This may be required for some cases with
                    more restrictive PodSecurityAdmissions.
                  properties:
                    appArmorProfile:
                      description: appArmorProfile is the AppArmor options to use
                        by the containers in this pod. Note that this field cannot
                        be set when spec.os.name is windows.
                      properties:
                        localhostProfile:
                          description: localhostProfile indicates a profile loaded
                            on the node that should be used. The profile must be preconfigured
                            on the node to work. Must match the loaded name of the
                            profile. Must be set if and only if type is "Localhost".
                          type: string
                        type:
                          description: |-
                            type indicates which kind of AppArmor profile will be applied. Valid options are:
                              Localhost - a profile pre-loaded on the node.
                              RuntimeDefault - the container runtime's default profile.
                              Unconfined - no AppArmor enforcement.
                          type: string
                      required:
                      - type
                      type: object
                    fsGroup:
                      description: 'A special supplemental group that applies to all
                        containers in a pod. Some volume types allow the Kubelet to
                        change the ownership of that volume to be owned by the pod:
                        1. The owning GID will be the FSGroup 2. The setgid bit is
                        set (new files created in the volume will be owned by FSGroup)
                        3. The permission bits are OR''d with rw-rw---- If unset,
                        the Kubelet will not modify the ownership and permissions
                        of any volume. Note that this field cannot be set when spec.os.name
                        is windows.'
                      format: int64
                      type: integer
                    fsGroupChangePolicy:
                      description: 'fsGroupChangePolicy defines behavior of changing
                        ownership and permission of the volume before being exposed
                        inside Pod. This field will only apply to volume types which
                        support fsGroup based ownership(and permissions). It will
                        have no effect on ephemeral volume types such as: secret,
                        configmaps and emptydir. Valid values are "OnRootMismatch"
                        and "Always". If not specified, "Always" is used. Note that
                        this field cannot be set when spec.os.name is windows.'
                      type: string
                    runAsGroup:
                      description: The GID to run the entrypoint of the container
                        process. Uses runtime default if unset. May also be set in
                        SecurityContext.  If set in both SecurityContext and PodSecurityContext,
                        the value specified in SecurityContext takes precedence for
                        that container. Note that this field cannot be set when spec.os.name
                        is windows.
                      format: int64
                      type: integer
                    runAsNonRoot:
                      description: Indicates that the container must run as a non-root
                        user. If true, the Kubelet will validate the image at runtime
                        to ensure that it does not run as UID 0 (root) and fail to
                        start the container if it does. If unset or false, no such
                        validation will be performed. May also be set in SecurityContext.  If
                        set in both SecurityContext and PodSecurityContext, the value
                        specified in SecurityContext takes precedence.
                      type: boolean
                    runAsUser:
                      description: The UID to run the entrypoint of the container
                        process. Defaults to user specified in image metadata if unspecified.
                        May also be set in SecurityContext.  If set in both SecurityContext
                        and PodSecurityContext, the value specified in SecurityContext
                        takes precedence for that container. Note that this field
                        cannot be set when spec.os.name is windows.
                      format: int64
                      type: integer
                    seLinuxChangePolicy:
                      description: 'seLinuxChangePolicy defines how the container''s
                        SELinux label is applied to all volumes used by the Pod. It
                        has no effect on nodes that do not support SELinux or to volumes
                        does not support SELinux. Valid values are "MountOption" and
                        "Recursive". "Recursive" means relabeling of all files on
                        all Pod volumes by the container runtime. This may be slow
                        for large volumes, but allows mixing privileged and unprivileged
                        Pods sharing the same volume on the same node. "MountOption"
                        mounts all eligible Pod volumes with `-o context` mount option.
                        This requires all Pods that share the same volume to use the
                        same SELinux label. It is not possible to share the same volume
                        among privileged and unprivileged Pods. Eligible volumes are
                        in-tree FibreChannel and iSCSI volumes, and all CSI volumes
                        whose CSI driver announces SELinux support by setting spec.seLinuxMount:
                        true in their CSIDriver instance. Other volumes are always
                        re-labelled recursively. "MountOption" value is allowed only
                        when SELinuxMount feature gate is enabled. If not specified
                        and SELinuxMount feature gate is enabled, "MountOption" is
                        used. If not specified and SELinuxMount feature gate is disabled,
                        "MountOption" is used for ReadWriteOncePod volumes and "Recursive"
                        for all other volumes. This field affects only Pods that have
                        SELinux label set, either in PodSecurityContext or in SecurityContext
                        of all containers. All Pods that use the same volume should
                        use the same seLinuxChangePolicy, otherwise some pods can
                        get stuck in ContainerCreating state. Note that this field
                        cannot be set when spec.os.name is windows.'
                      type: string
                    seLinuxOptions:
                      description: The SELinux context to be applied to all containers.
                        If unspecified, the container runtime will allocate a random
                        SELinux context for each container.  May also be set in SecurityContext.  If
                        set in both SecurityContext and PodSecurityContext, the value
                        specified in SecurityContext takes precedence for that container.
                        Note that this field cannot be set when spec.os.name is windows.
                      properties:
                        level:
                          description: Level is SELinux level label that applies to
                            the container.
                          type: string
                        role:
                          description: Role is a SELinux role label that applies to
                            the container.
                          type: string
                        type:
                          description: Type is a SELinux type label that applies to
                            the container.
                          type: string
                        user:
                          description: User is a SELinux user label that applies to
                            the container.
                          type: string
                      type: object
                    seccompProfile:
                      description: The seccomp options to use by the containers in
                        this pod. Note that this field cannot be set when spec.os.name
                        is windows.
                      properties:
                        localhostProfile:
                          description: localhostProfile indicates a profile defined
                            in a file on the node should be used. The profile must
                            be preconfigured on the node to work. Must be a descending
                            path, relative to the kubelet's configured seccomp profile
                            location. Must be set if type is "Localhost". Must NOT
                            be set for any other type.
                          type: string
                        type:
                          description: 'type indicates which kind of seccomp profile
                            will be applied. Valid options are: Localhost - a profile
                            defined in a file on the node should be used. RuntimeDefault
                            - the container runtime default profile should be used.
                            Unconfined - no profile should be applied.'
                          type: string
                      required:
                      - type
                      type: object
                    supplementalGroups:
                      description: A list of groups applied to the first process run
                        in each container, in addition to the container's primary
                        GID and fsGroup (if specified).  If the SupplementalGroupsPolicy
                        feature is enabled, the supplementalGroupsPolicy field determines
                        whether these are in addition to or instead of any group memberships
                        defined in the container image. If unspecified, no additional
                        groups are added, though group memberships defined in the
                        container image may still be used, depending on the supplementalGroupsPolicy
                        field. Note that this field cannot be set when spec.os.name
                        is windows.
                      items:
                        format: int64
                        type: integer
                      type: array
                      x-kubernetes-list-type: atomic
                    supplementalGroupsPolicy:
                      description: Defines how supplemental groups of the first container
                        processes are calculated. Valid values are "Merge" and "Strict".
                        If not specified, "Merge" is used. (Alpha) Using the field
                        requires the SupplementalGroupsPolicy feature gate to be enabled
                        and the container runtime must implement support for this
                        feature. Note that this field cannot be set when spec.os.name
                        is windows.
                      type: string
                    sysctls:
                      description: Sysctls hold a list of namespaced sysctls used
                        for the pod. Pods with unsupported sysctls (by the container
                        runtime) might fail to launch. Note that this field cannot
                        be set when spec.os.name is windows.
                      items:
                        description: Sysctl defines a kernel parameter to be set
                        properties:
                          name:
                            description: Name of a property to set
                            type: string
                          value:
                            description: Value of a property to set
                            type: string
                        required:
                        - name
                        - value
                        type: object
                      type: array
                      x-kubernetes-list-type: atomic
                    windowsOptions:
                      description: The Windows specific settings applied to all containers.
                        If unspecified, the options within a container's SecurityContext
                        will be used. If set in both SecurityContext and PodSecurityContext,
                        the value specified in SecurityContext takes precedence. Note
                        that this field cannot be set when spec.os.name is linux.
                      properties:
                        gmsaCredentialSpec:
                          description: GMSACredentialSpec is where the GMSA admission
                            webhook (https://github.com/kubernetes-sigs/windows-gmsa)
                            inlines the contents of the GMSA credential spec named
                            by the GMSACredentialSpecName field.
                          type: string
                        gmsaCredentialSpecName:
                          description: GMSACredentialSpecName is the name of the GMSA
                            credential spec to use.
                          type: string
                        hostProcess:
                          description: HostProcess determines if a container should
                            be run as a 'Host Process' container. All of a Pod's containers
                            must have the same effective HostProcess value (it is
                            not allowed to have a mix of HostProcess containers and
                            non-HostProcess containers). In addition, if HostProcess
                            is true then HostNetwork must also be set to true.
                          type: boolean
                        runAsUserName:
                          description: The UserName in Windows to run the entrypoint
                            of the container process. Defaults to the user specified
                            in image metadata if unspecified. May also be set in PodSecurityContext.
                            If set in both SecurityContext and PodSecurityContext,
                            the value specified in SecurityContext takes precedence.
                          type: string
                      type: object
                  type: object
                priority:
                  description: The priority value. Various system components use this
                    field to find the priority of the pod. When Priority Admission
                    Controller is enabled, it prevents users from setting this field.
                    The admission controller populates this field from PriorityClassName.
                    The higher the value, the higher the priority.
                  format: int32
                  type: integer
                priorityClassName:
                  description: If specified, indicates the pod's priority. "system-node-critical"
                    and "system-cluster-critical" are two special keywords which indicate
                    the highest priorities with the former being the highest priority.
                    Any other name must be defined by creating a PriorityClass object
                    with that name. If not specified, the pod priority will be default
                    or zero if there is no default.
                  type: string
                tolerations:
                  description: If specified, the pod's tolerations.
                  items:
                    description: The pod this Toleration is attached to tolerates
                      any taint that matches the triple <key,value,effect> using the
                      matching operator <operator>.
                    properties:
                      effect:
                        description: Effect indicates the taint effect to match. Empty
                          means match all taint effects. When specified, allowed values
                          are NoSchedule, PreferNoSchedule and NoExecute.
                        type: string
                      key:
                        description: Key is the taint key that the toleration applies
                          to. Empty means match all taint keys. If the key is empty,
                          operator must be Exists; this combination means to match
                          all values and all keys.
                        type: string
                      operator:
                        description: Operator represents a key's relationship to the
                          value. Valid operators are Exists and Equal. Defaults to
                          Equal. Exists is equivalent to wildcard for value, so that
                          a pod can tolerate all taints of a particular category.
                        type: string
                      tolerationSeconds:
                        description: TolerationSeconds represents the period of time
                          the toleration (which must be of effect NoExecute, otherwise
                          this field is ignored) tolerates the taint. By default,
                          it is not set, which means tolerate the taint forever (do
                          not evict). Zero and negative values will be treated as
                          0 (evict immediately) by the system.
                        format: int64
                        type: integer
                      value:
                        description: Value is the taint value the toleration matches
                          to. If the operator is Exists, the value should be empty,
                          otherwise just a regular string.
                        type: string
                    type: object
                  type: array
                topologySpreadConstraint:
                  description: TopologySpreadConstraints controls how Pods are spread
                    across your cluster among failure-domains such as regions, zones,
                    nodes, and other user-defined topology domains.
                  items:
                    description: TopologySpreadConstraint specifies how to spread
                      matching pods among the given topology.
                    properties:
                      labelSelector:
                        description: LabelSelector is used to find matching pods.
                          Pods that match this label selector are counted to determine
                          the number of pods in their corresponding topology domain.
                        properties:
                          matchExpressions:
                            description: matchExpressions is a list of label selector
                              requirements. The requirements are ANDed.
                            items:
                              description: A label selector requirement is a selector
                                that contains values, a key, and an operator that
                                relates the key and values.
                              properties:
                                key:
                                  description: key is the label key that the selector
                                    applies to.
                                  type: string
                                operator:
                                  description: operator represents a key's relationship
                                    to a set of values. Valid operators are In, NotIn,
                                    Exists and DoesNotExist.
                                  type: string
                                values:
                                  description: values is an array of string values.
                                    If the operator is In or NotIn, the values array
                                    must be non-empty. If the operator is Exists or
                                    DoesNotExist, the values array must be empty.
                                    This array is replaced during a strategic merge
                                    patch.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              required:
                              - key
                              - operator
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          matchLabels:
                            additionalProperties:
                              type: string
                            description: matchLabels is a map of {key,value} pairs.
                              A single {key,value} in the matchLabels map is equivalent
                              to an element of matchExpressions, whose key field is
                              "key", the operator is "In", and the values array contains
                              only "value". The requirements are ANDed.
                            type: object
                        type: object
                        x-kubernetes-map-type: atomic
                      matchLabelKeys:
                        description: MatchLabelKeys is a set of pod label keys to
                          select the pods over which spreading will be calculated.
                          The keys are used to lookup values from the incoming pod
                          labels, those key-value labels are ANDed with labelSelector
                          to select the group of existing pods over which spreading
                          will be calculated for the incoming pod. The same key is
                          forbidden to exist in both MatchLabelKeys and LabelSelector.
                          MatchLabelKeys cannot be set when LabelSelector isn't set.
                          Keys that don't exist in the incoming pod labels will be
                          ignored. A null or empty list means only match against labelSelector.
                          This is a beta field and requires the MatchLabelKeysInPodTopologySpread
                          feature gate to be enabled (enabled by default).
                        items:
                          type: string
                        type: array
                        x-kubernetes-list-type: atomic
                      maxSkew:
                        description: 'MaxSkew describes the degree to which pods may
                          be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`,
                          it is the maximum permitted difference between the number
                          of matching pods in the target topology and the global minimum.
                          The global minimum is the minimum number of matching pods
                          in an eligible domain or zero if the number of eligible
                          domains is less than MinDomains. For example, in a 3-zone
                          cluster, MaxSkew is set to 1, and pods with the same labelSelector
                          spread as 2/2/1: In this case, the global minimum is 1.
                          | zone1 | zone2 | zone3 | |  P P  |  P P  |   P   | - if
                          MaxSkew is 1, incoming pod can only be scheduled to zone3
                          to become 2/2/2; scheduling it onto zone1(zone2) would make
                          the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1).
                          - if MaxSkew is 2, incoming pod can be scheduled onto any
                          zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used
                          to give higher precedence to topologies that satisfy it.
                          It''s a required field. Default value is 1 and 0 is not
                          allowed.'
                        format: int32
                        type: integer
                      minDomains:
                        description: 'MinDomains indicates a minimum number of eligible
                          domains. When the number of eligible domains with matching
                          topology keys is less than minDomains, Pod Topology Spread
                          treats "global minimum" as 0, and then the calculation of
                          Skew is performed. And when the number of eligible domains
                          with matching topology keys equals or greater than minDomains,
                          this value has no effect on scheduling. As a result, when
                          the number of eligible domains is less than minDomains,
                          scheduler won''t schedule more than maxSkew Pods to those
                          domains. If value is nil, the constraint behaves as if MinDomains
                          is equal to 1. Valid values are integers greater than 0.
                          When value is not nil, WhenUnsatisfiable must be DoNotSchedule.
                          For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains
                          is set to 5 and pods with the same labelSelector spread
                          as 2/2/2: | zone1 | zone2 | zone3 | |  P P  |  P P  |  P
                          P  | The number of domains is less than 5(MinDomains), so
                          "global minimum" is treated as 0. In this situation, new
                          pod with the same labelSelector cannot be scheduled, because
                          computed skew will be 3(3 - 0) if new Pod is scheduled to
                          any of the three zones, it will violate MaxSkew.'
                        format: int32
                        type: integer
                      nodeAffinityPolicy:
                        description: 'NodeAffinityPolicy indicates how we will treat
                          Pod''s nodeAffinity/nodeSelector when calculating pod topology
                          spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector
                          are included in the calculations. - Ignore: nodeAffinity/nodeSelector
                          are ignored. All nodes are included in the calculations.
                          If this value is nil, the behavior is equivalent to the
                          Honor policy.'
                        type: string
                      nodeTaintsPolicy:
                        description: 'NodeTaintsPolicy indicates how we will treat
                          node taints when calculating pod topology spread skew. Options
                          are: - Honor: nodes without taints, along with tainted nodes
                          for which the incoming pod has a toleration, are included.
                          - Ignore: node taints are ignored. All nodes are included.
                          If this value is nil, the behavior is equivalent to the
                          Ignore policy.'
                        type: string
                      topologyKey:
                        description: TopologyKey is the key of node labels. Nodes
                          that have a label with this key and identical values are
                          considered to be in the same topology. We consider each
                          <key, value> as a "bucket", and try to put balanced number
                          of pods into each bucket. We define a domain as a particular
                          instance of a topology. Also, we define an eligible domain
                          as a domain whose nodes meet the requirements of nodeAffinityPolicy
                          and nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname",
                          each Node is a domain of that topology. And, if TopologyKey
                          is "topology.kubernetes.io/zone", each zone is a domain
                          of that topology. It's a required field.
                        type: string
                      whenUnsatisfiable:
                        description: |-
                          WhenUnsatisfiable indicates how to deal with a pod if it doesn't satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,
                            but giving higher precedence to topologies that would help reduce the
                            skew.
                          A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assignment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won't make it *more* imbalanced. It's a required field.
                        type: string
                    required:
                    - maxSkew
                    - topologyKey
                    - whenUnsatisfiable
                    type: object
                  type: array
                imagePullSecrets:
                  items:
                    description: LocalObjectReference contains enough information
                      to let you locate the referenced object inside the same namespace.
                    properties:
                      name:
                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                          TODO: Add other useful fields. apiVersion, kind, uid?'
                        type: string
                    type: object
                  type: array
                metadata:
                  properties:
                    annotations:
                      additionalProperties:
                        type: string
                      description: Apply custom annotations for the deployment
                      type: object
                    labels:
                      additionalProperties:
                        type: string
                      description: Apply custom labels for the deployment
                      type: object
                  type: object
                volumes:
                  "$ref": "#/components/schemas/Volumes"
                terminationGracePeriodSeconds:
                  description: The grace period is the duration in seconds after the
                    processes running in the pod are sent a termination signal and
                    the time when the processes are forcibly halted with a kill signal.
                    Set this value longer than the expected cleanup time for your
                    process. Only valid for operands 12.0.10.0-r1  and above system.
                  format: int64
                  type: integer
              type: object
          type: object
        version:
          description: This field specifies the version of the App Connect integration
            runtime that you want to create.
          type: string
      required:
      - license
      additionalProperties: false
      type: object
    IntegrationRuntimeStatus:
      description: IntegrationRuntimeStatus defines the observed state of IntegrationRuntime.
      properties:
        conditions:
          "$ref": "#/components/schemas/ConditionsList"
        customImages:
          type: boolean
        endpoints:
          "$ref": "#/components/schemas/EndpointsList"
        labelSelector:
          type: string
        nodePortService:
          properties:
            ports:
              items:
                description: ServicePort contains information on service's port.
                properties:
                  appProtocol:
                    description: |-
                      The application protocol for this port. This is used as a hint for implementations to offer richer behavior for protocols that they understand. This field follows standard Kubernetes label syntax. Valid values are either: * Un-prefixed protocol names - reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). * Kubernetes-defined prefixed names:
                        * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-
                        * 'kubernetes.io/ws'  - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455
                        * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455
                      * Other protocols should use implementation-defined prefixed names such as mycompany.com/my-custom-protocol.
                    type: string
                  name:
                    description: The name of this port within the service. This must
                      be a DNS_LABEL. All ports within a ServiceSpec must have unique
                      names. When considering the endpoints for a Service, this must
                      match the 'name' field in the EndpointPort. Optional if only
                      one ServicePort is defined on this service.
                    type: string
                  nodePort:
                    description: 'The port on each node on which this service is exposed
                      when type is NodePort or LoadBalancer.  Usually assigned by
                      the system. If a value is specified, in-range, and not in use
                      it will be used, otherwise the operation will fail.  If not
                      specified, a port will be allocated if this Service requires
                      one.  If this field is specified when creating a Service which
                      does not need it, creation will fail. This field will be wiped
                      when updating a Service to no longer need it (e.g. changing
                      type from NodePort to ClusterIP). More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport'
                    format: int32
                    type: integer
                  port:
                    description: The port that will be exposed by this service.
                    format: int32
                    type: integer
                  protocol:
                    default: TCP
                    description: The IP protocol for this port. Supports "TCP", "UDP",
                      and "SCTP". Default is TCP.
                    type: string
                  targetPort:
                    anyOf:
                    - type: integer
                    - type: string
                    description: 'Number or name of the port to access on the pods
                      targeted by the service. Number must be in the range 1 to 65535.
                      Name must be an IANA_SVC_NAME. If this is a string, it will
                      be looked up as a named port in the target Pod''s container
                      ports. If this is not specified, the value of the ''port'' field
                      is used (an identity map). This field is ignored for services
                      with clusterIP=None, and should be omitted or set equal to the
                      ''port'' field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service'
                    x-kubernetes-int-or-string: true
                required:
                - port
                type: object
              type: array
          type: object
        phase:
          description: The status of the integration runtime.
          type: string
        replicas:
          format: int32
          type: integer
        supportsTraceCustomResource:
          description: This field specifies whether trace custom resources can be
            created to reference this integration runtime.
          type: boolean
        traceEnabled:
          description: This field specifies whether trace is enabled.
          properties:
            traceCR:
              description: This field provides details of the trace custom resource
                that exists for this integration runtime.
              properties:
                name:
                  description: The name of trace custom resource.
                  type: string
                service:
                  description: This field specifies whether the trace custom resource
                    has enabled service trace.
                  type: boolean
                user:
                  description: This field specifies whether he trace custom resource
                    has enabled user trace.
                  type: boolean
              type: object
          type: object
        versions:
          "$ref": "#/components/schemas/VersionsList"
      required:
      - versions
      type: object
    IntegrationRuntimeList:
      type: object
      description: A list of integration runtimes.
      required:
      - integrationRuntimes
      additionalProperties: true
      properties:
        integrationRuntimes:
          description: An array of integration runtime objects.
          type: array
          items:
            "$ref": "#/components/schemas/IntegrationRuntime"
    IntegrationRuntimeRetrieveBasicAuthCredentials:
      description: 'Basic authentication credentials for an integration runtime.

        '
      type: object
      additionalProperties: false
      required:
      - username
      - password
      properties:
        username:
          description: The basic authentication username.
          type: string
        password:
          description: The basic authentication password.
          type: string
          format: password
    IntegrationRuntimeResetBasicAuthCredentials:
      description: 'Basic authentication credentials for an integration runtime.

        '
      type: object
      additionalProperties: false
      required:
      - username
      - password
      properties:
        username:
          description: The basic authentication username.
          type: string
        password:
          description: The basic authentication password.
          type: string
          format: password
    IntegrationRuntimeRetrieveMcpBasicAuthCredentials:
      description: 'Basic authentication credentials for an integration runtime.

        '
      type: object
      additionalProperties: false
      required:
      - username
      - password
      properties:
        username:
          description: The basic authentication username.
          type: string
        password:
          description: The basic authentication password.
          type: string
          format: password
    IntegrationRuntimeResetMcpBasicAuthCredentials:
      description: 'Basic authentication credentials for an integration runtime.

        '
      type: object
      additionalProperties: false
      required:
      - username
      - password
      properties:
        username:
          description: The basic authentication username.
          type: string
        password:
          description: The basic authentication password.
          type: string
          format: password
    IntegrationRuntimeCollectTrace:
      description: Options for collecting trace from an integration runtime.
      type: object
      additionalProperties: false
      required:
      - type
      properties:
        type:
          "$ref": "#/components/schemas/TraceType"
    IntegrationRuntimeResetTrace:
      description: Options for resetting trace on an integration runtime.
      type: object
      additionalProperties: false
      required:
      - type
      properties:
        type:
          "$ref": "#/components/schemas/TraceType"
    Pod:
      description: A Kubernetes Pod
      type: object
      properties:
        metadata:
          "$ref": "#/components/schemas/Metadata"
        spec:
          "$ref": "#/components/schemas/PodSpec"
        status:
          "$ref": "#/components/schemas/PodStatus"
      required:
      - metadata
      - spec
      additionalProperties: true
    PodList:
      type: object
      description: A list of pods.
      required:
      - pods
      additionalProperties: true
      properties:
        pods:
          description: An array of pod objects.
          type: array
          items:
            "$ref": "#/components/schemas/Pod"
    PodSpec:
      description: A Kubernetes Pod specification
      type: object
      additionalProperties: true
    PodStatus:
      description: A Kubernetes Pod status
      type: object
      additionalProperties: true
    IntegrationRuntimeCollectPodUsageResponse:
      type: object
      description: The response with a list of pods with their usage metrics.
      required:
      - podMetrics
      additionalProperties: true
      properties:
        podMetrics:
          description: An array of pod metrics objects.
          type: array
          items:
            "$ref": "#/components/schemas/PodMetrics"
    PodMetrics:
      type: object
      description: A Kubernetes PodMetrics object
      properties:
        metadata:
          "$ref": "#/components/schemas/Metadata"
        containers:
          type: array
          items:
            type: object
            description: Containers in the pod and their usage
            properties:
              name:
                type: string
              usage:
                type: object
            additionalProperties: true
      required:
      - metadata
      - containers
      additionalProperties: true
    Metadata:
      additionalProperties: true
      description: Resource metadata
      properties:
        name:
          description: The resource name. If this field is set for a replace or create
            operation, the field must have the same value as the 'name' path parameter.
          type: string
        namespace:
          description: The resource namespace.
          type: string
        labels:
          additionalProperties:
            type: string
          description: Custom keys and values used to organize and categorize resources
          type: object
        ownerReferences:
          description: Field that points to the owning object
          type: array
          items:
            additionalProperties:
              "$ref": "#/components/schemas/SimpleType"
            type: object
        annotations:
          additionalProperties:
            type: string
          description: Apply custom annotations to the deployment.
          type: object
      type: object
    AvailableList:
      description: The available channels and versions of the resource.
      properties:
        channels:
          description: The available channels of the resource.
          items:
            "$ref": "#/components/schemas/VersionName"
          type: array
        versions:
          description: The available versions of the resource.
          items:
            "$ref": "#/components/schemas/VersionName"
          type: array
      type: object
      additionalProperties: false
    LicensesList:
      description: A list of licenses.
      items:
        type: object
        additionalProperties: false
        properties:
          name:
            description: The license name.
            type: string
          displayName:
            description: The license display name.
            type: string
          link:
            description: The link to the license.
            type: string
          matchesCurrentType:
            description: Matches the current type.
            type: boolean
      type: array
    VersionsList:
      description: The available and reconciled versions of the resource.
      properties:
        available:
          "$ref": "#/components/schemas/AvailableList"
        reconciled:
          description: The reconciled version of the resource.
          type: string
      type: object
      additionalProperties: false
    VersionName:
      description: Details of the version and channel.
      properties:
        name:
          description: The name of the version.
          type: string
        licenses:
          "$ref": "#/components/schemas/LicensesList"
      type: object
      additionalProperties: false
    Error:
      type: object
      additionalProperties: false
      description: 'The error object contains an array of `errors` that lists all
        of the errors that have occurred.

        '
      required:
      - errors
      properties:
        errors:
          type: array
          description: An array of errors.
          items:
            "$ref": "#/components/schemas/ErrorItem"
    ErrorItem:
      description: 'Each error has * An error `code` * An error `message` that provides
        a description of the error that has occurred and might also have a `more_info`
        link that points to more information about the error.

        '
      type: object
      required:
      - code
      - message
      additionalProperties: true
      properties:
        code:
          description: The unique error code.
          type: string
        message:
          description: A text message that describes the error that occurred.
          type: string
        moreInfo:
          description: A URL link that provides more information about this error.
          type: string
        errorDetails:
          description: More textual information about this error.
          type: string
        context:
          description: Extra machine-readable properties.
          type: object
          additionalProperties:
            "$ref": "#/components/schemas/SimpleType"
    SimpleType:
      anyOf:
      - type: string
      - type: number
      - type: boolean
    TraceType:
      description: Enumeration for the types of trace that are available.
      type: string
      enum:
      - user
      - service
    TraceZipIr:
      type: string
      description: A compressed file that contains trace from all integration runtime
        replicas.
      format: binary
    ConditionsList:
      description: A list of conditions of the integration runtime.
      items:
        properties:
          lastTransitionTime:
            description: The date and time when the status last changed.
            format: date-time
            type: string
          message:
            description: The status message.
            type: string
          reason:
            description: The reason for the last transition of this status.
            type: string
          status:
            description: Whether this condition applies to the resource.
            enum:
            - 'True'
            - 'False'
            - Unknown
            type: string
          type:
            description: The status type.
            type: string
        required:
        - lastTransitionTime
        - message
        - status
        - type
        type: object
        additionalProperties: false
      type: array
    EndpointsList:
      description: The endpoint of the resource.
      items:
        properties:
          name:
            description: The name of the endpoint.
            type: string
          type:
            description: The type of the endpoint; for example, 'ui' for a UI endpoint,
              'api' for an API endpoint, or 'openapi' for API documentation.
            type: string
          uri:
            description: The URI of the endpoint.
            type: string
        required:
        - name
        - type
        - uri
        type: object
        additionalProperties: false
      type: array
    ReqLimStorage:
      description: CPU and memory configuration for the container.
      properties:
        claims:
          description: |-
            Claims lists the names of resources, defined in spec.resourceClaims,
            that are used by this container.
            This field depends on the
            DynamicResourceAllocation feature gate.
            This field is immutable. It can only be set for containers.
          items:
            description: ResourceClaim references one entry in PodSpec.ResourceClaims.
            properties:
              name:
                description: Name must match the name of one entry in pod.spec.resourceClaims
                  of the Pod where this field is used. It makes that resource available
                  inside a container.
                type: string
              request:
                description: Request is the name chosen for a request in the referenced
                  claim. If empty, everything from the claim is made available, otherwise
                  only the result of this request.
                type: string
            required:
            - name
            type: object
          type: array
          x-kubernetes-list-map-keys:
          - name
          x-kubernetes-list-type: map
        limits:
          description: CPU and memory limits for the container.
          properties:
            cpu:
              anyOf:
              - type: integer
              - type: string
              description: The upper limit of CPU core. Specify integers, fractions
                (for example, 0.5), or millicores values (for example, 100m, where
                100m is equivalent to .1 core).
              pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
              x-kubernetes-int-or-string: true
            memory:
              anyOf:
              - type: integer
              - type: string
              description: 'The memory upper limit in bytes. Specify integers with
                suffixes: E, P, T, G, M, K, or power-of-two equivalents: Ei, Pi, Ti,
                Gi, Mi, Ki.'
              pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
              x-kubernetes-int-or-string: true
            ephemeral-storage:
              anyOf:
              - type: integer
              - type: string
              description: 'The disk upper limit in bytes when using ephemeral storage.
                Specify integers with one of these suffixes: E, P, T, G, M, K, or
                power-of-two equivalents: Ei, Pi, Ti, Gi, Mi, Ki.'
              pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
              x-kubernetes-int-or-string: true
          type: object
          additionalProperties: false
        requests:
          description: CPU and memory requested for the container
          properties:
            cpu:
              anyOf:
              - type: integer
              - type: string
              description: The minimum required CPU core. Specify integers, fractions
                (e.g. 0.5), or millicore values (e.g. 100m, where 100m is equivalent
                to .1 core)
              pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
              x-kubernetes-int-or-string: true
            memory:
              anyOf:
              - type: integer
              - type: string
              description: 'The minimum memory in bytes. Specify integers with one
                of these suffixes: E, P, T, G, M, K, or power-of-two equivalents:
                Ei, Pi, Ti, Gi, Mi, Ki.'
              pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
              x-kubernetes-int-or-string: true
            ephemeral-storage:
              anyOf:
              - type: integer
              - type: string
              description: 'The minimum disk in bytes. Specify integers with one of
                these suffixes: E, P, T, G, M, K, or power-of-two equivalents: Ei,
                Pi, Ti, Gi, Mi, Ki.'
              pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
              x-kubernetes-int-or-string: true
          type: object
          additionalProperties: false
      type: object
      additionalProperties: false
    CoreV1Probe:
      description: Configuration of the liveness probes
      properties:
        exec:
          description: Exec specifies a command to execute in the container.
          properties:
            command:
              description: Command is the command line to execute inside the container,
                the working directory for the command  is root ('/') in the container's
                filesystem. The command is simply exec'd, it is not run inside a shell,
                so traditional shell instructions ('|', etc) won't work. To use a
                shell, you need to explicitly call out to that shell. Exit status
                of 0 is treated as live/healthy and non-zero is unhealthy.
              items:
                type: string
              type: array
              x-kubernetes-list-type: atomic
          type: object
        failureThreshold:
          description: Minimum consecutive failures for the probe to be considered
            failed after having succeeded. Defaults to 3. Minimum value is 1.
          format: int32
          type: integer
        grpc:
          description: GRPC specifies a GRPC HealthCheckRequest.
          properties:
            port:
              description: Port number of the gRPC service. Number must be in the
                range 1 to 65535.
              format: int32
              type: integer
            service:
              default: ''
              description: Service is the name of the service to place in the gRPC
                HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
                If this is not specified, the default behavior is defined by gRPC.
              type: string
          required:
          - port
          type: object
        httpGet:
          description: HTTPGet specifies an HTTP GET request to perform.
          properties:
            host:
              description: Host name to connect to, defaults to the pod IP. You probably
                want to set "Host" in httpHeaders instead.
              type: string
            httpHeaders:
              description: Custom headers to set in the request. HTTP allows repeated
                headers.
              items:
                description: HTTPHeader describes a custom header to be used in HTTP
                  probes
                properties:
                  name:
                    description: The header field name. This will be canonicalized
                      upon output, so case-variant names will be understood as the
                      same header.
                    type: string
                  value:
                    description: The header field value
                    type: string
                required:
                - name
                - value
                type: object
              type: array
              x-kubernetes-list-type: atomic
            path:
              description: Path to access on the HTTP server.
              type: string
            port:
              anyOf:
              - type: integer
              - type: string
              description: |-
                Name or number of the port to access on the container.
                Number must be in the range 1 to 65535.
                Name must be an IANA_SVC_NAME.
              x-kubernetes-int-or-string: true
            scheme:
              description: |-
                Scheme to use for connecting to the host.
                Defaults to HTTP.
              type: string
          required:
          - port
          type: object
        initialDelaySeconds:
          description: 'Number of seconds after the container has started before liveness
            probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
          format: int32
          type: integer
        periodSeconds:
          description: |-
            How often (in seconds) to perform the probe.
            Default to 10 seconds. Minimum value is 1.
          format: int32
          type: integer
        successThreshold:
          description: Minimum consecutive successes for the probe to be considered
            successful after having failed. Defaults to 1. Must be 1 for liveness
            and startup. Minimum value is 1.
          format: int32
          type: integer
        tcpSocket:
          description: TCPSocket specifies a connection to a TCP port.
          properties:
            host:
              description: 'Optional: Host name to connect to, defaults to the pod
                IP.'
              type: string
            port:
              anyOf:
              - type: integer
              - type: string
              description: |-
                Number or name of the port to access on the container.
                Number must be in the range 1 to 65535.
                Name must be an IANA_SVC_NAME.
              x-kubernetes-int-or-string: true
          required:
          - port
          type: object
        terminationGracePeriodSeconds:
          description: Optional duration in seconds the pod needs to terminate gracefully
            upon probe failure. The grace period is the duration in seconds after
            the processes running in the pod are sent a termination signal and the
            time when the processes are forcibly halted with a kill signal. Set this
            value longer than the expected cleanup time for your process. If this
            value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise,
            this value overrides the value provided by the pod spec. Value must be
            non-negative integer. The value zero indicates stop immediately via the
            kill signal (no opportunity to shut down). This is a beta field and requires
            enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1.
            spec.terminationGracePeriodSeconds is used if unset.
          format: int64
          type: integer
        timeoutSeconds:
          description: 'Number of seconds after which the probe times out. Defaults
            to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
          format: int32
          type: integer
      type: object
      additionalProperties: false
    Image:
      description: The image used by the container
      type: string
    ImagePullPolicy:
      description: PullPolicy describes a policy for if/when to pull a container image
      enum:
      - IfNotPresent
      - Always
      - Never
      type: string
    ContainerName:
      description: The name of the container.
      type: string
    CoreV1EnvVar:
      description: List of environment variables to set in the container.
      items:
        description: EnvVar represents an environment variable present in a Container.
        properties:
          name:
            description: Name of the environment variable. Must be a C_IDENTIFIER.
            type: string
          value:
            description: 'Variable references $(VAR_NAME) are expanded using the previous
              defined environment variables in the container and any service environment
              variables. If a variable cannot be resolved, the reference in the input
              string will be unchanged. The $(VAR_NAME) syntax can be escaped with
              a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded,
              regardless of whether the variable exists or not. Defaults to "".'
            type: string
          valueFrom:
            description: Source for the environment variable's value. Cannot be used
              if value is not empty.
            properties:
              configMapKeyRef:
                description: Selects a key of a ConfigMap.
                properties:
                  key:
                    description: The key to select.
                    type: string
                  name:
                    default: ''
                    description: 'Name of the referent. This field is effectively
                      required, but due to backwards compatibility is allowed to be
                      empty. Instances of this type with an empty value here are almost
                      certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                  optional:
                    description: Specify whether the ConfigMap or its key must be
                      defined
                    type: boolean
                required:
                - key
                type: object
                x-kubernetes-map-type: atomic
              fieldRef:
                description: 'Selects a field of the pod: supports metadata.name,
                  metadata.namespace, `metadata.labels[''<KEY>'']`, `metadata.annotations[''<KEY>'']`,
                  spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP,
                  status.podIPs.'
                properties:
                  apiVersion:
                    description: Version of the schema the FieldPath is written in
                      terms of, defaults to "v1".
                    type: string
                  fieldPath:
                    description: Path of the field to select in the specified API
                      version.
                    type: string
                required:
                - fieldPath
                type: object
                x-kubernetes-map-type: atomic
              fileKeyRef:
                description: |-
                  FileKeyRef selects a key of the env file.
                  Requires the EnvFiles feature gate to be enabled.
                properties:
                  key:
                    description: The key within the env file. An invalid key will
                      prevent the pod from starting. The keys defined within a source
                      may consist of any printable ASCII characters except '='. During
                      Alpha stage of the EnvFiles feature gate, the key size is limited
                      to 128 characters.
                    type: string
                  optional:
                    default: false
                    description: Specify whether the file or its key must be defined.
                      If the file or key does not exist, then the env var is not published.
                      If optional is set to true and the specified key does not exist,
                      the environment variable will not be set in the Pod's containers.
                      If optional is set to false and the specified key does not exist,
                      an error will be returned during Pod creation.
                    type: boolean
                  path:
                    description: The path within the volume from which to select the
                      file. Must be relative and may not contain the '..' path or
                      start with '..'.
                    type: string
                  volumeName:
                    description: The name of the volume mount containing the env file.
                    type: string
                required:
                - key
                - path
                - volumeName
                type: object
                x-kubernetes-map-type: atomic
              resourceFieldRef:
                description: 'Selects a resource of the container: only resources
                  limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage,
                  requests.cpu, requests.memory and requests.ephemeral-storage) are
                  currently supported.'
                properties:
                  containerName:
                    description: 'Container name: required for volumes, optional for
                      env vars'
                    type: string
                  divisor:
                    anyOf:
                    - type: integer
                    - type: string
                    description: Specifies the output format of the exposed resources,
                      defaults to "1"
                    pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
                    x-kubernetes-int-or-string: true
                  resource:
                    description: 'Required: resource to select'
                    type: string
                required:
                - resource
                type: object
                x-kubernetes-map-type: atomic
              secretKeyRef:
                description: Selects a key of a secret in the pod's namespace
                properties:
                  key:
                    description: The key of the secret to select from.  Must be a
                      valid secret key.
                    type: string
                  name:
                    default: ''
                    description: 'Name of the referent. This field is effectively
                      required, but due to backwards compatibility is allowed to be
                      empty. Instances of this type with an empty value here are almost
                      certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                  optional:
                    description: Specify whether the Secret or its key must be defined
                    type: boolean
                required:
                - key
                type: object
                x-kubernetes-map-type: atomic
            type: object
        required:
        - name
        type: object
      type: array
    CoreV1EnvFromSource:
      description: List of env from references to set in the container.
      items:
        description: EnvFromSource represents the source of a set of ConfigMaps
        properties:
          configMapRef:
            description: The ConfigMap to select from
            properties:
              name:
                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                type: string
              optional:
                description: Specify whether the ConfigMap must be defined
                type: boolean
            type: object
          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
            properties:
              name:
                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                type: string
              optional:
                description: Specify whether the Secret must be defined
                type: boolean
            type: object
        type: object
      type: array
    CoreV1Lifecycle:
      description: Configuration of the Lifecycle
      properties:
        postStart:
          description: 'PostStart is called immediately after a container is created.
            If the handler fails, the container is terminated and restarted according
            to its restart policy. Other management of the container blocks until
            the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'
          properties:
            exec:
              description: Exec specifies the action to take.
              properties:
                command:
                  description: Command is the command line to execute inside the container,
                    the working directory for the command  is root ('/') in the container's
                    filesystem. The command is simply exec'd, it is not run inside
                    a shell, so traditional shell instructions ('|', etc) won't work.
                    To use a shell, you need to explicitly call out to that shell.
                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                  items:
                    type: string
                  type: array
                  x-kubernetes-list-type: atomic
              type: object
            httpGet:
              description: HTTPGet specifies the http request to perform.
              properties:
                host:
                  description: Host name to connect to, defaults to the pod IP. You
                    probably want to set "Host" in httpHeaders instead.
                  type: string
                httpHeaders:
                  description: Custom headers to set in the request. HTTP allows repeated
                    headers.
                  items:
                    description: HTTPHeader describes a custom header to be used in
                      HTTP probes
                    properties:
                      name:
                        description: The header field name. This will be canonicalized
                          upon output, so case-variant names will be understood as
                          the same header.
                        type: string
                      value:
                        description: The header field value
                        type: string
                    required:
                    - name
                    - value
                    type: object
                  type: array
                  x-kubernetes-list-type: atomic
                path:
                  description: Path to access on the HTTP server.
                  type: string
                port:
                  anyOf:
                  - type: integer
                  - type: string
                  description: |-
                    Name or number of the port to access on the container.
                    Number must be in the range 1 to 65535.
                    Name must be an IANA_SVC_NAME.
                  x-kubernetes-int-or-string: true
                scheme:
                  description: |-
                    Scheme to use for connecting to the host.
                    Defaults to HTTP.
                  type: string
              required:
              - port
              type: object
            sleep:
              description: Sleep represents the duration that the container should
                sleep before being terminated.
              properties:
                seconds:
                  description: Seconds is the number of seconds to sleep.
                  format: int64
                  type: integer
              required:
              - seconds
              type: object
            tcpSocket:
              description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler
                and kept for the backward compatibility. There are no validation of
                this field and lifecycle hooks will fail in runtime when tcp handler
                is specified.
              properties:
                host:
                  description: 'Optional: Host name to connect to, defaults to the
                    pod IP.'
                  type: string
                port:
                  anyOf:
                  - type: integer
                  - type: string
                  description: |-
                    Number or name of the port to access on the container.
                    Number must be in the range 1 to 65535.
                    Name must be an IANA_SVC_NAME.
                  x-kubernetes-int-or-string: true
              required:
              - port
              type: object
          type: object
        preStop:
          description: 'PreStop is called immediately before a container is terminated
            due to an API request or management event such as liveness/startup probe
            failure, preemption, resource contention, etc. The handler is not called
            if the container crashes or exits. The Pod''s termination grace period
            countdown begins before the PreStop hook is executed. Regardless of the
            outcome of the handler, the container will eventually terminate within
            the Pod''s termination grace period (unless delayed by finalizers). Other
            management of the container blocks until the hook completes or until the
            termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks'
          properties:
            exec:
              description: Exec specifies the action to take.
              properties:
                command:
                  description: Command is the command line to execute inside the container,
                    the working directory for the command  is root ('/') in the container's
                    filesystem. The command is simply exec'd, it is not run inside
                    a shell, so traditional shell instructions ('|', etc) won't work.
                    To use a shell, you need to explicitly call out to that shell.
                    Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                  items:
                    type: string
                  type: array
                  x-kubernetes-list-type: atomic
              type: object
            httpGet:
              description: HTTPGet specifies the http request to perform.
              properties:
                host:
                  description: Host name to connect to, defaults to the pod IP. You
                    probably want to set "Host" in httpHeaders instead.
                  type: string
                httpHeaders:
                  description: Custom headers to set in the request. HTTP allows repeated
                    headers.
                  items:
                    description: HTTPHeader describes a custom header to be used in
                      HTTP probes
                    properties:
                      name:
                        description: The header field name. This will be canonicalized
                          upon output, so case-variant names will be understood as
                          the same header.
                        type: string
                      value:
                        description: The header field value
                        type: string
                    required:
                    - name
                    - value
                    type: object
                  type: array
                  x-kubernetes-list-type: atomic
                path:
                  description: Path to access on the HTTP server.
                  type: string
                port:
                  anyOf:
                  - type: integer
                  - type: string
                  description: |-
                    Name or number of the port to access on the container.
                    Number must be in the range 1 to 65535.
                    Name must be an IANA_SVC_NAME.
                  x-kubernetes-int-or-string: true
                scheme:
                  description: |-
                    Scheme to use for connecting to the host.
                    Defaults to HTTP.
                  type: string
              required:
              - port
              type: object
            sleep:
              description: Sleep represents the duration that the container should
                sleep before being terminated.
              properties:
                seconds:
                  description: Seconds is the number of seconds to sleep.
                  format: int64
                  type: integer
              required:
              - seconds
              type: object
            tcpSocket:
              description: Deprecated. TCPSocket is NOT supported as a LifecycleHandler
                and kept for the backward compatibility. There are no validation of
                this field and lifecycle hooks will fail in runtime when tcp handler
                is specified.
              properties:
                host:
                  description: 'Optional: Host name to connect to, defaults to the
                    pod IP.'
                  type: string
                port:
                  anyOf:
                  - type: integer
                  - type: string
                  description: |-
                    Number or name of the port to access on the container.
                    Number must be in the range 1 to 65535.
                    Name must be an IANA_SVC_NAME.
                  x-kubernetes-int-or-string: true
              required:
              - port
              type: object
          type: object
        stopSignal:
          description: StopSignal defines which signal will be sent to a container
            when it is being stopped. If not specified, the default is defined by
            the container runtime in use. StopSignal can only be set for Pods with
            a non-empty .spec.os.name
          type: string
      type: object
    Volumes:
      description: Volumes
      items:
        description: Volume represents a named volume in a pod that may be accessed
          by any container in the pod.
        properties:
          awsElasticBlockStore:
            description: 'awsElasticBlockStore represents an AWS Disk resource that
              is attached to a kubelet''s host machine and then exposed to the pod.
              Deprecated: AWSElasticBlockStore is deprecated. All operations for the
              in-tree awsElasticBlockStore type are redirected to the ebs.csi.aws.com
              CSI driver. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
            properties:
              fsType:
                description: 'fsType is the filesystem type of the volume that you
                  want to mount. Tip: Ensure that the filesystem type is supported
                  by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly
                  inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
                type: string
              partition:
                description: 'partition is the partition in the volume that you want
                  to mount. If omitted, the default is to mount by volume name. Examples:
                  For volume /dev/sda1, you specify the partition as "1". Similarly,
                  the volume partition for /dev/sda is "0" (or you can leave the property
                  empty).'
                format: int32
                type: integer
              readOnly:
                description: 'readOnly value true will force the readOnly setting
                  in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
                type: boolean
              volumeID:
                description: 'volumeID is unique ID of the persistent disk resource
                  in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore'
                type: string
            required:
            - volumeID
            type: object
          azureDisk:
            description: 'azureDisk represents an Azure Data Disk mount on the host
              and bind mount to the pod. Deprecated: AzureDisk is deprecated. All
              operations for the in-tree azureDisk type are redirected to the disk.csi.azure.com
              CSI driver.'
            properties:
              cachingMode:
                description: 'cachingMode is the Host Caching mode: None, Read Only,
                  Read Write.'
                type: string
              diskName:
                description: diskName is the Name of the data disk in the blob storage
                type: string
              diskURI:
                description: diskURI is the URI of data disk in the blob storage
                type: string
              fsType:
                default: ext4
                description: fsType is Filesystem type to mount. Must be a filesystem
                  type supported by the host operating system. Ex. "ext4", "xfs",
                  "ntfs". Implicitly inferred to be "ext4" if unspecified.
                type: string
              kind:
                description: 'kind expected values are Shared: multiple blob disks
                  per storage account  Dedicated: single blob disk per storage account  Managed:
                  azure managed data disk (only in managed availability set). defaults
                  to shared'
                type: string
              readOnly:
                default: false
                description: readOnly Defaults to false (read/write). ReadOnly here
                  will force the ReadOnly setting in VolumeMounts.
                type: boolean
            required:
            - diskName
            - diskURI
            type: object
          azureFile:
            description: 'azureFile represents an Azure File Service mount on the
              host and bind mount to the pod. Deprecated: AzureFile is deprecated.
              All operations for the in-tree azureFile type are redirected to the
              file.csi.azure.com CSI driver.'
            properties:
              readOnly:
                description: readOnly defaults to false (read/write). ReadOnly here
                  will force the ReadOnly setting in VolumeMounts.
                type: boolean
              secretName:
                description: secretName is the  name of secret that contains Azure
                  Storage Account Name and Key
                type: string
              shareName:
                description: shareName is the azure share Name
                type: string
            required:
            - secretName
            - shareName
            type: object
          cephfs:
            description: 'cephFS represents a Ceph FS mount on the host that shares
              a pod''s lifetime. Deprecated: CephFS is deprecated and the in-tree
              cephfs type is no longer supported.'
            properties:
              monitors:
                description: 'monitors is Required: Monitors is a collection of Ceph
                  monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
                items:
                  type: string
                type: array
                x-kubernetes-list-type: atomic
              path:
                description: 'path is Optional: Used as the mounted root, rather than
                  the full Ceph tree, default is /'
                type: string
              readOnly:
                description: 'readOnly is Optional: Defaults to false (read/write).
                  ReadOnly here will force the ReadOnly setting in VolumeMounts. More
                  info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
                type: boolean
              secretFile:
                description: 'secretFile is Optional: SecretFile is the path to key
                  ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
                type: string
              secretRef:
                description: 'secretRef is Optional: SecretRef is reference to the
                  authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
                properties:
                  name:
                    default: ''
                    description: 'Name of the referent. This field is effectively
                      required, but due to backwards compatibility is allowed to be
                      empty. Instances of this type with an empty value here are almost
                      certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              user:
                description: 'user is optional: User is the rados user name, default
                  is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it'
                type: string
            required:
            - monitors
            type: object
          cinder:
            description: 'cinder represents a cinder volume attached and mounted on
              kubelets host machine. Deprecated: Cinder is deprecated. All operations
              for the in-tree cinder type are redirected to the cinder.csi.openstack.org
              CSI driver. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
            properties:
              fsType:
                description: 'fsType is the filesystem type to mount. Must be a filesystem
                  type supported by the host operating system. Examples: "ext4", "xfs",
                  "ntfs". Implicitly inferred to be "ext4" if unspecified. More info:
                  https://examples.k8s.io/mysql-cinder-pd/README.md'
                type: string
              readOnly:
                description: 'readOnly defaults to false (read/write). ReadOnly here
                  will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md'
                type: boolean
              secretRef:
                description: 'secretRef is optional: points to a secret object containing
                  parameters used to connect to OpenStack.'
                properties:
                  name:
                    default: ''
                    description: 'Name of the referent. This field is effectively
                      required, but due to backwards compatibility is allowed to be
                      empty. Instances of this type with an empty value here are almost
                      certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              volumeID:
                description: |-
                  volumeID used to identify the volume in cinder.
                  More info: https://examples.k8s.io/mysql-cinder-pd/README.md
                type: string
            required:
            - volumeID
            type: object
          configMap:
            description: configMap represents a configMap that should populate this
              volume
            properties:
              defaultMode:
                description: 'defaultMode is optional: mode bits used to set permissions
                  on created files by default. Must be an octal value between 0000
                  and 0777 or a decimal value between 0 and 511. YAML accepts both
                  octal and decimal values, JSON requires decimal values for mode
                  bits. Defaults to 0644. Directories within the path are not affected
                  by this setting. This might be in conflict with other options that
                  affect the file mode, like fsGroup, and the result can be other
                  mode bits set.'
                format: int32
                type: integer
              items:
                description: items if unspecified, each key-value pair in the Data
                  field of the referenced ConfigMap will be projected into the volume
                  as a file whose name is the key and content is the value. If specified,
                  the listed keys will be projected into the specified paths, and
                  unlisted keys will not be present. If a key is specified which is
                  not present in the ConfigMap, the volume setup will error unless
                  it is marked optional. Paths must be relative and may not contain
                  the '..' path or start with '..'.
                items:
                  description: Maps a string key to a path within a volume.
                  properties:
                    key:
                      description: key is the key to project.
                      type: string
                    mode:
                      description: 'mode is Optional: mode bits used to set permissions
                        on this file. Must be an octal value between 0000 and 0777
                        or a decimal value between 0 and 511. YAML accepts both octal
                        and decimal values, JSON requires decimal values for mode
                        bits. If not specified, the volume defaultMode will be used.
                        This might be in conflict with other options that affect the
                        file mode, like fsGroup, and the result can be other mode
                        bits set.'
                      format: int32
                      type: integer
                    path:
                      description: |-
                        path is the relative path of the file to map the key to.
                        May not be an absolute path.
                        May not contain the path element '..'.
                        May not start with the string '..'.
                      type: string
                  required:
                  - key
                  - path
                  type: object
                type: array
                x-kubernetes-list-type: atomic
              name:
                default: ''
                description: 'Name of the referent. This field is effectively required,
                  but due to backwards compatibility is allowed to be empty. Instances
                  of this type with an empty value here are almost certainly wrong.
                  More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                type: string
              optional:
                description: optional specify whether the ConfigMap or its keys must
                  be defined
                type: boolean
            type: object
            x-kubernetes-map-type: atomic
          csi:
            description: csi (Container Storage Interface) represents ephemeral storage
              that is handled by certain external CSI drivers.
            properties:
              driver:
                description: driver is the name of the CSI driver that handles this
                  volume. Consult with your admin for the correct name as registered
                  in the cluster.
                type: string
              fsType:
                description: fsType to mount. Ex. "ext4", "xfs", "ntfs". If not provided,
                  the empty value is passed to the associated CSI driver which will
                  determine the default filesystem to apply.
                type: string
              nodePublishSecretRef:
                description: nodePublishSecretRef is a reference to the secret object
                  containing sensitive information to pass to the CSI driver to complete
                  the CSI NodePublishVolume and NodeUnpublishVolume calls. This field
                  is optional, and  may be empty if no secret is required. If the
                  secret object contains more than one secret, all secret references
                  are passed.
                properties:
                  name:
                    default: ''
                    description: 'Name of the referent. This field is effectively
                      required, but due to backwards compatibility is allowed to be
                      empty. Instances of this type with an empty value here are almost
                      certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              readOnly:
                description: |-
                  readOnly specifies a read-only configuration for the volume.
                  Defaults to false (read/write).
                type: boolean
              volumeAttributes:
                additionalProperties:
                  type: string
                description: volumeAttributes stores driver-specific properties that
                  are passed to the CSI driver. Consult your driver's documentation
                  for supported values.
                type: object
            required:
            - driver
            type: object
          downwardAPI:
            description: downwardAPI represents downward API about the pod that should
              populate this volume
            properties:
              defaultMode:
                description: 'Optional: mode bits to use on created files by default.
                  Must be a Optional: mode bits used to set permissions on created
                  files by default. Must be an octal value between 0000 and 0777 or
                  a decimal value between 0 and 511. YAML accepts both octal and decimal
                  values, JSON requires decimal values for mode bits. Defaults to
                  0644. Directories within the path are not affected by this setting.
                  This might be in conflict with other options that affect the file
                  mode, like fsGroup, and the result can be other mode bits set.'
                format: int32
                type: integer
              items:
                description: Items is a list of downward API volume file
                items:
                  description: DownwardAPIVolumeFile represents information to create
                    the file containing the pod field
                  properties:
                    fieldRef:
                      description: 'Required: Selects a field of the pod: only annotations,
                        labels, name, namespace and uid are supported.'
                      properties:
                        apiVersion:
                          description: Version of the schema the FieldPath is written
                            in terms of, defaults to "v1".
                          type: string
                        fieldPath:
                          description: Path of the field to select in the specified
                            API version.
                          type: string
                      required:
                      - fieldPath
                      type: object
                      x-kubernetes-map-type: atomic
                    mode:
                      description: 'Optional: mode bits used to set permissions on
                        this file, must be an octal value between 0000 and 0777 or
                        a decimal value between 0 and 511. YAML accepts both octal
                        and decimal values, JSON requires decimal values for mode
                        bits. If not specified, the volume defaultMode will be used.
                        This might be in conflict with other options that affect the
                        file mode, like fsGroup, and the result can be other mode
                        bits set.'
                      format: int32
                      type: integer
                    path:
                      description: 'Required: Path is  the relative path name of the
                        file to be created. Must not be absolute or contain the ''..''
                        path. Must be utf-8 encoded. The first item of the relative
                        path must not start with ''..'''
                      type: string
                    resourceFieldRef:
                      description: 'Selects a resource of the container: only resources
                        limits and requests (limits.cpu, limits.memory, requests.cpu
                        and requests.memory) are currently supported.'
                      properties:
                        containerName:
                          description: 'Container name: required for volumes, optional
                            for env vars'
                          type: string
                        divisor:
                          anyOf:
                          - type: integer
                          - type: string
                          description: Specifies the output format of the exposed
                            resources, defaults to "1"
                          pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
                          x-kubernetes-int-or-string: true
                        resource:
                          description: 'Required: resource to select'
                          type: string
                      required:
                      - resource
                      type: object
                      x-kubernetes-map-type: atomic
                  required:
                  - path
                  type: object
                type: array
                x-kubernetes-list-type: atomic
            type: object
          emptyDir:
            description: 'emptyDir represents a temporary directory that shares a
              pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
            properties:
              medium:
                description: 'medium represents what type of storage medium should
                  back this directory. The default is "" which means to use the node''s
                  default medium. Must be an empty string (default) or Memory. More
                  info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
                type: string
              sizeLimit:
                anyOf:
                - type: integer
                - type: string
                description: 'sizeLimit is the total amount of local storage required
                  for this EmptyDir volume. The size limit is also applicable for
                  memory medium. The maximum usage on memory medium EmptyDir would
                  be the minimum value between the SizeLimit specified here and the
                  sum of memory limits of all containers in a pod. The default is
                  nil which means that the limit is undefined. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
                pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
                x-kubernetes-int-or-string: true
            type: object
          ephemeral:
            description: |-
              ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity
                  tracking are needed,
              c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through
                  a PersistentVolumeClaim (see EphemeralVolumeSource for more
                  information on the connection between this volume type
                  and PersistentVolumeClaim).
              Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. A pod can use both types of ephemeral volumes and persistent volumes at the same time.
            properties:
              volumeClaimTemplate:
                description: Will be used to create a stand-alone PVC to provision
                  the volume. The pod in which this EphemeralVolumeSource is embedded
                  will be the owner of the PVC, i.e. the PVC will be deleted together
                  with the pod.  The name of the PVC will be `<pod name>-<volume name>`
                  where `<volume name>` is the name from the `PodSpec.Volumes` array
                  entry. Pod validation will reject the pod if the concatenated name
                  is not valid for a PVC (for example, too long). An existing PVC
                  with that name that is not owned by the pod will *not* be used for
                  the pod to avoid using an unrelated volume by mistake. Starting
                  the pod is then blocked until the unrelated PVC is removed. If such
                  a pre-created PVC is meant to be used by the pod, the PVC has to
                  updated with an owner reference to the pod once the pod exists.
                  Normally this should not be necessary, but it may be useful when
                  manually reconstructing a broken cluster. This field is read-only
                  and no changes will be made by Kubernetes to the PVC after it has
                  been created. Required, must not be nil.
                properties:
                  metadata:
                    description: May contain labels and annotations that will be copied
                      into the PVC when creating it. No other fields are allowed and
                      will be rejected during validation.
                    type: object
                  spec:
                    description: The specification for the PersistentVolumeClaim.
                      The entire content is copied unchanged into the PVC that gets
                      created from this template. The same fields as in a PersistentVolumeClaim
                      are also valid here.
                    properties:
                      accessModes:
                        description: 'accessModes contains the desired access modes
                          the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1'
                        items:
                          type: string
                        type: array
                        x-kubernetes-list-type: atomic
                      dataSource:
                        description: 'dataSource field can be used to specify either:
                          * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)
                          * An existing PVC (PersistentVolumeClaim) If the provisioner
                          or an external controller can support the specified data
                          source, it will create a new volume based on the contents
                          of the specified data source. When the AnyVolumeDataSource
                          feature gate is enabled, dataSource contents will be copied
                          to dataSourceRef, and dataSourceRef contents will be copied
                          to dataSource when dataSourceRef.namespace is not specified.
                          If the namespace is specified, then dataSourceRef will not
                          be copied to dataSource.'
                        properties:
                          apiGroup:
                            description: APIGroup is the group for the resource being
                              referenced. If APIGroup is not specified, the specified
                              Kind must be in the core API group. For any other third-party
                              types, APIGroup is required.
                            type: string
                          kind:
                            description: Kind is the type of resource being referenced
                            type: string
                          name:
                            description: Name is the name of resource being referenced
                            type: string
                        required:
                        - kind
                        - name
                        type: object
                        x-kubernetes-map-type: atomic
                      dataSourceRef:
                        description: |-
                          dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef
                            allows any non-core object, as well as PersistentVolumeClaim objects.
                          * While dataSource ignores disallowed values (dropping them), dataSourceRef
                            preserves all values, and generates an error if a disallowed value is
                            specified.
                          * While dataSource only allows local objects, dataSourceRef allows objects
                            in any namespaces.
                          (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled.
                        properties:
                          apiGroup:
                            description: APIGroup is the group for the resource being
                              referenced. If APIGroup is not specified, the specified
                              Kind must be in the core API group. For any other third-party
                              types, APIGroup is required.
                            type: string
                          kind:
                            description: Kind is the type of resource being referenced
                            type: string
                          name:
                            description: Name is the name of resource being referenced
                            type: string
                          namespace:
                            description: Namespace is the namespace of resource being
                              referenced Note that when a namespace is specified,
                              a gateway.networking.k8s.io/ReferenceGrant object is
                              required in the referent namespace to allow that namespace's
                              owner to accept the reference. See the ReferenceGrant
                              documentation for details. (Alpha) This field requires
                              the CrossNamespaceVolumeDataSource feature gate to be
                              enabled.
                            type: string
                        required:
                        - kind
                        - name
                        type: object
                      resources:
                        description: 'resources represents the minimum resources the
                          volume should have. If RecoverVolumeExpansionFailure feature
                          is enabled users are allowed to specify resource requirements
                          that are lower than previous value but must still be higher
                          than capacity recorded in the status field of the claim.
                          More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
                        properties:
                          limits:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
                              x-kubernetes-int-or-string: true
                            description: 'Limits describes the maximum amount of compute
                              resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
                            type: object
                          requests:
                            additionalProperties:
                              anyOf:
                              - type: integer
                              - type: string
                              pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
                              x-kubernetes-int-or-string: true
                            description: 'Requests describes the minimum amount of
                              compute resources required. If Requests is omitted for
                              a container, it defaults to Limits if that is explicitly
                              specified, otherwise to an implementation-defined value.
                              Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
                            type: object
                        type: object
                      selector:
                        description: selector is a label query over volumes to consider
                          for binding.
                        properties:
                          matchExpressions:
                            description: matchExpressions is a list of label selector
                              requirements. The requirements are ANDed.
                            items:
                              description: A label selector requirement is a selector
                                that contains values, a key, and an operator that
                                relates the key and values.
                              properties:
                                key:
                                  description: key is the label key that the selector
                                    applies to.
                                  type: string
                                operator:
                                  description: operator represents a key's relationship
                                    to a set of values. Valid operators are In, NotIn,
                                    Exists and DoesNotExist.
                                  type: string
                                values:
                                  description: values is an array of string values.
                                    If the operator is In or NotIn, the values array
                                    must be non-empty. If the operator is Exists or
                                    DoesNotExist, the values array must be empty.
                                    This array is replaced during a strategic merge
                                    patch.
                                  items:
                                    type: string
                                  type: array
                                  x-kubernetes-list-type: atomic
                              required:
                              - key
                              - operator
                              type: object
                            type: array
                            x-kubernetes-list-type: atomic
                          matchLabels:
                            additionalProperties:
                              type: string
                            description: matchLabels is a map of {key,value} pairs.
                              A single {key,value} in the matchLabels map is equivalent
                              to an element of matchExpressions, whose key field is
                              "key", the operator is "In", and the values array contains
                              only "value". The requirements are ANDed.
                            type: object
                        type: object
                        x-kubernetes-map-type: atomic
                      storageClassName:
                        description: 'storageClassName is the name of the StorageClass
                          required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1'
                        type: string
                      volumeAttributesClassName:
                        description: 'volumeAttributesClassName may be used to set
                          the VolumeAttributesClass used by this claim. If specified,
                          the CSI driver will create or update the volume with the
                          attributes defined in the corresponding VolumeAttributesClass.
                          This has a different purpose than storageClassName, it can
                          be changed after the claim is created. An empty string or
                          nil value indicates that no VolumeAttributesClass will be
                          applied to the claim. If the claim enters an Infeasible
                          error state, this field can be reset to its previous value
                          (including nil) to cancel the modification. If the resource
                          referred to by volumeAttributesClass does not exist, this
                          PersistentVolumeClaim will be set to a Pending state, as
                          reflected by the modifyVolumeStatus field, until such as
                          a resource exists. More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/'
                        type: string
                      volumeMode:
                        description: volumeMode defines what type of volume is required
                          by the claim. Value of Filesystem is implied when not included
                          in claim spec.
                        type: string
                      volumeName:
                        description: volumeName is the binding reference to the PersistentVolume
                          backing this claim.
                        type: string
                    type: object
                required:
                - spec
                type: object
            type: object
          fc:
            description: fc represents a Fibre Channel resource that is attached to
              a kubelet's host machine and then exposed to the pod.
            properties:
              fsType:
                description: fsType is the filesystem type to mount. Must be a filesystem
                  type supported by the host operating system. Ex. "ext4", "xfs",
                  "ntfs". Implicitly inferred to be "ext4" if unspecified.
                type: string
              lun:
                description: 'lun is Optional: FC target lun number'
                format: int32
                type: integer
              readOnly:
                description: 'readOnly is Optional: Defaults to false (read/write).
                  ReadOnly here will force the ReadOnly setting in VolumeMounts.'
                type: boolean
              targetWWNs:
                description: 'targetWWNs is Optional: FC target worldwide names (WWNs)'
                items:
                  type: string
                type: array
                x-kubernetes-list-type: atomic
              wwids:
                description: 'wwids Optional: FC volume world wide identifiers (wwids)
                  Either wwids or combination of targetWWNs and lun must be set, but
                  not both simultaneously.'
                items:
                  type: string
                type: array
                x-kubernetes-list-type: atomic
            type: object
          flexVolume:
            description: 'flexVolume represents a generic volume resource that is
              provisioned/attached using an exec based plugin. Deprecated: FlexVolume
              is deprecated. Consider using a CSIDriver instead.'
            properties:
              driver:
                description: driver is the name of the driver to use for this volume.
                type: string
              fsType:
                description: fsType is the filesystem type to mount. Must be a filesystem
                  type supported by the host operating system. Ex. "ext4", "xfs",
                  "ntfs". The default filesystem depends on FlexVolume script.
                type: string
              options:
                additionalProperties:
                  type: string
                description: 'options is Optional: this field holds extra command
                  options if any.'
                type: object
              readOnly:
                description: 'readOnly is Optional: defaults to false (read/write).
                  ReadOnly here will force the ReadOnly setting in VolumeMounts.'
                type: boolean
              secretRef:
                description: 'secretRef is Optional: secretRef is reference to the
                  secret object containing sensitive information to pass to the plugin
                  scripts. This may be empty if no secret object is specified. If
                  the secret object contains more than one secret, all secrets are
                  passed to the plugin scripts.'
                properties:
                  name:
                    default: ''
                    description: 'Name of the referent. This field is effectively
                      required, but due to backwards compatibility is allowed to be
                      empty. Instances of this type with an empty value here are almost
                      certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                type: object
                x-kubernetes-map-type: atomic
            required:
            - driver
            type: object
          flocker:
            description: 'flocker represents a Flocker volume attached to a kubelet''s
              host machine. This depends on the Flocker control service being running.
              Deprecated: Flocker is deprecated and the in-tree flocker type is no
              longer supported.'
            properties:
              datasetName:
                description: datasetName is Name of the dataset stored as metadata
                  -> name on the dataset for Flocker should be considered as deprecated
                type: string
              datasetUUID:
                description: datasetUUID is the UUID of the dataset. This is unique
                  identifier of a Flocker dataset
                type: string
            type: object
          gcePersistentDisk:
            description: 'gcePersistentDisk represents a GCE Disk resource that is
              attached to a kubelet''s host machine and then exposed to the pod. Deprecated:
              GCEPersistentDisk is deprecated. All operations for the in-tree gcePersistentDisk
              type are redirected to the pd.csi.storage.gke.io CSI driver. More info:
              https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
            properties:
              fsType:
                description: 'fsType is filesystem type of the volume that you want
                  to mount. Tip: Ensure that the filesystem type is supported by the
                  host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly
                  inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
                type: string
              partition:
                description: 'partition is the partition in the volume that you want
                  to mount. If omitted, the default is to mount by volume name. Examples:
                  For volume /dev/sda1, you specify the partition as "1". Similarly,
                  the volume partition for /dev/sda is "0" (or you can leave the property
                  empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
                format: int32
                type: integer
              pdName:
                description: 'pdName is unique name of the PD resource in GCE. Used
                  to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
                type: string
              readOnly:
                description: 'readOnly here will force the ReadOnly setting in VolumeMounts.
                  Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk'
                type: boolean
            required:
            - pdName
            type: object
          gitRepo:
            description: 'gitRepo represents a git repository at a particular revision.
              Deprecated: GitRepo is deprecated. To provision a container with a git
              repo, mount an EmptyDir into an InitContainer that clones the repo using
              git, then mount the EmptyDir into the Pod''s container.'
            properties:
              directory:
                description: directory is the target directory name. Must not contain
                  or start with '..'.  If '.' is supplied, the volume directory will
                  be the git repository.  Otherwise, if specified, the volume will
                  contain the git repository in the subdirectory with the given name.
                type: string
              repository:
                description: repository is the URL
                type: string
              revision:
                description: revision is the commit hash for the specified revision.
                type: string
            required:
            - repository
            type: object
          glusterfs:
            description: 'glusterfs represents a Glusterfs mount on the host that
              shares a pod''s lifetime. Deprecated: Glusterfs is deprecated and the
              in-tree glusterfs type is no longer supported.'
            properties:
              endpoints:
                description: endpoints is the endpoint name that details Glusterfs
                  topology.
                type: string
              path:
                description: 'path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
                type: string
              readOnly:
                description: 'readOnly here will force the Glusterfs volume to be
                  mounted with read-only permissions. Defaults to false. More info:
                  https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod'
                type: boolean
            required:
            - endpoints
            - path
            type: object
          hostPath:
            description: 'hostPath represents a pre-existing file or directory on
              the host machine that is directly exposed to the container. This is
              generally used for system agents or other privileged things that are
              allowed to see the host machine. Most containers will NOT need this.
              More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
            properties:
              path:
                description: 'path of the directory on the host. If the path is a
                  symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
                type: string
              type:
                description: 'type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath'
                type: string
            required:
            - path
            type: object
          image:
            description: 'image represents an OCI object (a container image or artifact)
              pulled and mounted on the kubelet''s host machine. The volume is resolved
              at pod startup depending on which PullPolicy value is provided: - Always:
              the kubelet always attempts to pull the reference. Container creation
              will fail If the pull fails. - Never: the kubelet never pulls the reference
              and only uses a local image or artifact. Container creation will fail
              if the reference isn''t present. - IfNotPresent: the kubelet pulls if
              the reference isn''t already present on disk. Container creation will
              fail if the reference isn''t present and the pull fails. The volume
              gets re-resolved if the pod gets deleted and recreated, which means
              that new remote content will become available on pod recreation. A failure
              to resolve or pull the image during pod startup will block containers
              from starting and may add significant latency. Failures will be retried
              using normal volume backoff and will be reported on the pod reason and
              message. The types of objects that may be mounted by this volume are
              defined by the container runtime implementation on a host machine and
              at minimum must include all valid types supported by the container image
              field. The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath)
              by merging the manifest layers in the same way as for container images.
              The volume will be mounted read-only (ro) and non-executable files (noexec).
              Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath)
              before 1.33. The field spec.securityContext.fsGroupChangePolicy has
              no effect on this volume type.'
            properties:
              pullPolicy:
                description: 'Policy for pulling OCI objects. Possible values are:
                  Always: the kubelet always attempts to pull the reference. Container
                  creation will fail If the pull fails. Never: the kubelet never pulls
                  the reference and only uses a local image or artifact. Container
                  creation will fail if the reference isn''t present. IfNotPresent:
                  the kubelet pulls if the reference isn''t already present on disk.
                  Container creation will fail if the reference isn''t present and
                  the pull fails. Defaults to Always if :latest tag is specified,
                  or IfNotPresent otherwise.'
                type: string
              reference:
                description: 'Required: Image or artifact reference to be used. Behaves
                  in the same way as pod.spec.containers[*].image. Pull secrets will
                  be assembled in the same way as for the container image by looking
                  up node credentials, SA image pull secrets, and pod spec image pull
                  secrets. More info: https://kubernetes.io/docs/concepts/containers/images
                  This field is optional to allow higher level config management to
                  default or override container images in workload controllers like
                  Deployments and StatefulSets.'
                type: string
            type: object
          iscsi:
            description: 'iscsi represents an ISCSI Disk resource that is attached
              to a kubelet''s host machine and then exposed to the pod. More info:
              https://kubernetes.io/docs/concepts/storage/volumes/#iscsi'
            properties:
              chapAuthDiscovery:
                description: chapAuthDiscovery defines whether support iSCSI Discovery
                  CHAP authentication
                type: boolean
              chapAuthSession:
                description: chapAuthSession defines whether support iSCSI Session
                  CHAP authentication
                type: boolean
              fsType:
                description: 'fsType is the filesystem type of the volume that you
                  want to mount. Tip: Ensure that the filesystem type is supported
                  by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly
                  inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi'
                type: string
              initiatorName:
                description: initiatorName is the custom iSCSI Initiator Name. If
                  initiatorName is specified with iscsiInterface simultaneously, new
                  iSCSI interface <target portal>:<volume name> will be created for
                  the connection.
                type: string
              iqn:
                description: iqn is the target iSCSI Qualified Name.
                type: string
              iscsiInterface:
                default: default
                description: iscsiInterface is the interface Name that uses an iSCSI
                  transport. Defaults to 'default' (tcp).
                type: string
              lun:
                description: lun represents iSCSI Target Lun number.
                format: int32
                type: integer
              portals:
                description: portals is the iSCSI Target Portal List. The portal is
                  either an IP or ip_addr:port if the port is other than default (typically
                  TCP ports 860 and 3260).
                items:
                  type: string
                type: array
                x-kubernetes-list-type: atomic
              readOnly:
                description: |-
                  readOnly here will force the ReadOnly setting in VolumeMounts.
                  Defaults to false.
                type: boolean
              secretRef:
                description: secretRef is the CHAP Secret for iSCSI target and initiator
                  authentication
                properties:
                  name:
                    default: ''
                    description: 'Name of the referent. This field is effectively
                      required, but due to backwards compatibility is allowed to be
                      empty. Instances of this type with an empty value here are almost
                      certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              targetPortal:
                description: targetPortal is iSCSI Target Portal. The Portal is either
                  an IP or ip_addr:port if the port is other than default (typically
                  TCP ports 860 and 3260).
                type: string
            required:
            - iqn
            - lun
            - targetPortal
            type: object
          name:
            description: 'name of the volume. Must be a DNS_LABEL and unique within
              the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
            type: string
          nfs:
            description: 'nfs represents an NFS mount on the host that shares a pod''s
              lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
            properties:
              path:
                description: 'path that is exported by the NFS server. More info:
                  https://kubernetes.io/docs/concepts/storage/volumes#nfs'
                type: string
              readOnly:
                description: 'readOnly here will force the NFS export to be mounted
                  with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
                type: boolean
              server:
                description: 'server is the hostname or IP address of the NFS server.
                  More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs'
                type: string
            required:
            - path
            - server
            type: object
          persistentVolumeClaim:
            description: 'persistentVolumeClaimVolumeSource represents a reference
              to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
            properties:
              claimName:
                description: 'claimName is the name of a PersistentVolumeClaim in
                  the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims'
                type: string
              readOnly:
                description: |-
                  readOnly Will force the ReadOnly setting in VolumeMounts.
                  Default false.
                type: boolean
            required:
            - claimName
            type: object
          photonPersistentDisk:
            description: 'photonPersistentDisk represents a PhotonController persistent
              disk attached and mounted on kubelets host machine. Deprecated: PhotonPersistentDisk
              is deprecated and the in-tree photonPersistentDisk type is no longer
              supported.'
            properties:
              fsType:
                description: fsType is the filesystem type to mount. Must be a filesystem
                  type supported by the host operating system. Ex. "ext4", "xfs",
                  "ntfs". Implicitly inferred to be "ext4" if unspecified.
                type: string
              pdID:
                description: pdID is the ID that identifies Photon Controller persistent
                  disk
                type: string
            required:
            - pdID
            type: object
          portworxVolume:
            description: 'portworxVolume represents a portworx volume attached and
              mounted on kubelets host machine. Deprecated: PortworxVolume is deprecated.
              All operations for the in-tree portworxVolume type are redirected to
              the pxd.portworx.com CSI driver when the CSIMigrationPortworx feature-gate
              is on.'
            properties:
              fsType:
                description: fSType represents the filesystem type to mount Must be
                  a filesystem type supported by the host operating system. Ex. "ext4",
                  "xfs". Implicitly inferred to be "ext4" if unspecified.
                type: string
              readOnly:
                description: readOnly defaults to false (read/write). ReadOnly here
                  will force the ReadOnly setting in VolumeMounts.
                type: boolean
              volumeID:
                description: volumeID uniquely identifies a Portworx volume
                type: string
            required:
            - volumeID
            type: object
          projected:
            description: projected items for all in one resources secrets, configmaps,
              and downward API
            properties:
              defaultMode:
                description: defaultMode are the mode bits used to set permissions
                  on created files by default. Must be an octal value between 0000
                  and 0777 or a decimal value between 0 and 511. YAML accepts both
                  octal and decimal values, JSON requires decimal values for mode
                  bits. Directories within the path are not affected by this setting.
                  This might be in conflict with other options that affect the file
                  mode, like fsGroup, and the result can be other mode bits set.
                format: int32
                type: integer
              sources:
                description: sources is the list of volume projections. Each entry
                  in this list handles one source.
                items:
                  description: Projection that may be projected along with other supported
                    volume types. Exactly one of these fields must be set.
                  properties:
                    clusterTrustBundle:
                      description: ClusterTrustBundle allows a pod to access the `.spec.trustBundle`
                        field of ClusterTrustBundle objects in an auto-updating file.
                        Alpha, gated by the ClusterTrustBundleProjection feature gate.
                        ClusterTrustBundle objects can either be selected by name,
                        or by the combination of signer name and a label selector.
                        Kubelet performs aggressive normalization of the PEM contents
                        written into the pod filesystem.  Esoteric PEM features such
                        as inter-block comments and block headers are stripped.  Certificates
                        are deduplicated. The ordering of certificates within the
                        file is arbitrary, and Kubelet may change the order over time.
                      properties:
                        labelSelector:
                          description: Select all ClusterTrustBundles that match this
                            label selector.  Only has effect if signerName is set.  Mutually-exclusive
                            with name.  If unset, interpreted as "match nothing".  If
                            set but empty, interpreted as "match everything".
                          properties:
                            matchExpressions:
                              description: matchExpressions is a list of label selector
                                requirements. The requirements are ANDed.
                              items:
                                description: A label selector requirement is a selector
                                  that contains values, a key, and an operator that
                                  relates the key and values.
                                properties:
                                  key:
                                    description: key is the label key that the selector
                                      applies to.
                                    type: string
                                  operator:
                                    description: operator represents a key's relationship
                                      to a set of values. Valid operators are In,
                                      NotIn, Exists and DoesNotExist.
                                    type: string
                                  values:
                                    description: values is an array of string values.
                                      If the operator is In or NotIn, the values array
                                      must be non-empty. If the operator is Exists
                                      or DoesNotExist, the values array must be empty.
                                      This array is replaced during a strategic merge
                                      patch.
                                    items:
                                      type: string
                                    type: array
                                    x-kubernetes-list-type: atomic
                                required:
                                - key
                                - operator
                                type: object
                              type: array
                              x-kubernetes-list-type: atomic
                            matchLabels:
                              additionalProperties:
                                type: string
                              description: matchLabels is a map of {key,value} pairs.
                                A single {key,value} in the matchLabels map is equivalent
                                to an element of matchExpressions, whose key field
                                is "key", the operator is "In", and the values array
                                contains only "value". The requirements are ANDed.
                              type: object
                          type: object
                          x-kubernetes-map-type: atomic
                        name:
                          description: Select a single ClusterTrustBundle by object
                            name.  Mutually-exclusive with signerName and labelSelector.
                          type: string
                        optional:
                          description: If true, don't block pod startup if the referenced
                            ClusterTrustBundle(s) aren't available.  If using name,
                            then the named ClusterTrustBundle is allowed not to exist.  If
                            using signerName, then the combination of signerName and
                            labelSelector is allowed to match zero ClusterTrustBundles.
                          type: boolean
                        path:
                          description: Relative path from the volume root to write
                            the bundle.
                          type: string
                        signerName:
                          description: Select all ClusterTrustBundles that match this
                            signer name. Mutually-exclusive with name.  The contents
                            of all selected ClusterTrustBundles will be unified and
                            deduplicated.
                          type: string
                      required:
                      - path
                      type: object
                    configMap:
                      description: configMap information about the configMap data
                        to project
                      properties:
                        items:
                          description: items if unspecified, each key-value pair in
                            the Data field of the referenced ConfigMap will be projected
                            into the volume as a file whose name is the key and content
                            is the value. If specified, the listed keys will be projected
                            into the specified paths, and unlisted keys will not be
                            present. If a key is specified which is not present in
                            the ConfigMap, the volume setup will error unless it is
                            marked optional. Paths must be relative and may not contain
                            the '..' path or start with '..'.
                          items:
                            description: Maps a string key to a path within a volume.
                            properties:
                              key:
                                description: key is the key to project.
                                type: string
                              mode:
                                description: 'mode is Optional: mode bits used to
                                  set permissions on this file. Must be an octal value
                                  between 0000 and 0777 or a decimal value between
                                  0 and 511. YAML accepts both octal and decimal values,
                                  JSON requires decimal values for mode bits. If not
                                  specified, the volume defaultMode will be used.
                                  This might be in conflict with other options that
                                  affect the file mode, like fsGroup, and the result
                                  can be other mode bits set.'
                                format: int32
                                type: integer
                              path:
                                description: path is the relative path of the file
                                  to map the key to. May not be an absolute path.
                                  May not contain the path element '..'. May not start
                                  with the string '..'.
                                type: string
                            required:
                            - key
                            - path
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        name:
                          default: ''
                          description: 'Name of the referent. This field is effectively
                            required, but due to backwards compatibility is allowed
                            to be empty. Instances of this type with an empty value
                            here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                          type: string
                        optional:
                          description: optional specify whether the ConfigMap or its
                            keys must be defined
                          type: boolean
                      type: object
                      x-kubernetes-map-type: atomic
                    downwardAPI:
                      description: downwardAPI information about the downwardAPI data
                        to project
                      properties:
                        items:
                          description: Items is a list of DownwardAPIVolume file
                          items:
                            description: DownwardAPIVolumeFile represents information
                              to create the file containing the pod field
                            properties:
                              fieldRef:
                                description: 'Required: Selects a field of the pod:
                                  only annotations, labels, name, namespace and uid
                                  are supported.'
                                properties:
                                  apiVersion:
                                    description: Version of the schema the FieldPath
                                      is written in terms of, defaults to "v1".
                                    type: string
                                  fieldPath:
                                    description: Path of the field to select in the
                                      specified API version.
                                    type: string
                                required:
                                - fieldPath
                                type: object
                                x-kubernetes-map-type: atomic
                              mode:
                                description: 'Optional: mode bits used to set permissions
                                  on this file, must be an octal value between 0000
                                  and 0777 or a decimal value between 0 and 511. YAML
                                  accepts both octal and decimal values, JSON requires
                                  decimal values for mode bits. If not specified,
                                  the volume defaultMode will be used. This might
                                  be in conflict with other options that affect the
                                  file mode, like fsGroup, and the result can be other
                                  mode bits set.'
                                format: int32
                                type: integer
                              path:
                                description: 'Required: Path is  the relative path
                                  name of the file to be created. Must not be absolute
                                  or contain the ''..'' path. Must be utf-8 encoded.
                                  The first item of the relative path must not start
                                  with ''..'''
                                type: string
                              resourceFieldRef:
                                description: 'Selects a resource of the container:
                                  only resources limits and requests (limits.cpu,
                                  limits.memory, requests.cpu and requests.memory)
                                  are currently supported.'
                                properties:
                                  containerName:
                                    description: 'Container name: required for volumes,
                                      optional for env vars'
                                    type: string
                                  divisor:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    description: Specifies the output format of the
                                      exposed resources, defaults to "1"
                                    pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$"
                                    x-kubernetes-int-or-string: true
                                  resource:
                                    description: 'Required: resource to select'
                                    type: string
                                required:
                                - resource
                                type: object
                                x-kubernetes-map-type: atomic
                            required:
                            - path
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                      type: object
                    podCertificate:
                      description: Projects an auto-rotating credential bundle (private
                        key and certificate chain) that the pod can use either as
                        a TLS client or server. Kubelet generates a private key and
                        uses it to send a PodCertificateRequest to the named signer.  Once
                        the signer approves the request and issues a certificate chain,
                        Kubelet writes the key and certificate chain to the pod filesystem.  The
                        pod does not start until certificates have been issued for
                        each podCertificate projected volume source in its spec. Kubelet
                        will begin trying to rotate the certificate at the time indicated
                        by the signer using the PodCertificateRequest.Status.BeginRefreshAt
                        timestamp. Kubelet can write a single file, indicated by the
                        credentialBundlePath field, or separate files, indicated by
                        the keyPath and certificateChainPath fields. The credential
                        bundle is a single file in PEM format.  The first PEM entry
                        is the private key (in PKCS#8 format), and the remaining PEM
                        entries are the certificate chain issued by the signer (typically,
                        signers will return their certificate chain in leaf-to-root
                        order). Prefer using the credential bundle format, since your
                        application code can read it atomically.  If you use keyPath
                        and certificateChainPath, your application must make two separate
                        file reads. If these coincide with a certificate rotation,
                        it is possible that the private key and leaf certificate you
                        read may not correspond to each other.  Your application will
                        need to check for this condition, and re-read until they are
                        consistent. The named signer controls chooses the format of
                        the certificate it issues; consult the signer implementation's
                        documentation to learn how to use the certificates it issues.
                      properties:
                        certificateChainPath:
                          description: Write the certificate chain at this path in
                            the projected volume. Most applications should use credentialBundlePath.  When
                            using keyPath and certificateChainPath, your application
                            needs to check that the key and leaf certificate are consistent,
                            because it is possible to read the files mid-rotation.
                          type: string
                        credentialBundlePath:
                          description: Write the credential bundle at this path in
                            the projected volume. The credential bundle is a single
                            file that contains multiple PEM blocks. The first PEM
                            block is a PRIVATE KEY block, containing a PKCS#8 private
                            key. The remaining blocks are CERTIFICATE blocks, containing
                            the issued certificate chain from the signer (leaf and
                            any intermediates). Using credentialBundlePath lets your
                            Pod's application code make a single atomic read that
                            retrieves a consistent key and certificate chain.  If
                            you project them to separate files, your application code
                            will need to additionally check that the leaf certificate
                            was issued to the key.
                          type: string
                        keyPath:
                          description: Write the key at this path in the projected
                            volume. Most applications should use credentialBundlePath.  When
                            using keyPath and certificateChainPath, your application
                            needs to check that the key and leaf certificate are consistent,
                            because it is possible to read the files mid-rotation.
                          type: string
                        keyType:
                          description: The type of keypair Kubelet will generate for
                            the pod. Valid values are "RSA3072", "RSA4096", "ECDSAP256",
                            "ECDSAP384", "ECDSAP521", and "ED25519".
                          type: string
                        maxExpirationSeconds:
                          description: maxExpirationSeconds is the maximum lifetime
                            permitted for the certificate. Kubelet copies this value
                            verbatim into the PodCertificateRequests it generates
                            for this projection. If omitted, kube-apiserver will set
                            it to 86400(24 hours). kube-apiserver will reject values
                            shorter than 3600 (1 hour).  The maximum allowable value
                            is 7862400 (91 days). The signer implementation is then
                            free to issue a certificate with any lifetime *shorter*
                            than MaxExpirationSeconds, but no shorter than 3600 seconds
                            (1 hour).  This constraint is enforced by kube-apiserver.
                            `kubernetes.io` signers will never issue certificates
                            with a lifetime longer than 24 hours.
                          format: int32
                          type: integer
                        signerName:
                          description: Kubelet's generated CSRs will be addressed
                            to this signer.
                          type: string
                        userAnnotations:
                          additionalProperties:
                            type: string
                          description: |-
                            userAnnotations allow pod authors to pass additional information to
                            the signer implementation.  Kubernetes does not restrict or validate this
                            metadata in any way.
                            These values are copied verbatim into the `spec.unverifiedUserAnnotations` field of
                            the PodCertificateRequest objects that Kubelet creates.
                            Entries are subject to the same validation as object metadata annotations,
                            with the addition that all keys must be domain-prefixed. No restrictions
                            are placed on values, except an overall size limitation on the entire field.
                            Signers should document the keys and values they support. Signers should
                            deny requests that contain keys they do not recognize.
                          type: object
                      required:
                      - keyType
                      - signerName
                      type: object
                    secret:
                      description: secret information about the secret data to project
                      properties:
                        items:
                          description: items if unspecified, each key-value pair in
                            the Data field of the referenced Secret will be projected
                            into the volume as a file whose name is the key and content
                            is the value. If specified, the listed keys will be projected
                            into the specified paths, and unlisted keys will not be
                            present. If a key is specified which is not present in
                            the Secret, the volume setup will error unless it is marked
                            optional. Paths must be relative and may not contain the
                            '..' path or start with '..'.
                          items:
                            description: Maps a string key to a path within a volume.
                            properties:
                              key:
                                description: key is the key to project.
                                type: string
                              mode:
                                description: 'mode is Optional: mode bits used to
                                  set permissions on this file. Must be an octal value
                                  between 0000 and 0777 or a decimal value between
                                  0 and 511. YAML accepts both octal and decimal values,
                                  JSON requires decimal values for mode bits. If not
                                  specified, the volume defaultMode will be used.
                                  This might be in conflict with other options that
                                  affect the file mode, like fsGroup, and the result
                                  can be other mode bits set.'
                                format: int32
                                type: integer
                              path:
                                description: path is the relative path of the file
                                  to map the key to. May not be an absolute path.
                                  May not contain the path element '..'. May not start
                                  with the string '..'.
                                type: string
                            required:
                            - key
                            - path
                            type: object
                          type: array
                          x-kubernetes-list-type: atomic
                        name:
                          default: ''
                          description: 'Name of the referent. This field is effectively
                            required, but due to backwards compatibility is allowed
                            to be empty. Instances of this type with an empty value
                            here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                          type: string
                        optional:
                          description: optional field specify whether the Secret or
                            its key must be defined
                          type: boolean
                      type: object
                      x-kubernetes-map-type: atomic
                    serviceAccountToken:
                      description: serviceAccountToken is information about the serviceAccountToken
                        data to project
                      properties:
                        audience:
                          description: audience is the intended audience of the token.
                            A recipient of a token must identify itself with an identifier
                            specified in the audience of the token, and otherwise
                            should reject the token. The audience defaults to the
                            identifier of the apiserver.
                          type: string
                        expirationSeconds:
                          description: expirationSeconds is the requested duration
                            of validity of the service account token. As the token
                            approaches expiration, the kubelet volume plugin will
                            proactively rotate the service account token. The kubelet
                            will start trying to rotate the token if the token is
                            older than 80 percent of its time to live or if the token
                            is older than 24 hours.Defaults to 1 hour and must be
                            at least 10 minutes.
                          format: int64
                          type: integer
                        path:
                          description: path is the path relative to the mount point
                            of the file to project the token into.
                          type: string
                      required:
                      - path
                      type: object
                  type: object
                type: array
                x-kubernetes-list-type: atomic
            type: object
          quobyte:
            description: 'quobyte represents a Quobyte mount on the host that shares
              a pod''s lifetime. Deprecated: Quobyte is deprecated and the in-tree
              quobyte type is no longer supported.'
            properties:
              group:
                description: |-
                  group to map volume access to
                  Default is no group
                type: string
              readOnly:
                description: readOnly here will force the Quobyte volume to be mounted
                  with read-only permissions. Defaults to false.
                type: boolean
              registry:
                description: registry represents a single or multiple Quobyte Registry
                  services specified as a string as host:port pair (multiple entries
                  are separated with commas) which acts as the central registry for
                  volumes
                type: string
              tenant:
                description: tenant owning the given Quobyte volume in the Backend
                  Used with dynamically provisioned Quobyte volumes, value is set
                  by the plugin
                type: string
              user:
                description: |-
                  user to map volume access to
                  Defaults to serivceaccount user
                type: string
              volume:
                description: volume is a string that references an already created
                  Quobyte volume by name.
                type: string
            required:
            - registry
            - volume
            type: object
          rbd:
            description: 'rbd represents a Rados Block Device mount on the host that
              shares a pod''s lifetime. Deprecated: RBD is deprecated and the in-tree
              rbd type is no longer supported.'
            properties:
              fsType:
                description: 'fsType is the filesystem type of the volume that you
                  want to mount. Tip: Ensure that the filesystem type is supported
                  by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly
                  inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd'
                type: string
              image:
                description: 'image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                type: string
              keyring:
                default: "/etc/ceph/keyring"
                description: 'keyring is the path to key ring for RBDUser. Default
                  is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                type: string
              monitors:
                description: 'monitors is a collection of Ceph monitors. More info:
                  https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                items:
                  type: string
                type: array
                x-kubernetes-list-type: atomic
              pool:
                default: rbd
                description: 'pool is the rados pool name. Default is rbd. More info:
                  https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                type: string
              readOnly:
                description: 'readOnly here will force the ReadOnly setting in VolumeMounts.
                  Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                type: boolean
              secretRef:
                description: 'secretRef is name of the authentication secret for RBDUser.
                  If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                properties:
                  name:
                    default: ''
                    description: 'Name of the referent. This field is effectively
                      required, but due to backwards compatibility is allowed to be
                      empty. Instances of this type with an empty value here are almost
                      certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              user:
                default: admin
                description: 'user is the rados user name. Default is admin. More
                  info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it'
                type: string
            required:
            - image
            - monitors
            type: object
          scaleIO:
            description: 'scaleIO represents a ScaleIO persistent volume attached
              and mounted on Kubernetes nodes. Deprecated: ScaleIO is deprecated and
              the in-tree scaleIO type is no longer supported.'
            properties:
              fsType:
                default: xfs
                description: fsType is the filesystem type to mount. Must be a filesystem
                  type supported by the host operating system. Ex. "ext4", "xfs",
                  "ntfs". Default is "xfs".
                type: string
              gateway:
                description: gateway is the host address of the ScaleIO API Gateway.
                type: string
              protectionDomain:
                description: protectionDomain is the name of the ScaleIO Protection
                  Domain for the configured storage.
                type: string
              readOnly:
                description: readOnly Defaults to false (read/write). ReadOnly here
                  will force the ReadOnly setting in VolumeMounts.
                type: boolean
              secretRef:
                description: secretRef references to the secret for ScaleIO user and
                  other sensitive information. If this is not provided, Login operation
                  will fail.
                properties:
                  name:
                    default: ''
                    description: 'Name of the referent. This field is effectively
                      required, but due to backwards compatibility is allowed to be
                      empty. Instances of this type with an empty value here are almost
                      certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              sslEnabled:
                description: sslEnabled Flag enable/disable SSL communication with
                  Gateway, default false
                type: boolean
              storageMode:
                default: ThinProvisioned
                description: storageMode indicates whether the storage for a volume
                  should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned.
                type: string
              storagePool:
                description: storagePool is the ScaleIO Storage Pool associated with
                  the protection domain.
                type: string
              system:
                description: system is the name of the storage system as configured
                  in ScaleIO.
                type: string
              volumeName:
                description: volumeName is the name of a volume already created in
                  the ScaleIO system that is associated with this volume source.
                type: string
            required:
            - gateway
            - secretRef
            - system
            type: object
          secret:
            description: 'secret represents a secret that should populate this volume.
              More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
            properties:
              defaultMode:
                description: 'defaultMode is Optional: mode bits used to set permissions
                  on created files by default. Must be an octal value between 0000
                  and 0777 or a decimal value between 0 and 511. YAML accepts both
                  octal and decimal values, JSON requires decimal values for mode
                  bits. Defaults to 0644. Directories within the path are not affected
                  by this setting. This might be in conflict with other options that
                  affect the file mode, like fsGroup, and the result can be other
                  mode bits set.'
                format: int32
                type: integer
              items:
                description: items If unspecified, each key-value pair in the Data
                  field of the referenced Secret will be projected into the volume
                  as a file whose name is the key and content is the value. If specified,
                  the listed keys will be projected into the specified paths, and
                  unlisted keys will not be present. If a key is specified which is
                  not present in the Secret, the volume setup will error unless it
                  is marked optional. Paths must be relative and may not contain the
                  '..' path or start with '..'.
                items:
                  description: Maps a string key to a path within a volume.
                  properties:
                    key:
                      description: key is the key to project.
                      type: string
                    mode:
                      description: 'mode is Optional: mode bits used to set permissions
                        on this file. Must be an octal value between 0000 and 0777
                        or a decimal value between 0 and 511. YAML accepts both octal
                        and decimal values, JSON requires decimal values for mode
                        bits. If not specified, the volume defaultMode will be used.
                        This might be in conflict with other options that affect the
                        file mode, like fsGroup, and the result can be other mode
                        bits set.'
                      format: int32
                      type: integer
                    path:
                      description: |-
                        path is the relative path of the file to map the key to.
                        May not be an absolute path.
                        May not contain the path element '..'.
                        May not start with the string '..'.
                      type: string
                  required:
                  - key
                  - path
                  type: object
                type: array
                x-kubernetes-list-type: atomic
              optional:
                description: optional field specify whether the Secret or its keys
                  must be defined
                type: boolean
              secretName:
                description: 'secretName is the name of the secret in the pod''s namespace
                  to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
                type: string
            type: object
          storageos:
            description: 'storageOS represents a StorageOS volume attached and mounted
              on Kubernetes nodes. Deprecated: StorageOS is deprecated and the in-tree
              storageos type is no longer supported.'
            properties:
              fsType:
                description: fsType is the filesystem type to mount. Must be a filesystem
                  type supported by the host operating system. Ex. "ext4", "xfs",
                  "ntfs". Implicitly inferred to be "ext4" if unspecified.
                type: string
              readOnly:
                description: readOnly defaults to false (read/write). ReadOnly here
                  will force the ReadOnly setting in VolumeMounts.
                type: boolean
              secretRef:
                description: secretRef specifies the secret to use for obtaining the
                  StorageOS API credentials.  If not specified, default values will
                  be attempted.
                properties:
                  name:
                    default: ''
                    description: 'Name of the referent. This field is effectively
                      required, but due to backwards compatibility is allowed to be
                      empty. Instances of this type with an empty value here are almost
                      certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              volumeName:
                description: volumeName is the human-readable name of the StorageOS
                  volume.  Volume names are only unique within a namespace.
                type: string
              volumeNamespace:
                description: volumeNamespace specifies the scope of the volume within
                  StorageOS.  If no namespace is specified then the Pod's namespace
                  will be used.  This allows the Kubernetes name scoping to be mirrored
                  within StorageOS for tighter integration. Set VolumeName to any
                  name to override the default behaviour. Set to "default" if you
                  are not using namespaces within StorageOS. Namespaces that do not
                  pre-exist within StorageOS will be created.
                type: string
            type: object
          vsphereVolume:
            description: 'vsphereVolume represents a vSphere volume attached and mounted
              on kubelets host machine. Deprecated: VsphereVolume is deprecated. All
              operations for the in-tree vsphereVolume type are redirected to the
              csi.vsphere.vmware.com CSI driver.'
            properties:
              fsType:
                description: fsType is filesystem type to mount. Must be a filesystem
                  type supported by the host operating system. Ex. "ext4", "xfs",
                  "ntfs". Implicitly inferred to be "ext4" if unspecified.
                type: string
              storagePolicyID:
                description: storagePolicyID is the storage Policy Based Management
                  (SPBM) profile ID associated with the StoragePolicyName.
                type: string
              storagePolicyName:
                description: storagePolicyName is the storage Policy Based Management
                  (SPBM) profile name.
                type: string
              volumePath:
                description: volumePath is the path that identifies vSphere volume
                  vmdk
                type: string
            required:
            - volumePath
            type: object
        required:
        - name
        type: object
      type: array
    VolumeMounts:
      description: Volume Mounts
      items:
        description: VolumeMount describes a mounting of a Volume within a container.
        properties:
          mountPath:
            description: Path within the container at which the volume should be mounted.  Must
              not contain ':'.
            type: string
          mountPropagation:
            description: mountPropagation determines how mounts are propagated from
              the host to container and the other way around. When not set, MountPropagationNone
              is used. This field is beta in 1.10.
            type: string
          name:
            description: This must match the Name of a Volume.
            type: string
          readOnly:
            description: Mounted read-only if true, read-write otherwise (false or
              unspecified). Defaults to false.
            type: boolean
          recursiveReadOnly:
            description: RecursiveReadOnly specifies whether read-only mounts should
              be handled recursively. If ReadOnly is false, this field has no meaning
              and must be unspecified. If ReadOnly is true, and this field is set
              to Disabled, the mount is not made recursively read-only.  If this field
              is set to IfPossible, the mount is made recursively read-only, if it
              is supported by the container runtime.  If this field is set to Enabled,
              the mount is made recursively read-only if it is supported by the container
              runtime, otherwise the pod will not be started and an error will be
              generated to indicate the reason. If this field is set to IfPossible
              or Enabled, MountPropagation must be set to None (or be unspecified,
              which defaults to None). If this field is not specified, it is treated
              as an equivalent of Disabled.
            type: string
          subPath:
            description: Path within the volume from which the container's volume
              should be mounted. Defaults to "" (volume's root).
            type: string
          subPathExpr:
            description: Expanded path within the volume from which the container's
              volume should be mounted. Behaves similarly to SubPath but environment
              variable references $(VAR_NAME) are expanded using the container's environment.
              Defaults to "" (volume's root). SubPathExpr and SubPath are mutually
              exclusive.
            type: string
        required:
        - mountPath
        - name
        type: object
      type: array
  responses:
    Error400:
      description: 'Bad request: This error is used when the API request can''t be
        understood. More information might be provided in the response body.

        '
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/Error"
    Error401:
      description: 'Unauthorized: The request requires user authentication.

        '
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/Error"
    Error403:
      description: 'Forbidden: The server understands the request but refuses to process
        it.

        '
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/Error"
    Error404:
      description: |
        Not found: This error is used when a specific resource can't be located.
        More information might be provided in the response body.
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/Error"
    Error409:
      description: 'Conflict: A resource with this name already exists.

        '
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/Error"
    Error500:
      description: 'Internal server error. The server encountered an unexpected condition
        that prevented it from fulfilling the request.

        '
      content:
        application/json:
          schema:
            "$ref": "#/components/schemas/Error"
externalDocs:
  description: IBM App Connect in containers documentation
  url: https://ibm.biz/ACEv13ContainerDocs-v13
