# Copyright 2019 The Knative Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Note: The schema part of the spec is auto-generated by hack/update-schemas.sh.

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: configurations.serving.knative.dev
  labels:
    duck.knative.dev/podspecable: "true"
    knative.dev/crd-install: "true"
    serving.knative.dev/release: "v1.0.0"
spec:
  group: serving.knative.dev
  names:
    kind: Configuration
    categories:
    - all
    - knative
    - serving
    plural: configurations
    shortNames:
    - config
    - cfg
    singular: configuration
  scope: Namespaced
  versions:
  - name: v1
    additionalPrinterColumns:
    - name: LatestCreated
      type: string
      jsonPath: .status.latestCreatedRevisionName
    - name: LatestReady
      type: string
      jsonPath: .status.latestReadyRevisionName
    - name: Ready
      type: string
      jsonPath: ".status.conditions[?(@.type=='Ready')].status"
    - name: Reason
      type: string
      jsonPath: ".status.conditions[?(@.type=='Ready')].reason"
    schema:
      openAPIV3Schema:
        type: object
        description: 'Configuration represents the "floating HEAD" of a linear history of Revisions. Users create new Revisions by updating the Configuration''s spec. The "latest created" revision''s name is available under status, as is the "latest ready" revision''s name. See also: https://github.com/knative/serving/blob/main/docs/spec/overview.md#configuration'
        properties:
          apiVersion:
            type: string
            description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
          kind:
            type: string
            description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
          metadata:
            type: object
          spec:
            type: object
            description: ConfigurationSpec holds the desired state of the Configuration (from the client).
            properties:
              template:
                type: object
                description: Template holds the latest specification for the Revision to be stamped out.
                properties:
                  metadata:
                    type: object
                    properties:
                      name:
                        type: string
                      namespace:
                        type: string
                      labels:
                        type: object
                        additionalProperties:
                          type: string
                      annotations:
                        type: object
                        additionalProperties:
                          type: string
                      finalizers:
                        type: array
                        items:
                          type: string
                    x-kubernetes-preserve-unknown-fields: true
                  spec:
                    type: object
                    description: RevisionSpec holds the desired state of the Revision (from the client).
                    properties:
                      serviceAccountName:
                        type: string
                        description: 'ServiceAccountName is the name of the ServiceAccount to use to run this pod. More info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/'
                      automountServiceAccountToken:
                        type: boolean
                        description: AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.
                      enableServiceLinks:
                        type: boolean
                        description: 'EnableServiceLinks indicates whether information about services should be injected into pod''s environment variables, matching the syntax of Docker links. Optional: Defaults to true.'
                      containers:
                        type: array
                        description: List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.
                        items:
                          type: object
                          description: A single application container that you want to run within a pod.
                          properties:
                            name:
                              type: string
                              description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated.
                            image:
                              type: string
                              description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.'
                            command:
                              type: array
                              description: 'Entrypoint array. Not executed within a shell. The docker image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
                              items:
                                type: string
                            args:
                              type: array
                              description: 'Arguments to the entrypoint. The docker image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell'
                              items:
                                type: string
                            workingDir:
                              type: string
                              description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.
                            ports:
                              type: array
                              description: List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated.
                              items:
                                type: object
                                description: ContainerPort represents a network port in a single container.
                                properties:
                                  name:
                                    type: string
                                    description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services.
                                  protocol:
                                    type: string
                                    default: TCP
                                    description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP".
                                  containerPort:
                                    type: integer
                                    description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536.
                                    format: int32
                                required:
                                - containerPort
                                x-kubernetes-preserve-unknown-fields: true
                              x-kubernetes-list-map-keys:
                              - containerPort
                              - protocol
                              x-kubernetes-list-type: map
                            envFrom:
                              type: array
                              description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.
                              items:
                                type: object
                                description: EnvFromSource represents the source of a set of ConfigMaps
                                properties:
                                  prefix:
                                    type: string
                                    description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
                                  configMapRef:
                                    type: object
                                    description: The ConfigMap to select from
                                    properties:
                                      name:
                                        type: string
                                        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?'
                                      optional:
                                        type: boolean
                                        description: Specify whether the ConfigMap must be defined
                                  secretRef:
                                    type: object
                                    description: The Secret to select from
                                    properties:
                                      name:
                                        type: string
                                        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?'
                                      optional:
                                        type: boolean
                                        description: Specify whether the Secret must be defined
                            env:
                              type: array
                              description: List of environment variables to set in the container. Cannot be updated.
                              items:
                                type: object
                                description: EnvVar represents an environment variable present in a Container.
                                properties:
                                  name:
                                    type: string
                                    description: Name of the environment variable. Must be a C_IDENTIFIER.
                                  value:
                                    type: string
                                    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 "".'
                                  valueFrom:
                                    type: object
                                    description: Source for the environment variable's value. Cannot be used if value is not empty.
                                    properties:
                                      configMapKeyRef:
                                        type: object
                                        description: Selects a key of a ConfigMap.
                                        properties:
                                          name:
                                            type: string
                                            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?'
                                          key:
                                            type: string
                                            description: The key to select.
                                          optional:
                                            type: boolean
                                            description: Specify whether the ConfigMap or its key must be defined
                                        required:
                                        - key
                                      secretKeyRef:
                                        type: object
                                        description: Selects a key of a secret in the pod's namespace
                                        properties:
                                          name:
                                            type: string
                                            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?'
                                          key:
                                            type: string
                                            description: The key of the secret to select from.  Must be a valid secret key.
                                          optional:
                                            type: boolean
                                            description: Specify whether the Secret or its key must be defined
                                        required:
                                        - key
                                    x-kubernetes-preserve-unknown-fields: true
                                required:
                                - name
                            resources:
                              type: object
                              description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
                              properties:
                                limits:
                                  type: object
                                  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/'
                                requests:
                                  type: object
                                  additionalProperties:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
                                    x-kubernetes-int-or-string: true
                                  description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
                            volumeMounts:
                              type: array
                              description: Pod volumes to mount into the container's filesystem. Cannot be updated.
                              items:
                                type: object
                                description: VolumeMount describes a mounting of a Volume within a container.
                                properties:
                                  name:
                                    type: string
                                    description: This must match the Name of a Volume.
                                  readOnly:
                                    type: boolean
                                    description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false.
                                  mountPath:
                                    type: string
                                    description: Path within the container at which the volume should be mounted.  Must not contain ':'.
                                  subPath:
                                    type: string
                                    description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root).
                                required:
                                - mountPath
                                - name
                            livenessProbe:
                              type: object
                              description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
                              properties:
                                exec:
                                  type: object
                                  description: One and only one of the following should be specified. Exec specifies the action to take.
                                  properties:
                                    command:
                                      type: array
                                      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
                                failureThreshold:
                                  type: integer
                                  description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
                                  format: int32
                                httpGet:
                                  type: object
                                  description: HTTPGet specifies the http request to perform.
                                  properties:
                                    host:
                                      type: string
                                      description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.
                                    httpHeaders:
                                      type: array
                                      description: Custom headers to set in the request. HTTP allows repeated headers.
                                      items:
                                        type: object
                                        description: HTTPHeader describes a custom header to be used in HTTP probes
                                        properties:
                                          name:
                                            type: string
                                            description: The header field name
                                          value:
                                            type: string
                                            description: The header field value
                                        required:
                                        - name
                                        - value
                                    path:
                                      type: string
                                      description: Path to access on the HTTP server.
                                    scheme:
                                      type: string
                                      description: Scheme to use for connecting to the host. Defaults to HTTP.
                                  x-kubernetes-preserve-unknown-fields: true
                                initialDelaySeconds:
                                  type: integer
                                  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
                                periodSeconds:
                                  type: integer
                                  description: How often (in seconds) to perform the probe.
                                  format: int32
                                successThreshold:
                                  type: integer
                                  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
                                tcpSocket:
                                  type: object
                                  description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook'
                                  properties:
                                    host:
                                      type: string
                                      description: 'Optional: Host name to connect to, defaults to the pod IP.'
                                  x-kubernetes-preserve-unknown-fields: true
                                timeoutSeconds:
                                  type: integer
                                  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
                            readinessProbe:
                              type: object
                              description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes'
                              properties:
                                exec:
                                  type: object
                                  description: One and only one of the following should be specified. Exec specifies the action to take.
                                  properties:
                                    command:
                                      type: array
                                      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
                                failureThreshold:
                                  type: integer
                                  description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
                                  format: int32
                                httpGet:
                                  type: object
                                  description: HTTPGet specifies the http request to perform.
                                  properties:
                                    host:
                                      type: string
                                      description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.
                                    httpHeaders:
                                      type: array
                                      description: Custom headers to set in the request. HTTP allows repeated headers.
                                      items:
                                        type: object
                                        description: HTTPHeader describes a custom header to be used in HTTP probes
                                        properties:
                                          name:
                                            type: string
                                            description: The header field name
                                          value:
                                            type: string
                                            description: The header field value
                                        required:
                                        - name
                                        - value
                                    path:
                                      type: string
                                      description: Path to access on the HTTP server.
                                    scheme:
                                      type: string
                                      description: Scheme to use for connecting to the host. Defaults to HTTP.
                                  x-kubernetes-preserve-unknown-fields: true
                                initialDelaySeconds:
                                  type: integer
                                  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
                                periodSeconds:
                                  type: integer
                                  description: How often (in seconds) to perform the probe.
                                  format: int32
                                successThreshold:
                                  type: integer
                                  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
                                tcpSocket:
                                  type: object
                                  description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook'
                                  properties:
                                    host:
                                      type: string
                                      description: 'Optional: Host name to connect to, defaults to the pod IP.'
                                  x-kubernetes-preserve-unknown-fields: true
                                timeoutSeconds:
                                  type: integer
                                  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
                            terminationMessagePath:
                              type: string
                              description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.'
                            terminationMessagePolicy:
                              type: string
                              description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.
                            imagePullPolicy:
                              type: string
                              description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'
                            securityContext:
                              type: object
                              description: 'Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/'
                              properties:
                                capabilities:
                                  type: object
                                  description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime.
                                  properties:
                                    drop:
                                      type: array
                                      description: Removed capabilities
                                      items:
                                        type: string
                                        description: Capability represent POSIX capabilities type
                                  x-kubernetes-preserve-unknown-fields: true
                                readOnlyRootFilesystem:
                                  type: boolean
                                  description: Whether this container has a read-only root filesystem. Default is false.
                                runAsUser:
                                  type: integer
                                  description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
                                  format: int64
                              x-kubernetes-preserve-unknown-fields: true
                          x-kubernetes-preserve-unknown-fields: true
                      volumes:
                        type: array
                        description: 'List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes'
                        items:
                          type: object
                          description: Volume represents a named volume in a pod that may be accessed by any container in the pod.
                          properties:
                            name:
                              type: string
                              description: 'Volume''s name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                            configMap:
                              type: object
                              description: ConfigMap represents a configMap that should populate this volume
                              properties:
                                name:
                                  type: string
                                  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?'
                                defaultMode:
                                  type: integer
                                  description: '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
                                items:
                                  type: array
                                  description: If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
                                  items:
                                    type: object
                                    description: Maps a string key to a path within a volume.
                                    properties:
                                      key:
                                        type: string
                                        description: The key to project.
                                      mode:
                                        type: integer
                                        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
                                      path:
                                        type: string
                                        description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
                                    required:
                                    - key
                                    - path
                                optional:
                                  type: boolean
                                  description: Specify whether the ConfigMap or its keys must be defined
                            projected:
                              type: object
                              description: Items for all in one resources secrets, configmaps, and downward API
                              properties:
                                defaultMode:
                                  type: integer
                                  description: 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
                                sources:
                                  type: array
                                  description: list of volume projections
                                  items:
                                    type: object
                                    description: Projection that may be projected along with other supported volume types
                                    properties:
                                      configMap:
                                        type: object
                                        description: information about the configMap data to project
                                        properties:
                                          name:
                                            type: string
                                            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?'
                                          items:
                                            type: array
                                            description: If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
                                            items:
                                              type: object
                                              description: Maps a string key to a path within a volume.
                                              properties:
                                                key:
                                                  type: string
                                                  description: The key to project.
                                                mode:
                                                  type: integer
                                                  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
                                                path:
                                                  type: string
                                                  description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
                                              required:
                                              - key
                                              - path
                                          optional:
                                            type: boolean
                                            description: Specify whether the ConfigMap or its keys must be defined
                                      secret:
                                        type: object
                                        description: information about the secret data to project
                                        properties:
                                          name:
                                            type: string
                                            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?'
                                          items:
                                            type: array
                                            description: If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
                                            items:
                                              type: object
                                              description: Maps a string key to a path within a volume.
                                              properties:
                                                key:
                                                  type: string
                                                  description: The key to project.
                                                mode:
                                                  type: integer
                                                  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
                                                path:
                                                  type: string
                                                  description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
                                              required:
                                              - key
                                              - path
                                          optional:
                                            type: boolean
                                            description: Specify whether the Secret or its key must be defined
                                      serviceAccountToken:
                                        type: object
                                        description: information about the serviceAccountToken data to project
                                        properties:
                                          audience:
                                            type: string
                                            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.
                                          expirationSeconds:
                                            type: integer
                                            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
                                          path:
                                            type: string
                                            description: Path is the path relative to the mount point of the file to project the token into.
                                        required:
                                        - path
                            secret:
                              type: object
                              description: 'Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
                              properties:
                                defaultMode:
                                  type: integer
                                  description: '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
                                items:
                                  type: array
                                  description: If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'.
                                  items:
                                    type: object
                                    description: Maps a string key to a path within a volume.
                                    properties:
                                      key:
                                        type: string
                                        description: The key to project.
                                      mode:
                                        type: integer
                                        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
                                      path:
                                        type: string
                                        description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.
                                    required:
                                    - key
                                    - path
                                optional:
                                  type: boolean
                                  description: Specify whether the Secret or its keys must be defined
                                secretName:
                                  type: string
                                  description: 'Name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret'
                          required:
                          - name
                          x-kubernetes-preserve-unknown-fields: true
                      imagePullSecrets:
                        type: array
                        description: 'ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod'
                        items:
                          type: object
                          description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.
                          properties:
                            name:
                              type: string
                              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?'
                      containerConcurrency:
                        type: integer
                        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
                      timeoutSeconds:
                        type: integer
                        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
                    required:
                    - containers
                    x-kubernetes-preserve-unknown-fields: true
          status:
            type: object
            description: ConfigurationStatus communicates the observed state of the Configuration (from the controller).
            properties:
              annotations:
                type: object
                additionalProperties:
                  type: string
                description: Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.
              conditions:
                type: array
                description: Conditions the latest available observations of a resource's current state.
                items:
                  type: object
                  description: 'Condition defines a readiness condition for a Knative resource. See: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#typical-status-properties'
                  properties:
                    type:
                      type: string
                      description: Type of condition.
                    status:
                      type: string
                      description: Status of the condition, one of True, False, Unknown.
                    lastTransitionTime:
                      type: string
                      description: LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (all other things held constant).
                      format: date-time
                    message:
                      type: string
                      description: A human readable message indicating details about the transition.
                    reason:
                      type: string
                      description: The reason for the condition's last transition.
                    severity:
                      type: string
                      description: Severity with which to treat failures of this type of condition. When this is not specified, it defaults to Error.
                  required:
                  - status
                  - type
              latestCreatedRevisionName:
                type: string
                description: LatestCreatedRevisionName is the last revision that was created from this Configuration. It might not be ready yet, for that use LatestReadyRevisionName.
              latestReadyRevisionName:
                type: string
                description: LatestReadyRevisionName holds the name of the latest Revision stamped out from this Configuration that has had its "Ready" condition become "True".
              observedGeneration:
                type: integer
                description: ObservedGeneration is the 'Generation' of the Service that was last processed by the controller.
                format: int64
    served: true
    storage: true
    subresources:
      status: {}
