apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.6.2
  name: contourconfigurations.projectcontour.io
spec:
  preserveUnknownFields: false
  group: projectcontour.io
  names:
    kind: ContourConfiguration
    listKind: ContourConfigurationList
    plural: contourconfigurations
    shortNames:
      - contourconfig
    singular: contourconfiguration
  scope: Namespaced
  versions:
    - name: v1alpha1
      schema:
        openAPIV3Schema:
          description: ContourConfiguration is the schema for a Contour instance.
          properties:
            apiVersion:
              description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
              type: string
            kind:
              description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
              type: string
            metadata:
              type: object
            spec:
              description: ContourConfigurationSpec represents a configuration of a
                Contour controller. It contains most of all the options that can be
                customized, the other remaining options being command line flags.
              properties:
                debug:
                  default:
                    kubernetesLogLevel: 0
                    logLevel: info
                  description: Debug contains parameters to enable debug logging and
                    debug interfaces inside Contour.
                  properties:
                    address:
                      description: Defines the Contour debug address interface.
                      type: string
                    kubernetesLogLevel:
                      default: 0
                      description: "KubernetesDebugLogLevel defines the log level which
                      Contour will use when outputting Kubernetes specific log information.
                      \n Details: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-instrumentation/logging.md"
                      maximum: 9
                      minimum: 0
                      type: integer
                    logLevel:
                      description: DebugLogLevel defines the log level which Contour
                        will use when outputting log information.
                      enum:
                        - info
                        - debug
                      type: string
                    port:
                      description: Defines the Contour debug address port.
                      type: integer
                  required:
                    - logLevel
                  type: object
                enableExternalNameService:
                  default: false
                  description: EnableExternalNameService allows processing of ExternalNameServices
                    Defaults to disabled for security reasons.
                  type: boolean
                envoy:
                  default:
                    cluster:
                      dnsLookupFamily: auto
                    defaultHTTPVersions:
                      - HTTP/1.1
                      - HTTP/2
                    health:
                      address: 0.0.0.0
                      port: 8002
                    http:
                      accessLog: /dev/stdout
                      address: 0.0.0.0
                      port: 8080
                    https:
                      accessLog: /dev/stdout
                      address: 0.0.0.0
                      port: 8443
                    listener:
                      connectionBalancer: ""
                      disableAllowChunkedLength: false
                      tls:
                        cipherSuites:
                          - '[ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305]'
                          - '[ECDHE-RSA-AES128-GCM-SHA256|ECDHE-RSA-CHACHA20-POLY1305]'
                          - ECDHE-ECDSA-AES256-GCM-SHA384
                          - ECDHE-RSA-AES256-GCM-SHA384
                        minimumProtocolVersion: "1.2"
                      useProxyProtocol: false
                    logging:
                      accessLogFormat: envoy
                    metrics:
                      address: 0.0.0.0
                      port: 8002
                    network:
                      adminPort: 9001
                    service:
                      name: envoy
                      namespace: projectcontour
                  description: Envoy contains parameters for Envoy as well as how to
                    optionally configure a managed Envoy fleet.
                  properties:
                    clientCertificate:
                      description: ClientCertificate defines the namespace/name of the
                        Kubernetes secret containing the client certificate and private
                        key to be used when establishing TLS connection to upstream
                        cluster.
                      properties:
                        name:
                          type: string
                        namespace:
                          type: string
                      required:
                        - name
                        - namespace
                      type: object
                    cluster:
                      description: Cluster holds various configurable Envoy cluster
                        values that can be set in the config file.
                      properties:
                        dnsLookupFamily:
                          default: auto
                          description: "DNSLookupFamily defines how external names are
                          looked up When configured as V4, the DNS resolver will only
                          perform a lookup for addresses in the IPv4 family. If V6
                          is configured, the DNS resolver will only perform a lookup
                          for addresses in the IPv6 family. If AUTO is configured,
                          the DNS resolver will first perform a lookup for addresses
                          in the IPv6 family and fallback to a lookup for addresses
                          in the IPv4 family. Note: This only applies to externalName
                          clusters. \n See https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto.html#envoy-v3-api-enum-config-cluster-v3-cluster-dnslookupfamily
                          for more information."
                          enum:
                            - auto
                            - v4
                            - v6
                          type: string
                      required:
                        - dnsLookupFamily
                      type: object
                    defaultHTTPVersions:
                      description: DefaultHTTPVersions defines the default set of HTTPS
                        versions the proxy should accept. HTTP versions are strings
                        of the form "HTTP/xx". Supported versions are "HTTP/1.1" and
                        "HTTP/2".
                      items:
                        description: HTTPVersionType is the name of a supported HTTP
                          version.
                        enum:
                          - HTTP/1.1
                          - HTTP/2
                        type: string
                      type: array
                    health:
                      default:
                        address: 0.0.0.0
                        port: 8002
                      description: Health defines the endpoint Envoy uses to serve health
                        checks.
                      properties:
                        address:
                          description: Defines the health address interface.
                          minLength: 1
                          type: string
                        port:
                          description: Defines the health port.
                          type: integer
                      required:
                        - address
                        - port
                      type: object
                    http:
                      default:
                        accessLog: /dev/stdout
                        address: 0.0.0.0
                        port: 8080
                      description: Defines the HTTP Listener for Envoy.
                      properties:
                        accessLog:
                          description: AccessLog defines where Envoy logs are outputted
                            for this listener.
                          type: string
                        address:
                          description: Defines an Envoy Listener Address.
                          minLength: 1
                          type: string
                        port:
                          description: Defines an Envoy listener Port.
                          type: integer
                      required:
                        - accessLog
                        - address
                        - port
                      type: object
                    https:
                      default:
                        accessLog: /dev/stdout
                        address: 0.0.0.0
                        port: 8443
                      description: Defines the HTTP Listener for Envoy.
                      properties:
                        accessLog:
                          description: AccessLog defines where Envoy logs are outputted
                            for this listener.
                          type: string
                        address:
                          description: Defines an Envoy Listener Address.
                          minLength: 1
                          type: string
                        port:
                          description: Defines an Envoy listener Port.
                          type: integer
                      required:
                        - accessLog
                        - address
                        - port
                      type: object
                    listener:
                      description: Listener hold various configurable Envoy listener
                        values.
                      properties:
                        connectionBalancer:
                          description: ConnectionBalancer. If the value is exact, the
                            listener will use the exact connection balancer See https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/listener.proto#envoy-api-msg-listener-connectionbalanceconfig
                            for more information.
                          enum:
                            - ""
                            - exact
                          type: string
                        disableAllowChunkedLength:
                          description: 'DisableAllowChunkedLength disables the RFC-compliant
                          Envoy behavior to strip the "Content-Length" header if "Transfer-Encoding:
                          chunked" is also set. This is an emergency off-switch to
                          revert back to Envoy''s default behavior in case of failures.
                          Please file an issue if failures are encountered. See: https://github.com/projectcontour/contour/issues/3221'
                          type: boolean
                        tls:
                          description: TLS holds various configurable Envoy TLS listener
                            values.
                          properties:
                            cipherSuites:
                              description: "CipherSuites defines the TLS ciphers to
                              be supported by Envoy TLS listeners when negotiating
                              TLS 1.2. Ciphers are validated against the set that
                              Envoy supports by default. This parameter should only
                              be used by advanced users. Note that these will be ignored
                              when TLS 1.3 is in use. \n See: https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/transport_sockets/tls/v3/common.proto#extensions-transport-sockets-tls-v3-tlsparameters
                              Note: This list is a superset of what is valid for stock
                              Envoy builds and those using BoringSSL FIPS."
                              items:
                                enum:
                                  - '[ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305]'
                                  - '[ECDHE-RSA-AES128-GCM-SHA256|ECDHE-RSA-CHACHA20-POLY1305]'
                                  - ECDHE-ECDSA-AES128-GCM-SHA256
                                  - ECDHE-RSA-AES128-GCM-SHA256
                                  - ECDHE-ECDSA-AES128-SHA
                                  - ECDHE-RSA-AES128-SHA
                                  - AES128-GCM-SHA256
                                  - AES128-SHA
                                  - ECDHE-ECDSA-AES256-GCM-SHA384
                                  - ECDHE-RSA-AES256-GCM-SHA384
                                  - ECDHE-ECDSA-AES256-SHA
                                  - ECDHE-RSA-AES256-SHA
                                  - AES256-GCM-SHA384
                                  - AES256-SHA
                                type: string
                              type: array
                            minimumProtocolVersion:
                              description: MinimumProtocolVersion is the minimum TLS
                                version this vhost should negotiate. Valid options are
                                `1.2` (default) and `1.3`.
                              enum:
                                - "1.2"
                                - "1.3"
                              type: string
                          required:
                            - cipherSuites
                            - minimumProtocolVersion
                          type: object
                        useProxyProtocol:
                          description: Use PROXY protocol for all listeners.
                          type: boolean
                      required:
                        - connectionBalancer
                        - disableAllowChunkedLength
                        - tls
                        - useProxyProtocol
                      type: object
                    logging:
                      description: Logging defines how Envoy's logs can be configured.
                      properties:
                        accessLogFormat:
                          description: AccessLogFormat sets the global access log format.
                            Valid options are 'envoy' or 'json'
                          enum:
                            - envoy
                            - json
                          type: string
                        accessLogFormatString:
                          description: AccessLogFormatString sets the access log format
                            when format is set to `envoy`. When empty, Envoy's default
                            format is used.
                          type: string
                        jsonFields:
                          description: AccessLogFields sets the fields that JSON logging
                            will output when AccessLogFormat is json.
                          items:
                            type: string
                          type: array
                      required:
                        - accessLogFormat
                      type: object
                    metrics:
                      default:
                        address: 0.0.0.0
                        port: 8002
                      description: Metrics defines the endpoint Envoy uses to serve
                        metrics.
                      properties:
                        address:
                          description: Defines the metrics address interface.
                          maxLength: 253
                          minLength: 1
                          type: string
                        port:
                          description: Defines the metrics port.
                          type: integer
                        tls:
                          description: TLS holds TLS file config details. Metrics and
                            health endpoints cannot have same port number when metrics
                            is served over HTTPS.
                          properties:
                            caFile:
                              description: CA filename.
                              type: string
                            certFile:
                              description: Client certificate filename.
                              type: string
                            keyFile:
                              description: Client key filename.
                              type: string
                          type: object
                      required:
                        - address
                        - port
                      type: object
                    network:
                      description: Network holds various configurable Envoy network
                        values.
                      properties:
                        adminPort:
                          default: 9001
                          description: Configure the port used to access the Envoy Admin
                            interface. If configured to port "0" then the admin interface
                            is disabled.
                          type: integer
                        numTrustedHops:
                          description: "XffNumTrustedHops defines the number of additional
                          ingress proxy hops from the right side of the x-forwarded-for
                          HTTP header to trust when determining the origin client’s
                          IP address. \n See https://www.envoyproxy.io/docs/envoy/v1.17.0/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto?highlight=xff_num_trusted_hops
                          for more information."
                          format: int32
                          type: integer
                      required:
                        - adminPort
                      type: object
                    service:
                      default:
                        name: envoy
                        namespace: projectcontour
                      description: Service holds Envoy service parameters for setting
                        Ingress status.
                      properties:
                        name:
                          type: string
                        namespace:
                          type: string
                      required:
                        - name
                        - namespace
                      type: object
                    timeouts:
                      description: Timeouts holds various configurable timeouts that
                        can be set in the config file.
                      properties:
                        connectionIdleTimeout:
                          description: "ConnectionIdleTimeout defines how long the proxy
                          should wait while there are no active requests (for HTTP/1.1)
                          or streams (for HTTP/2) before terminating an HTTP connection.
                          Set to \"infinity\" to disable the timeout entirely. \n
                          See https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#envoy-v3-api-field-config-core-v3-httpprotocoloptions-idle-timeout
                          for more information."
                          type: string
                        connectionShutdownGracePeriod:
                          description: "ConnectionShutdownGracePeriod defines how long
                          the proxy will wait between sending an initial GOAWAY frame
                          and a second, final GOAWAY frame when terminating an HTTP/2
                          connection. During this grace period, the proxy will continue
                          to respond to new streams. After the final GOAWAY frame
                          has been sent, the proxy will refuse new streams. \n See
                          https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto#envoy-v3-api-field-extensions-filters-network-http-connection-manager-v3-httpconnectionmanager-drain-timeout
                          for more information."
                          type: string
                        delayedCloseTimeout:
                          description: "DelayedCloseTimeout defines how long envoy will
                          wait, once connection close processing has been initiated,
                          for the downstream peer to close the connection before Envoy
                          closes the socket associated with the connection. \n Setting
                          this timeout to 'infinity' will disable it, equivalent to
                          setting it to '0' in Envoy. Leaving it unset will result
                          in the Envoy default value being used. \n See https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto#envoy-v3-api-field-extensions-filters-network-http-connection-manager-v3-httpconnectionmanager-delayed-close-timeout
                          for more information."
                          type: string
                        maxConnectionDuration:
                          description: "MaxConnectionDuration defines the maximum period
                          of time after an HTTP connection has been established from
                          the client to the proxy before it is closed by the proxy,
                          regardless of whether there has been activity or not. Omit
                          or set to \"infinity\" for no max duration. \n See https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/protocol.proto#envoy-v3-api-field-config-core-v3-httpprotocoloptions-max-connection-duration
                          for more information."
                          type: string
                        requestTimeout:
                          description: "RequestTimeout sets the client request timeout
                          globally for Contour. Note that this is a timeout for the
                          entire request, not an idle timeout. Omit or set to \"infinity\"
                          to disable the timeout entirely. \n See https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto#envoy-v3-api-field-extensions-filters-network-http-connection-manager-v3-httpconnectionmanager-request-timeout
                          for more information."
                          type: string
                        streamIdleTimeout:
                          description: "StreamIdleTimeout defines how long the proxy
                          should wait while there is no request activity (for HTTP/1.1)
                          or stream activity (for HTTP/2) before terminating the HTTP
                          request or stream. Set to \"infinity\" to disable the timeout
                          entirely. \n See https://www.envoyproxy.io/docs/envoy/latest/api-v3/extensions/filters/network/http_connection_manager/v3/http_connection_manager.proto#envoy-v3-api-field-extensions-filters-network-http-connection-manager-v3-httpconnectionmanager-stream-idle-timeout
                          for more information."
                          type: string
                      type: object
                  required:
                    - cluster
                    - defaultHTTPVersions
                    - http
                    - https
                    - listener
                    - logging
                    - metrics
                    - network
                    - service
                  type: object
                gateway:
                  description: Gateway contains parameters for the gateway-api Gateway
                    that Contour is configured to serve traffic.
                  properties:
                    controllerName:
                      default: projectcontour.io/projectcontour/contour
                      description: ControllerName is used to determine whether Contour
                        should reconcile a GatewayClass. The string takes the form of
                        "projectcontour.io/<namespace>/contour". If unset, the gatewayclass
                        controller will not be started.
                      type: string
                  required:
                    - controllerName
                  type: object
                health:
                  default:
                    address: 0.0.0.0
                    port: 8000
                  description: Health defines the endpoints Contour uses to serve health
                    checks.
                  properties:
                    address:
                      description: Defines the health address interface.
                      minLength: 1
                      type: string
                    port:
                      description: Defines the health port.
                      type: integer
                  required:
                    - address
                    - port
                  type: object
                httpproxy:
                  default:
                    disablePermitInsecure: false
                  description: HTTPProxy defines parameters on HTTPProxy.
                  properties:
                    disablePermitInsecure:
                      description: DisablePermitInsecure disables the use of the permitInsecure
                        field in HTTPProxy.
                      type: boolean
                    fallbackCertificate:
                      description: FallbackCertificate defines the namespace/name of
                        the Kubernetes secret to use as fallback when a non-SNI request
                        is received.
                      properties:
                        name:
                          type: string
                        namespace:
                          type: string
                      required:
                        - name
                        - namespace
                      type: object
                    rootNamespaces:
                      description: Restrict Contour to searching these namespaces for
                        root ingress routes.
                      items:
                        type: string
                      type: array
                  required:
                    - disablePermitInsecure
                  type: object
                ingress:
                  description: Ingress contains parameters for ingress options.
                  properties:
                    className:
                      description: Ingress Class Name Contour should use.
                      type: string
                    statusAddress:
                      description: Address to set in Ingress object status.
                      type: string
                  type: object
                metrics:
                  default:
                    address: 0.0.0.0
                    port: 8000
                  description: Metrics defines the endpoint Contour uses to serve metrics.
                  properties:
                    address:
                      description: Defines the metrics address interface.
                      maxLength: 253
                      minLength: 1
                      type: string
                    port:
                      description: Defines the metrics port.
                      type: integer
                    tls:
                      description: TLS holds TLS file config details. Metrics and health
                        endpoints cannot have same port number when metrics is served
                        over HTTPS.
                      properties:
                        caFile:
                          description: CA filename.
                          type: string
                        certFile:
                          description: Client certificate filename.
                          type: string
                        keyFile:
                          description: Client key filename.
                          type: string
                      type: object
                  required:
                    - address
                    - port
                  type: object
                policy:
                  description: Policy specifies default policy applied if not overridden
                    by the user
                  properties:
                    applyToIngress:
                      description: ApplyToIngress determines if the Policies will apply
                        to ingress objects
                      type: boolean
                    requestHeaders:
                      description: RequestHeadersPolicy defines the request headers
                        set/removed on all routes
                      properties:
                        remove:
                          items:
                            type: string
                          type: array
                        set:
                          additionalProperties:
                            type: string
                          type: object
                      type: object
                    responseHeaders:
                      description: ResponseHeadersPolicy defines the response headers
                        set/removed on all routes
                      properties:
                        remove:
                          items:
                            type: string
                          type: array
                        set:
                          additionalProperties:
                            type: string
                          type: object
                      type: object
                  type: object
                rateLimitService:
                  description: RateLimitService optionally holds properties of the Rate
                    Limit Service to be used for global rate limiting.
                  properties:
                    domain:
                      description: Domain is passed to the Rate Limit Service.
                      type: string
                    enableXRateLimitHeaders:
                      description: "EnableXRateLimitHeaders defines whether to include
                      the X-RateLimit headers X-RateLimit-Limit, X-RateLimit-Remaining,
                      and X-RateLimit-Reset (as defined by the IETF Internet-Draft
                      linked below), on responses to clients when the Rate Limit Service
                      is consulted for a request. \n ref. https://tools.ietf.org/id/draft-polli-ratelimit-headers-03.html"
                      type: boolean
                    extensionService:
                      description: ExtensionService identifies the extension service
                        defining the RLS.
                      properties:
                        name:
                          type: string
                        namespace:
                          type: string
                      required:
                        - name
                        - namespace
                      type: object
                    failOpen:
                      description: FailOpen defines whether to allow requests to proceed
                        when the Rate Limit Service fails to respond with a valid rate
                        limit decision within the timeout defined on the extension service.
                      type: boolean
                  required:
                    - domain
                    - enableXRateLimitHeaders
                    - failOpen
                  type: object
                xdsServer:
                  default:
                    address: 0.0.0.0
                    port: 8001
                    tls:
                      caFile: /certs/ca.crt
                      certFile: /certs/tls.crt
                      insecure: false
                      keyFile: /certs/tls.key
                    type: contour
                  description: XDSServer contains parameters for the xDS server.
                  properties:
                    address:
                      description: Defines the xDS gRPC API address which Contour will
                        serve.
                      minLength: 1
                      type: string
                    port:
                      description: Defines the xDS gRPC API port which Contour will
                        serve.
                      type: integer
                    tls:
                      description: TLS holds TLS file config details.
                      properties:
                        caFile:
                          description: CA filename.
                          type: string
                        certFile:
                          description: Client certificate filename.
                          type: string
                        insecure:
                          description: Allow serving the xDS gRPC API without TLS.
                          type: boolean
                        keyFile:
                          description: Client key filename.
                          type: string
                      required:
                        - insecure
                      type: object
                    type:
                      description: Defines the XDSServer to use for `contour serve`.
                      enum:
                        - contour
                        - envoy
                      type: string
                  required:
                    - address
                    - port
                    - type
                  type: object
              type: object
            status:
              description: ContourConfigurationStatus defines the observed state of
                a ContourConfiguration resource.
              properties:
                conditions:
                  description: "Conditions contains the current status of the Contour
                  resource. \n Contour will update a single condition, `Valid`, that
                  is in normal-true polarity. \n Contour will not modify any other
                  Conditions set in this block, in case some other controller wants
                  to add a Condition."
                  items:
                    description: "DetailedCondition is an extension of the normal Kubernetes
                    conditions, with two extra fields to hold sub-conditions, which
                    provide more detailed reasons for the state (True or False) of
                    the condition. \n `errors` holds information about sub-conditions
                    which are fatal to that condition and render its state False.
                    \n `warnings` holds information about sub-conditions which are
                    not fatal to that condition and do not force the state to be False.
                    \n Remember that Conditions have a type, a status, and a reason.
                    \n The type is the type of the condition, the most important one
                    in this CRD set is `Valid`. `Valid` is a positive-polarity condition:
                    when it is `status: true` there are no problems. \n In more detail,
                    `status: true` means that the object is has been ingested into
                    Contour with no errors. `warnings` may still be present, and will
                    be indicated in the Reason field. There must be zero entries in
                    the `errors` slice in this case. \n `Valid`, `status: false` means
                    that the object has had one or more fatal errors during processing
                    into Contour.  The details of the errors will be present under
                    the `errors` field. There must be at least one error in the `errors`
                    slice if `status` is `false`. \n For DetailedConditions of types
                    other than `Valid`, the Condition must be in the negative polarity.
                    When they have `status` `true`, there is an error. There must
                    be at least one entry in the `errors` Subcondition slice. When
                    they have `status` `false`, there are no serious errors, and there
                    must be zero entries in the `errors` slice. In either case, there
                    may be entries in the `warnings` slice. \n Regardless of the polarity,
                    the `reason` and `message` fields must be updated with either
                    the detail of the reason (if there is one and only one entry in
                    total across both the `errors` and `warnings` slices), or `MultipleReasons`
                    if there is more than one entry."
                    properties:
                      errors:
                        description: "Errors contains a slice of relevant error subconditions
                        for this object. \n Subconditions are expected to appear when
                        relevant (when there is a error), and disappear when not relevant.
                        An empty slice here indicates no errors."
                        items:
                          description: "SubCondition is a Condition-like type intended
                          for use as a subcondition inside a DetailedCondition. \n
                          It contains a subset of the Condition fields. \n It is intended
                          for warnings and errors, so `type` names should use abnormal-true
                          polarity, that is, they should be of the form \"ErrorPresent:
                          true\". \n The expected lifecycle for these errors is that
                          they should only be present when the error or warning is,
                          and should be removed when they are not relevant."
                          properties:
                            message:
                              description: "Message is a human readable message indicating
                              details about the transition. \n This may be an empty
                              string."
                              maxLength: 32768
                              type: string
                            reason:
                              description: "Reason contains a programmatic identifier
                              indicating the reason for the condition's last transition.
                              Producers of specific condition types may define expected
                              values and meanings for this field, and whether the
                              values are considered a guaranteed API. \n The value
                              should be a CamelCase string. \n This field may not
                              be empty."
                              maxLength: 1024
                              minLength: 1
                              pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                              type: string
                            status:
                              description: Status of the condition, one of True, False,
                                Unknown.
                              enum:
                                - "True"
                                - "False"
                                - Unknown
                              type: string
                            type:
                              description: "Type of condition in `CamelCase` or in `foo.example.com/CamelCase`.
                              \n This must be in abnormal-true polarity, that is,
                              `ErrorFound` or `controller.io/ErrorFound`. \n The regex
                              it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)"
                              maxLength: 316
                              pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                              type: string
                          required:
                            - message
                            - reason
                            - status
                            - type
                          type: object
                        type: array
                      lastTransitionTime:
                        description: lastTransitionTime is the last time the condition
                          transitioned from one status to another. This should be when
                          the underlying condition changed.  If that is not known, then
                          using the time when the API field changed is acceptable.
                        format: date-time
                        type: string
                      message:
                        description: message is a human readable message indicating
                          details about the transition. This may be an empty string.
                        maxLength: 32768
                        type: string
                      observedGeneration:
                        description: observedGeneration represents the .metadata.generation
                          that the condition was set based upon. For instance, if .metadata.generation
                          is currently 12, but the .status.conditions[x].observedGeneration
                          is 9, the condition is out of date with respect to the current
                          state of the instance.
                        format: int64
                        minimum: 0
                        type: integer
                      reason:
                        description: reason contains a programmatic identifier indicating
                          the reason for the condition's last transition. Producers
                          of specific condition types may define expected values and
                          meanings for this field, and whether the values are considered
                          a guaranteed API. The value should be a CamelCase string.
                          This field may not be empty.
                        maxLength: 1024
                        minLength: 1
                        pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                        type: string
                      status:
                        description: status of the condition, one of True, False, Unknown.
                        enum:
                          - "True"
                          - "False"
                          - Unknown
                        type: string
                      type:
                        description: type of condition in CamelCase or in foo.example.com/CamelCase.
                          --- Many .condition.type values are consistent across resources
                          like Available, but because arbitrary conditions can be useful
                          (see .node.status.conditions), the ability to deconflict is
                          important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
                        maxLength: 316
                        pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                        type: string
                      warnings:
                        description: "Warnings contains a slice of relevant warning
                        subconditions for this object. \n Subconditions are expected
                        to appear when relevant (when there is a warning), and disappear
                        when not relevant. An empty slice here indicates no warnings."
                        items:
                          description: "SubCondition is a Condition-like type intended
                          for use as a subcondition inside a DetailedCondition. \n
                          It contains a subset of the Condition fields. \n It is intended
                          for warnings and errors, so `type` names should use abnormal-true
                          polarity, that is, they should be of the form \"ErrorPresent:
                          true\". \n The expected lifecycle for these errors is that
                          they should only be present when the error or warning is,
                          and should be removed when they are not relevant."
                          properties:
                            message:
                              description: "Message is a human readable message indicating
                              details about the transition. \n This may be an empty
                              string."
                              maxLength: 32768
                              type: string
                            reason:
                              description: "Reason contains a programmatic identifier
                              indicating the reason for the condition's last transition.
                              Producers of specific condition types may define expected
                              values and meanings for this field, and whether the
                              values are considered a guaranteed API. \n The value
                              should be a CamelCase string. \n This field may not
                              be empty."
                              maxLength: 1024
                              minLength: 1
                              pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                              type: string
                            status:
                              description: Status of the condition, one of True, False,
                                Unknown.
                              enum:
                                - "True"
                                - "False"
                                - Unknown
                              type: string
                            type:
                              description: "Type of condition in `CamelCase` or in `foo.example.com/CamelCase`.
                              \n This must be in abnormal-true polarity, that is,
                              `ErrorFound` or `controller.io/ErrorFound`. \n The regex
                              it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)"
                              maxLength: 316
                              pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                              type: string
                          required:
                            - message
                            - reason
                            - status
                            - type
                          type: object
                        type: array
                    required:
                      - lastTransitionTime
                      - message
                      - reason
                      - status
                      - type
                    type: object
                  type: array
                  x-kubernetes-list-map-keys:
                    - type
                  x-kubernetes-list-type: map
              type: object
          required:
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}