# This file is downloaded from the Emissary repository on GitHub:
# https://github.com/emissary-ingress/emissary/blob/master/manifests/emissary/emissary-crds.yaml.in
#
# Several modifications have been manually made:
# 1. Only the `Mapping`, `TLSContext`, and `Host` CRDs have been kept from the source file. The source
#    file defines many CRDs that are not required by this operator project so the unnecessary CRDs have
#    been deleted.
# 2. `v2ExplicitTLS` field has been removed from the Mapping CRD `v3alpha1` version. This is because
#    the "crd-to-java" generator plugin we use has a bug (https://github.com/fabric8io/kubernetes-client/issues/5457)
#    while converting enum types and the bug is triggered by the `v2ExplicitTLS` field. This field
#    may be added back in once we upgrade our fabric8 version to 6.8.x, where this bug is resolved.
# 3. `ambassador_id` property is added to `Mapping`, `TLSContext`, and `Host` CRD version `v2`, by
#     copying it over from `v3`.
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.12.0
  labels:
    app.kubernetes.io/instance: emissary-apiext
    app.kubernetes.io/managed-by: kubectl_apply_-f_emissary-apiext.yaml
    app.kubernetes.io/name: emissary-apiext
    app.kubernetes.io/part-of: emissary-apiext
  name: mappings.getambassador.io
spec:
  conversion:
    strategy: Webhook
    webhook:
      clientConfig:
        service:
          name: emissary-apiext
          namespace: emissary-system
      conversionReviewVersions:
      - v1
  group: getambassador.io
  names:
    categories:
    - ambassador-crds
    kind: Mapping
    listKind: MappingList
    plural: mappings
    singular: mapping
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.host
      name: Source Host
      type: string
    - jsonPath: .spec.prefix
      name: Source Prefix
      type: string
    - jsonPath: .spec.service
      name: Dest Service
      type: string
    - jsonPath: .status.state
      name: State
      type: string
    - jsonPath: .status.reason
      name: Reason
      type: string
    name: v1
    schema:
      openAPIV3Schema:
        description: Mapping is the Schema for the mappings API
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: MappingSpec defines the desired state of Mapping
            properties:
              add_linkerd_headers:
                type: boolean
              add_request_headers:
                type: object
                x-kubernetes-preserve-unknown-fields: true
              add_response_headers:
                type: object
                x-kubernetes-preserve-unknown-fields: true
              allow_upgrade:
                description: "A case-insensitive list of the non-HTTP protocols to
                  allow \"upgrading\" to from HTTP via the \"Connection: upgrade\"
                  mechanism[1].  After the upgrade, Ambassador does not interpret
                  the traffic, and behaves similarly to how it does for TCPMappings.
                  \n [1]: https://tools.ietf.org/html/rfc7230#section-6.7 \n For example,
                  if your upstream service supports WebSockets, you would write \n
                  allow_upgrade: - websocket \n Or if your upstream service supports
                  upgrading from HTTP to SPDY (as the Kubernetes apiserver does for
                  `kubectl exec` functionality), you would write \n allow_upgrade:
                  - spdy/3.1"
                items:
                  type: string
                type: array
              auth_context_extensions:
                additionalProperties:
                  type: string
                type: object
              auto_host_rewrite:
                type: boolean
              bypass_auth:
                type: boolean
              bypass_error_response_overrides:
                description: If true, bypasses any `error_response_overrides` set
                  on the Ambassador module.
                type: boolean
              case_sensitive:
                type: boolean
              circuit_breakers:
                items:
                  properties:
                    max_connections:
                      type: integer
                    max_pending_requests:
                      type: integer
                    max_requests:
                      type: integer
                    max_retries:
                      type: integer
                    priority:
                      enum:
                      - default
                      - high
                      type: string
                  type: object
                type: array
              cluster_idle_timeout_ms:
                type: integer
              cluster_max_connection_lifetime_ms:
                type: integer
              cluster_tag:
                type: string
              connect_timeout_ms:
                type: integer
              cors:
                properties:
                  credentials:
                    type: boolean
                  max_age:
                    type: string
                type: object
                x-kubernetes-preserve-unknown-fields: true
              dns_type:
                type: string
              docs:
                description: DocsInfo provides some extra information about the docs
                  for the Mapping (used by the Dev Portal)
                properties:
                  display_name:
                    type: string
                  ignored:
                    type: boolean
                  path:
                    type: string
                  timeout_ms:
                    type: integer
                  url:
                    type: string
                type: object
              enable_ipv4:
                type: boolean
              enable_ipv6:
                type: boolean
              envoy_override:
                type: object
                x-kubernetes-preserve-unknown-fields: true
              error_response_overrides:
                description: Error response overrides for this Mapping. Replaces all
                  of the `error_response_overrides` set on the Ambassador module,
                  if any.
                items:
                  description: A response rewrite for an HTTP error response
                  properties:
                    body:
                      description: The new response body
                      properties:
                        content_type:
                          description: The content type to set on the error response
                            body when using text_format or text_format_source. Defaults
                            to 'text/plain'.
                          type: string
                        json_format:
                          additionalProperties:
                            type: string
                          description: 'A JSON response with content-type: application/json.
                            The values can contain format text like in text_format.'
                          type: object
                        text_format:
                          description: A format string representing a text response
                            body. Content-Type can be set using the `content_type`
                            field below.
                          type: string
                        text_format_source:
                          description: A format string sourced from a file on the
                            Ambassador container. Useful for larger response bodies
                            that should not be placed inline in configuration.
                          properties:
                            filename:
                              description: The name of a file on the Ambassador pod
                                that contains a format text string.
                              type: string
                          type: object
                      type: object
                    on_status_code:
                      description: The status code to match on -- not a pointer because
                        it's required.
                      maximum: 599
                      minimum: 400
                      type: integer
                  required:
                  - body
                  - on_status_code
                  type: object
                minItems: 1
                type: array
              grpc:
                type: boolean
              headers:
                type: object
                x-kubernetes-preserve-unknown-fields: true
              host:
                type: string
              host_redirect:
                type: boolean
              host_regex:
                type: boolean
              host_rewrite:
                type: string
              idle_timeout_ms:
                type: integer
              keepalive:
                properties:
                  idle_time:
                    type: integer
                  interval:
                    type: integer
                  probes:
                    type: integer
                type: object
              labels:
                additionalProperties:
                  description: A MappingLabelGroupsArray is an array of MappingLabelGroups.
                    I know, complex.
                  items:
                    description: 'A MappingLabelGroup is a single element of a MappingLabelGroupsArray:
                      a second map, where the key is a human-readable name that identifies
                      the group.'
                    maxProperties: 1
                    minProperties: 1
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  type: array
                description: A DomainMap is the overall Mapping.spec.Labels type.
                  It maps domains (kind of like namespaces for Mapping labels) to
                  arrays of label groups.
                type: object
              load_balancer:
                properties:
                  cookie:
                    properties:
                      name:
                        type: string
                      path:
                        type: string
                      ttl:
                        type: string
                    required:
                    - name
                    type: object
                  header:
                    type: string
                  policy:
                    enum:
                    - round_robin
                    - ring_hash
                    - maglev
                    - least_request
                    type: string
                  source_ip:
                    type: boolean
                required:
                - policy
                type: object
              method:
                type: string
              method_regex:
                type: boolean
              modules:
                items:
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                type: array
              outlier_detection:
                type: string
              path_redirect:
                description: Path replacement to use when generating an HTTP redirect.
                  Used with `host_redirect`.
                type: string
              precedence:
                type: integer
              prefix:
                type: string
              prefix_exact:
                type: boolean
              prefix_redirect:
                description: Prefix rewrite to use when generating an HTTP redirect.
                  Used with `host_redirect`.
                type: string
              prefix_regex:
                type: boolean
              priority:
                type: string
              query_parameters:
                type: object
                x-kubernetes-preserve-unknown-fields: true
              redirect_response_code:
                description: The response code to use when generating an HTTP redirect.
                  Defaults to 301. Used with `host_redirect`.
                enum:
                - 301
                - 302
                - 303
                - 307
                - 308
                type: integer
              regex_headers:
                additionalProperties:
                  type: string
                type: object
              regex_query_parameters:
                additionalProperties:
                  type: string
                type: object
              regex_redirect:
                description: Prefix regex rewrite to use when generating an HTTP redirect.
                  Used with `host_redirect`.
                properties:
                  pattern:
                    type: string
                  substitution:
                    type: string
                type: object
              regex_rewrite:
                properties:
                  pattern:
                    type: string
                  substitution:
                    type: string
                type: object
              resolver:
                type: string
              respect_dns_ttl:
                type: boolean
              retry_policy:
                properties:
                  num_retries:
                    type: integer
                  per_try_timeout:
                    type: string
                  retry_on:
                    enum:
                    - 5xx
                    - gateway-error
                    - connect-failure
                    - retriable-4xx
                    - refused-stream
                    - retriable-status-codes
                    type: string
                type: object
              rewrite:
                type: string
              service:
                type: string
              shadow:
                type: boolean
              timeout_ms:
                description: The timeout for requests that use this Mapping. Overrides
                  `cluster_request_timeout_ms` set on the Ambassador Module, if it
                  exists.
                type: integer
              use_websocket:
                description: 'use_websocket is deprecated, and is equivlaent to setting
                  `allow_upgrade: ["websocket"]`'
                type: boolean
              v3StatsName:
                type: string
              v3health_checks:
                items:
                  description: HealthCheck specifies settings for performing active
                    health checking on upstreams
                  properties:
                    health_check:
                      description: Configuration for where the healthcheck request
                        should be made to
                      maxProperties: 1
                      minProperties: 1
                      properties:
                        grpc:
                          description: HealthCheck for gRPC upstreams. Only one of
                            grpc_health_check or http_health_check may be specified
                          properties:
                            authority:
                              description: The value of the :authority header in the
                                gRPC health check request. If left empty the upstream
                                name will be used.
                              type: string
                            upstream_name:
                              description: The upstream name parameter which will
                                be sent to gRPC service in the health check message
                              type: string
                          required:
                          - upstream_name
                          type: object
                        http:
                          description: HealthCheck for HTTP upstreams. Only one of
                            http_health_check or grpc_health_check may be specified
                          properties:
                            add_request_headers:
                              additionalProperties:
                                properties:
                                  append:
                                    type: boolean
                                  v2Representation:
                                    enum:
                                    - ""
                                    - string
                                    - "null"
                                    type: string
                                  value:
                                    type: string
                                type: object
                              type: object
                            expected_statuses:
                              items:
                                description: A range of response statuses from Start
                                  to End inclusive
                                properties:
                                  max:
                                    description: End of the statuses to include. Must
                                      be between 100 and 599 (inclusive)
                                    maximum: 599
                                    minimum: 100
                                    type: integer
                                  min:
                                    description: Start of the statuses to include.
                                      Must be between 100 and 599 (inclusive)
                                    maximum: 599
                                    minimum: 100
                                    type: integer
                                required:
                                - max
                                - min
                                type: object
                              type: array
                            hostname:
                              type: string
                            path:
                              type: string
                            remove_request_headers:
                              items:
                                type: string
                              type: array
                          required:
                          - path
                          type: object
                      type: object
                    healthy_threshold:
                      description: Number of expected responses for the upstream to
                        be considered healthy. Defaults to 1.
                      type: integer
                    interval:
                      description: Interval between health checks. Defaults to every
                        5 seconds.
                      type: string
                    timeout:
                      description: Timeout for connecting to the health checking endpoint.
                        Defaults to 3 seconds.
                      type: string
                    unhealthy_threshold:
                      description: Number of non-expected responses for the upstream
                        to be considered unhealthy. A single 503 will mark the upstream
                        as unhealthy regardless of the threshold. Defaults to 2.
                      type: integer
                  required:
                  - health_check
                  type: object
                minItems: 1
                type: array
              weight:
                type: integer
            required:
            - prefix
            - service
            type: object
            x-kubernetes-preserve-unknown-fields: true
          status:
            description: MappingStatus defines the observed state of Mapping
            properties:
              reason:
                type: string
              state:
                enum:
                - ""
                - Inactive
                - Running
                type: string
            type: object
        type: object
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - jsonPath: .spec.host
      name: Source Host
      type: string
    - jsonPath: .spec.prefix
      name: Source Prefix
      type: string
    - jsonPath: .spec.service
      name: Dest Service
      type: string
    - jsonPath: .status.state
      name: State
      type: string
    - jsonPath: .status.reason
      name: Reason
      type: string
    name: v2
    schema:
      openAPIV3Schema:
        description: Mapping is the Schema for the mappings API
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: MappingSpec defines the desired state of Mapping
            properties:
              add_linkerd_headers:
                type: boolean
              add_request_headers:
                type: object
                x-kubernetes-preserve-unknown-fields: true
              add_response_headers:
                type: object
                x-kubernetes-preserve-unknown-fields: true
              allow_upgrade:
                description: "A case-insensitive list of the non-HTTP protocols to
                  allow \"upgrading\" to from HTTP via the \"Connection: upgrade\"
                  mechanism[1].  After the upgrade, Ambassador does not interpret
                  the traffic, and behaves similarly to how it does for TCPMappings.
                  \n [1]: https://tools.ietf.org/html/rfc7230#section-6.7 \n For example,
                  if your upstream service supports WebSockets, you would write \n
                  allow_upgrade: - websocket \n Or if your upstream service supports
                  upgrading from HTTP to SPDY (as the Kubernetes apiserver does for
                  `kubectl exec` functionality), you would write \n allow_upgrade:
                  - spdy/3.1"
                items:
                  type: string
                type: array
              # [operator] added manually by coping over from v3alpha1
              ambassador_id:
                description: "AmbassadorID declares which Ambassador instances should
                  pay attention to this resource. If no value is provided, the default
                  is: \n ambassador_id: - \"default\""
                items:
                  type: string
                type: array
              auth_context_extensions:
                additionalProperties:
                  type: string
                type: object
              auto_host_rewrite:
                type: boolean
              bypass_auth:
                type: boolean
              bypass_error_response_overrides:
                description: If true, bypasses any `error_response_overrides` set
                  on the Ambassador module.
                type: boolean
              case_sensitive:
                type: boolean
              circuit_breakers:
                items:
                  properties:
                    max_connections:
                      type: integer
                    max_pending_requests:
                      type: integer
                    max_requests:
                      type: integer
                    max_retries:
                      type: integer
                    priority:
                      enum:
                      - default
                      - high
                      type: string
                  type: object
                type: array
              cluster_idle_timeout_ms:
                type: integer
              cluster_max_connection_lifetime_ms:
                type: integer
              cluster_tag:
                type: string
              connect_timeout_ms:
                type: integer
              cors:
                properties:
                  credentials:
                    type: boolean
                  max_age:
                    type: string
                type: object
                x-kubernetes-preserve-unknown-fields: true
              dns_type:
                type: string
              docs:
                description: DocsInfo provides some extra information about the docs
                  for the Mapping (used by the Dev Portal)
                properties:
                  display_name:
                    type: string
                  ignored:
                    type: boolean
                  path:
                    type: string
                  timeout_ms:
                    type: integer
                  url:
                    type: string
                type: object
              enable_ipv4:
                type: boolean
              enable_ipv6:
                type: boolean
              envoy_override:
                type: object
                x-kubernetes-preserve-unknown-fields: true
              error_response_overrides:
                description: Error response overrides for this Mapping. Replaces all
                  of the `error_response_overrides` set on the Ambassador module,
                  if any.
                items:
                  description: A response rewrite for an HTTP error response
                  properties:
                    body:
                      description: The new response body
                      properties:
                        content_type:
                          description: The content type to set on the error response
                            body when using text_format or text_format_source. Defaults
                            to 'text/plain'.
                          type: string
                        json_format:
                          additionalProperties:
                            type: string
                          description: 'A JSON response with content-type: application/json.
                            The values can contain format text like in text_format.'
                          type: object
                        text_format:
                          description: A format string representing a text response
                            body. Content-Type can be set using the `content_type`
                            field below.
                          type: string
                        text_format_source:
                          description: A format string sourced from a file on the
                            Ambassador container. Useful for larger response bodies
                            that should not be placed inline in configuration.
                          properties:
                            filename:
                              description: The name of a file on the Ambassador pod
                                that contains a format text string.
                              type: string
                          type: object
                      type: object
                    on_status_code:
                      description: The status code to match on -- not a pointer because
                        it's required.
                      maximum: 599
                      minimum: 400
                      type: integer
                  required:
                  - body
                  - on_status_code
                  type: object
                minItems: 1
                type: array
              grpc:
                type: boolean
              headers:
                type: object
                x-kubernetes-preserve-unknown-fields: true
              host:
                type: string
              host_redirect:
                type: boolean
              host_regex:
                type: boolean
              host_rewrite:
                type: string
              idle_timeout_ms:
                type: integer
              keepalive:
                properties:
                  idle_time:
                    type: integer
                  interval:
                    type: integer
                  probes:
                    type: integer
                type: object
              labels:
                additionalProperties:
                  description: A MappingLabelGroupsArray is an array of MappingLabelGroups.
                    I know, complex.
                  items:
                    description: 'A MappingLabelGroup is a single element of a MappingLabelGroupsArray:
                      a second map, where the key is a human-readable name that identifies
                      the group.'
                    maxProperties: 1
                    minProperties: 1
                    type: object
                    x-kubernetes-preserve-unknown-fields: true
                  type: array
                description: A DomainMap is the overall Mapping.spec.Labels type.
                  It maps domains (kind of like namespaces for Mapping labels) to
                  arrays of label groups.
                type: object
              load_balancer:
                properties:
                  cookie:
                    properties:
                      name:
                        type: string
                      path:
                        type: string
                      ttl:
                        type: string
                    required:
                    - name
                    type: object
                  header:
                    type: string
                  policy:
                    enum:
                    - round_robin
                    - ring_hash
                    - maglev
                    - least_request
                    type: string
                  source_ip:
                    type: boolean
                required:
                - policy
                type: object
              method:
                type: string
              method_regex:
                type: boolean
              modules:
                items:
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                type: array
              outlier_detection:
                type: string
              path_redirect:
                description: Path replacement to use when generating an HTTP redirect.
                  Used with `host_redirect`.
                type: string
              precedence:
                type: integer
              prefix:
                type: string
              prefix_exact:
                type: boolean
              prefix_redirect:
                description: Prefix rewrite to use when generating an HTTP redirect.
                  Used with `host_redirect`.
                type: string
              prefix_regex:
                type: boolean
              priority:
                type: string
              query_parameters:
                type: object
                x-kubernetes-preserve-unknown-fields: true
              redirect_response_code:
                description: The response code to use when generating an HTTP redirect.
                  Defaults to 301. Used with `host_redirect`.
                enum:
                - 301
                - 302
                - 303
                - 307
                - 308
                type: integer
              regex_headers:
                additionalProperties:
                  type: string
                type: object
              regex_query_parameters:
                additionalProperties:
                  type: string
                type: object
              regex_redirect:
                description: Prefix regex rewrite to use when generating an HTTP redirect.
                  Used with `host_redirect`.
                properties:
                  pattern:
                    type: string
                  substitution:
                    type: string
                type: object
              regex_rewrite:
                properties:
                  pattern:
                    type: string
                  substitution:
                    type: string
                type: object
              resolver:
                type: string
              respect_dns_ttl:
                type: boolean
              retry_policy:
                properties:
                  num_retries:
                    type: integer
                  per_try_timeout:
                    type: string
                  retry_on:
                    enum:
                    - 5xx
                    - gateway-error
                    - connect-failure
                    - retriable-4xx
                    - refused-stream
                    - retriable-status-codes
                    type: string
                type: object
              rewrite:
                type: string
              service:
                type: string
              shadow:
                type: boolean
              timeout_ms:
                description: The timeout for requests that use this Mapping. Overrides
                  `cluster_request_timeout_ms` set on the Ambassador Module, if it
                  exists.
                type: integer
              use_websocket:
                description: 'use_websocket is deprecated, and is equivlaent to setting
                  `allow_upgrade: ["websocket"]`'
                type: boolean
              v3StatsName:
                type: string
              v3health_checks:
                items:
                  description: HealthCheck specifies settings for performing active
                    health checking on upstreams
                  properties:
                    health_check:
                      description: Configuration for where the healthcheck request
                        should be made to
                      maxProperties: 1
                      minProperties: 1
                      properties:
                        grpc:
                          description: HealthCheck for gRPC upstreams. Only one of
                            grpc_health_check or http_health_check may be specified
                          properties:
                            authority:
                              description: The value of the :authority header in the
                                gRPC health check request. If left empty the upstream
                                name will be used.
                              type: string
                            upstream_name:
                              description: The upstream name parameter which will
                                be sent to gRPC service in the health check message
                              type: string
                          required:
                          - upstream_name
                          type: object
                        http:
                          description: HealthCheck for HTTP upstreams. Only one of
                            http_health_check or grpc_health_check may be specified
                          properties:
                            add_request_headers:
                              additionalProperties:
                                properties:
                                  append:
                                    type: boolean
                                  v2Representation:
                                    enum:
                                    - ""
                                    - string
                                    - "null"
                                    type: string
                                  value:
                                    type: string
                                type: object
                              type: object
                            expected_statuses:
                              items:
                                description: A range of response statuses from Start
                                  to End inclusive
                                properties:
                                  max:
                                    description: End of the statuses to include. Must
                                      be between 100 and 599 (inclusive)
                                    maximum: 599
                                    minimum: 100
                                    type: integer
                                  min:
                                    description: Start of the statuses to include.
                                      Must be between 100 and 599 (inclusive)
                                    maximum: 599
                                    minimum: 100
                                    type: integer
                                required:
                                - max
                                - min
                                type: object
                              type: array
                            hostname:
                              type: string
                            path:
                              type: string
                            remove_request_headers:
                              items:
                                type: string
                              type: array
                          required:
                          - path
                          type: object
                      type: object
                    healthy_threshold:
                      description: Number of expected responses for the upstream to
                        be considered healthy. Defaults to 1.
                      type: integer
                    interval:
                      description: Interval between health checks. Defaults to every
                        5 seconds.
                      type: string
                    timeout:
                      description: Timeout for connecting to the health checking endpoint.
                        Defaults to 3 seconds.
                      type: string
                    unhealthy_threshold:
                      description: Number of non-expected responses for the upstream
                        to be considered unhealthy. A single 503 will mark the upstream
                        as unhealthy regardless of the threshold. Defaults to 2.
                      type: integer
                  required:
                  - health_check
                  type: object
                minItems: 1
                type: array
              weight:
                type: integer
            required:
            - prefix
            - service
            type: object
            x-kubernetes-preserve-unknown-fields: true
          status:
            description: MappingStatus defines the observed state of Mapping
            properties:
              reason:
                type: string
              state:
                enum:
                - ""
                - Inactive
                - Running
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
  - additionalPrinterColumns:
    - jsonPath: .spec.host
      name: Source Host
      type: string
    - jsonPath: .spec.prefix
      name: Source Prefix
      type: string
    - jsonPath: .spec.service
      name: Dest Service
      type: string
    - jsonPath: .status.state
      name: State
      type: string
    - jsonPath: .status.reason
      name: Reason
      type: string
    name: v3alpha1
    schema:
      openAPIV3Schema:
        description: Mapping is the Schema for the mappings API
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: MappingSpec defines the desired state of Mapping
            properties:
              add_linkerd_headers:
                type: boolean
              add_request_headers:
                additionalProperties:
                  properties:
                    append:
                      type: boolean
                    v2Representation:
                      enum:
                      - ""
                      - string
                      - "null"
                      type: string
                    value:
                      type: string
                  type: object
                type: object
              add_response_headers:
                additionalProperties:
                  properties:
                    append:
                      type: boolean
                    v2Representation:
                      enum:
                      - ""
                      - string
                      - "null"
                      type: string
                    value:
                      type: string
                  type: object
                type: object
              allow_upgrade:
                description: "A case-insensitive list of the non-HTTP protocols to
                  allow \"upgrading\" to from HTTP via the \"Connection: upgrade\"
                  mechanism[1].  After the upgrade, Ambassador does not interpret
                  the traffic, and behaves similarly to how it does for TCPMappings.
                  \n [1]: https://tools.ietf.org/html/rfc7230#section-6.7 \n For example,
                  if your upstream service supports WebSockets, you would write \n
                  allow_upgrade: - websocket \n Or if your upstream service supports
                  upgrading from HTTP to SPDY (as the Kubernetes apiserver does for
                  `kubectl exec` functionality), you would write \n allow_upgrade:
                  - spdy/3.1"
                items:
                  type: string
                type: array
              ambassador_id:
                description: "AmbassadorID declares which Ambassador instances should
                  pay attention to this resource. If no value is provided, the default
                  is: \n ambassador_id: - \"default\""
                items:
                  type: string
                type: array
              auth_context_extensions:
                additionalProperties:
                  type: string
                type: object
              auto_host_rewrite:
                type: boolean
              bypass_auth:
                type: boolean
              bypass_error_response_overrides:
                description: If true, bypasses any `error_response_overrides` set
                  on the Ambassador module.
                type: boolean
              case_sensitive:
                type: boolean
              circuit_breakers:
                items:
                  properties:
                    max_connections:
                      type: integer
                    max_pending_requests:
                      type: integer
                    max_requests:
                      type: integer
                    max_retries:
                      type: integer
                    priority:
                      enum:
                      - default
                      - high
                      type: string
                  type: object
                type: array
              cluster_idle_timeout_ms:
                type: integer
              cluster_max_connection_lifetime_ms:
                type: integer
              cluster_tag:
                type: string
              connect_timeout_ms:
                type: integer
              cors:
                properties:
                  credentials:
                    type: boolean
                  exposed_headers:
                    items:
                      type: string
                    type: array
                  headers:
                    items:
                      type: string
                    type: array
                  max_age:
                    type: string
                  methods:
                    items:
                      type: string
                    type: array
                  origins:
                    items:
                      type: string
                    type: array
                  v2CommaSeparatedOrigins:
                    type: boolean
                type: object
              dns_type:
                type: string
              docs:
                description: DocsInfo provides some extra information about the docs
                  for the Mapping. Docs is used by both the agent and the DevPortal.
                properties:
                  display_name:
                    type: string
                  ignored:
                    type: boolean
                  path:
                    type: string
                  timeout_ms:
                    type: integer
                  url:
                    type: string
                type: object
              enable_ipv4:
                type: boolean
              enable_ipv6:
                type: boolean
              envoy_override:
                type: object
                x-kubernetes-preserve-unknown-fields: true
              error_response_overrides:
                description: Error response overrides for this Mapping. Replaces all
                  of the `error_response_overrides` set on the Ambassador module,
                  if any.
                items:
                  description: A response rewrite for an HTTP error response
                  properties:
                    body:
                      description: The new response body
                      properties:
                        content_type:
                          description: The content type to set on the error response
                            body when using text_format or text_format_source. Defaults
                            to 'text/plain'.
                          type: string
                        json_format:
                          additionalProperties:
                            type: string
                          description: 'A JSON response with content-type: application/json.
                            The values can contain format text like in text_format.'
                          type: object
                        text_format:
                          description: A format string representing a text response
                            body. Content-Type can be set using the `content_type`
                            field below.
                          type: string
                        text_format_source:
                          description: A format string sourced from a file on the
                            Ambassador container. Useful for larger response bodies
                            that should not be placed inline in configuration.
                          properties:
                            filename:
                              description: The name of a file on the Ambassador pod
                                that contains a format text string.
                              type: string
                          type: object
                      type: object
                    on_status_code:
                      description: The status code to match on -- not a pointer because
                        it's required.
                      maximum: 599
                      minimum: 400
                      type: integer
                  required:
                  - body
                  - on_status_code
                  type: object
                minItems: 1
                type: array
              grpc:
                type: boolean
              headers:
                additionalProperties:
                  type: string
                type: object
              health_checks:
                items:
                  description: HealthCheck specifies settings for performing active
                    health checking on upstreams
                  properties:
                    health_check:
                      description: Configuration for where the healthcheck request
                        should be made to
                      maxProperties: 1
                      minProperties: 1
                      properties:
                        grpc:
                          description: HealthCheck for gRPC upstreams. Only one of
                            grpc_health_check or http_health_check may be specified
                          properties:
                            authority:
                              description: The value of the :authority header in the
                                gRPC health check request. If left empty the upstream
                                name will be used.
                              type: string
                            upstream_name:
                              description: The upstream name parameter which will
                                be sent to gRPC service in the health check message
                              type: string
                          required:
                          - upstream_name
                          type: object
                        http:
                          description: HealthCheck for HTTP upstreams. Only one of
                            http_health_check or grpc_health_check may be specified
                          properties:
                            add_request_headers:
                              additionalProperties:
                                properties:
                                  append:
                                    type: boolean
                                  v2Representation:
                                    enum:
                                    - ""
                                    - string
                                    - "null"
                                    type: string
                                  value:
                                    type: string
                                type: object
                              type: object
                            expected_statuses:
                              items:
                                description: A range of response statuses from Start
                                  to End inclusive
                                properties:
                                  max:
                                    description: End of the statuses to include. Must
                                      be between 100 and 599 (inclusive)
                                    maximum: 599
                                    minimum: 100
                                    type: integer
                                  min:
                                    description: Start of the statuses to include.
                                      Must be between 100 and 599 (inclusive)
                                    maximum: 599
                                    minimum: 100
                                    type: integer
                                required:
                                - max
                                - min
                                type: object
                              type: array
                            hostname:
                              type: string
                            path:
                              type: string
                            remove_request_headers:
                              items:
                                type: string
                              type: array
                          required:
                          - path
                          type: object
                      type: object
                    healthy_threshold:
                      description: Number of expected responses for the upstream to
                        be considered healthy. Defaults to 1.
                      type: integer
                    interval:
                      description: Interval between health checks. Defaults to every
                        5 seconds.
                      type: string
                    timeout:
                      description: Timeout for connecting to the health checking endpoint.
                        Defaults to 3 seconds.
                      type: string
                    unhealthy_threshold:
                      description: Number of non-expected responses for the upstream
                        to be considered unhealthy. A single 503 will mark the upstream
                        as unhealthy regardless of the threshold. Defaults to 2.
                      type: integer
                  required:
                  - health_check
                  type: object
                minItems: 1
                type: array
              host:
                description: "Exact match for the hostname of a request if HostRegex
                  is false; regex match for the hostname if HostRegex is true. \n
                  Host specifies both a match for the ':authority' header of a request,
                  as well as a match criterion for Host CRDs: a Mapping that specifies
                  Host will not associate with a Host that doesn't have a matching
                  Hostname. \n If both Host and Hostname are set, an error is logged,
                  Host is ignored, and Hostname is used. \n DEPRECATED: Host is either
                  an exact match or a regex, depending on HostRegex. Use HostName
                  instead."
                type: string
              host_redirect:
                type: boolean
              host_regex:
                description: 'DEPRECATED: Host is either an exact match or a regex,
                  depending on HostRegex. Use HostName instead.'
                type: boolean
              host_rewrite:
                type: string
              hostname:
                description: "Hostname is a DNS glob specifying the hosts to which
                  this Mapping applies. \n Hostname specifies both a match for the
                  ':authority' header of a request, as well as a match criterion for
                  Host CRDs: a Mapping that specifies Hostname will not associate
                  with a Host that doesn't have a matching Hostname. \n If both Host
                  and Hostname are set, an error is logged, Host is ignored, and Hostname
                  is used."
                type: string
              idle_timeout_ms:
                type: integer
              keepalive:
                properties:
                  idle_time:
                    type: integer
                  interval:
                    type: integer
                  probes:
                    type: integer
                type: object
              labels:
                additionalProperties:
                  description: A MappingLabelGroupsArray is an array of MappingLabelGroups.
                    I know, complex.
                  items:
                    additionalProperties:
                      description: 'A MappingLabelsArray is the value in the MappingLabelGroup:
                        an array of label specifiers.'
                      items:
                        description: "A MappingLabelSpecifier (finally!) defines a
                          single label. \n This mimics envoy/config/route/v3/route_components.proto:RateLimit:Action:action_specifier."
                        maxProperties: 1
                        minProperties: 1
                        properties:
                          destination_cluster:
                            description: Sets the label "destination_cluster=«Envoy
                              destination cluster name»".
                            properties:
                              key:
                                enum:
                                - destination_cluster
                                type: string
                            required:
                            - key
                            type: object
                          generic_key:
                            description: Sets the label "«key»=«value»" (where by
                              default «key» is "generic_key").
                            properties:
                              key:
                                description: The default is "generic_key".
                                type: string
                              v2Shorthand:
                                type: boolean
                              value:
                                type: string
                            required:
                            - value
                            type: object
                          remote_address:
                            description: Sets the label "remote_address=«IP address
                              of the client»".
                            properties:
                              key:
                                enum:
                                - remote_address
                                type: string
                            required:
                            - key
                            type: object
                          request_headers:
                            description: If the «header_name» header is set, then
                              set the label "«key»=«Value of the «header_name» header»";
                              otherwise skip applying this label group.
                            properties:
                              header_name:
                                type: string
                              key:
                                type: string
                              omit_if_not_present:
                                type: boolean
                            required:
                            - header_name
                            - key
                            type: object
                          source_cluster:
                            description: Sets the label "source_cluster=«Envoy source
                              cluster name»".
                            properties:
                              key:
                                enum:
                                - source_cluster
                                type: string
                            required:
                            - key
                            type: object
                        type: object
                      type: array
                    description: 'A MappingLabelGroup is a single element of a MappingLabelGroupsArray:
                      a second map, where the key is a human-readable name that identifies
                      the group.'
                    maxProperties: 1
                    minProperties: 1
                    type: object
                  type: array
                description: A DomainMap is the overall Mapping.spec.Labels type.
                  It maps domains (kind of like namespaces for Mapping labels) to
                  arrays of label groups.
                type: object
              load_balancer:
                properties:
                  cookie:
                    properties:
                      name:
                        type: string
                      path:
                        type: string
                      ttl:
                        type: string
                    required:
                    - name
                    type: object
                  header:
                    type: string
                  policy:
                    enum:
                    - round_robin
                    - ring_hash
                    - maglev
                    - least_request
                    type: string
                  source_ip:
                    type: boolean
                required:
                - policy
                type: object
              method:
                type: string
              method_regex:
                type: boolean
              modules:
                items:
                  type: object
                  x-kubernetes-preserve-unknown-fields: true
                type: array
              outlier_detection:
                type: string
              path_redirect:
                description: Path replacement to use when generating an HTTP redirect.
                  Used with `host_redirect`.
                type: string
              precedence:
                type: integer
              prefix:
                type: string
              prefix_exact:
                type: boolean
              prefix_redirect:
                description: Prefix rewrite to use when generating an HTTP redirect.
                  Used with `host_redirect`.
                type: string
              prefix_regex:
                type: boolean
              priority:
                type: string
              query_parameters:
                additionalProperties:
                  type: string
                type: object
              redirect_response_code:
                description: The response code to use when generating an HTTP redirect.
                  Defaults to 301. Used with `host_redirect`.
                enum:
                - 301
                - 302
                - 303
                - 307
                - 308
                type: integer
              regex_headers:
                additionalProperties:
                  type: string
                type: object
              regex_query_parameters:
                additionalProperties:
                  type: string
                type: object
              regex_redirect:
                description: Prefix regex rewrite to use when generating an HTTP redirect.
                  Used with `host_redirect`.
                properties:
                  pattern:
                    type: string
                  substitution:
                    type: string
                type: object
              regex_rewrite:
                properties:
                  pattern:
                    type: string
                  substitution:
                    type: string
                type: object
              remove_request_headers:
                items:
                  type: string
                type: array
              remove_response_headers:
                items:
                  type: string
                type: array
              resolver:
                type: string
              respect_dns_ttl:
                type: boolean
              retry_policy:
                properties:
                  num_retries:
                    type: integer
                  per_try_timeout:
                    type: string
                  retry_on:
                    enum:
                    - 5xx
                    - gateway-error
                    - connect-failure
                    - retriable-4xx
                    - refused-stream
                    - retriable-status-codes
                    type: string
                type: object
              rewrite:
                type: string
              service:
                type: string
              shadow:
                type: boolean
              stats_name:
                type: string
              timeout_ms:
                description: The timeout for requests that use this Mapping. Overrides
                  `cluster_request_timeout_ms` set on the Ambassador Module, if it
                  exists.
                type: integer
              tls:
                type: string
              use_websocket:
                description: 'use_websocket is deprecated, and is equivlaent to setting
                  `allow_upgrade: ["websocket"]`'
                type: boolean
              v2BoolHeaders:
                items:
                  type: string
                type: array
              v2BoolQueryParameters:
                items:
                  type: string
                type: array
              # TODO: uncomment when [bug](https://github.com/fabric8io/kubernetes-client/issues/5457) is resolved
              # v2ExplicitTLS:
              #   description: V2ExplicitTLS controls some vanity/stylistic elements
              #     when converting from v3alpha1 to v2.  The values in an V2ExplicitTLS
              #     should not in any way affect the runtime operation of Emissary;
              #     except that it may affect internal names in the Envoy config, which
              #     may in turn affect stats names.  But it should not affect any end-user
              #     observable behavior.
              #   properties:
              #     serviceScheme:
              #       description: "ServiceScheme specifies how to spell and capitalize
              #         the scheme-part of the service URL. \n Acceptable values are
              #         \"http://\" (case-insensitive), \"https://\" (case-insensitive),
              #         or \"\".  The value is used if it agrees with whether or not
              #         this resource enables TLS origination, or if something else
              #         in the resource overrides the scheme."
              #       pattern: ^([hH][tT][tT][pP][sS]?://)?$
              #       type: string
              #     tls:
              #       description: "TLS controls whether and how to represent the \"tls\"
              #         field when its value could be implied by the \"service\" field.
              #         \ In v2, there were a lot of different ways to spell an \"empty\"
              #         value, and this field specifies which way to spell it (and will
              #         therefore only be used if the value will indeed be empty). \n
              #         | Value        | Representation                        | Meaning
              #         of representation          | |--------------+---------------------------------------+------------------------------------|
              #         | \"\"           | omit the field                        | defer
              #         to service (no TLSContext)   | | \"null\"       | store an explicit
              #         \"null\" in the field | defer to service (no TLSContext)   |
              #         | \"string\"     | store an empty string in the field    | defer
              #         to service (no TLSContext)   | | \"bool:false\" | store a Boolean
              #         \"false\" in the field  | defer to service (no TLSContext)   |
              #         | \"bool:true\"  | store a Boolean \"true\" in the field   |
              #         originate TLS (no TLSContext)      | \n If the meaning of the
              #         representation contradicts anything else (if a TLSContext is
              #         to be used, or in the case of \"bool:true\" if TLS is not to
              #         be originated), then this field is ignored."
              #       enum:
              #       - ""
              #       - "null"
              #       - bool:true
              #       - bool:false
              #       - string
              #       type: string
              #   type: object
              weight:
                type: integer
            required:
            - prefix
            - service
            type: object
          status:
            description: MappingStatus defines the observed state of Mapping
            properties:
              reason:
                type: string
              state:
                enum:
                - ""
                - Inactive
                - Running
                type: string
            type: object
        type: object
    served: true
    storage: false
    subresources:
      status: {}
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.12.0
  labels:
    app.kubernetes.io/instance: emissary-apiext
    app.kubernetes.io/managed-by: kubectl_apply_-f_emissary-apiext.yaml
    app.kubernetes.io/name: emissary-apiext
    app.kubernetes.io/part-of: emissary-apiext
  name: tlscontexts.getambassador.io
spec:
  conversion:
    strategy: Webhook
    webhook:
      clientConfig:
        service:
          name: emissary-apiext
          namespace: emissary-system
      conversionReviewVersions:
      - v1
  group: getambassador.io
  names:
    categories:
    - ambassador-crds
    kind: TLSContext
    listKind: TLSContextList
    plural: tlscontexts
    singular: tlscontext
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - name: v1
    schema:
      openAPIV3Schema:
        description: TLSContext is the Schema for the tlscontexts API
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: TLSContextSpec defines the desired state of TLSContext
            properties:
              alpn_protocols:
                type: string
              ca_secret:
                type: string
              cacert_chain_file:
                type: string
              cert_chain_file:
                type: string
              cert_required:
                type: boolean
              cipher_suites:
                items:
                  type: string
                type: array
              ecdh_curves:
                items:
                  type: string
                type: array
              hosts:
                items:
                  type: string
                type: array
              max_tls_version:
                enum:
                - v1.0
                - v1.1
                - v1.2
                - v1.3
                type: string
              min_tls_version:
                enum:
                - v1.0
                - v1.1
                - v1.2
                - v1.3
                type: string
              private_key_file:
                type: string
              redirect_cleartext_from:
                type: integer
              secret:
                type: string
              secret_namespacing:
                type: boolean
              sni:
                type: string
              v3CRLSecret:
                type: string
            type: object
            x-kubernetes-preserve-unknown-fields: true
        type: object
    served: true
    storage: false
  - name: v2
    schema:
      openAPIV3Schema:
        description: TLSContext is the Schema for the tlscontexts API
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: TLSContextSpec defines the desired state of TLSContext
            properties:
              alpn_protocols:
                type: string
              # [operator] added manually by coping over from v3alpha1
              ambassador_id:
                description: "AmbassadorID declares which Ambassador instances should
                  pay attention to this resource. If no value is provided, the default
                  is: \n ambassador_id: - \"default\""
                items:
                  type: string
                type: array
              ca_secret:
                type: string
              cacert_chain_file:
                type: string
              cert_chain_file:
                type: string
              cert_required:
                type: boolean
              cipher_suites:
                items:
                  type: string
                type: array
              ecdh_curves:
                items:
                  type: string
                type: array
              hosts:
                items:
                  type: string
                type: array
              max_tls_version:
                enum:
                - v1.0
                - v1.1
                - v1.2
                - v1.3
                type: string
              min_tls_version:
                enum:
                - v1.0
                - v1.1
                - v1.2
                - v1.3
                type: string
              private_key_file:
                type: string
              redirect_cleartext_from:
                type: integer
              secret:
                type: string
              secret_namespacing:
                type: boolean
              sni:
                type: string
              v3CRLSecret:
                type: string
            type: object
            x-kubernetes-preserve-unknown-fields: true
        type: object
    served: true
    storage: true
  - name: v3alpha1
    schema:
      openAPIV3Schema:
        description: TLSContext is the Schema for the tlscontexts API
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: TLSContextSpec defines the desired state of TLSContext
            properties:
              alpn_protocols:
                type: string
              ambassador_id:
                description: "AmbassadorID declares which Ambassador instances should
                  pay attention to this resource. If no value is provided, the default
                  is: \n ambassador_id: - \"default\""
                items:
                  type: string
                type: array
              ca_secret:
                type: string
              cacert_chain_file:
                type: string
              cert_chain_file:
                type: string
              cert_required:
                type: boolean
              cipher_suites:
                items:
                  type: string
                type: array
              crl_secret:
                type: string
              ecdh_curves:
                items:
                  type: string
                type: array
              hosts:
                items:
                  type: string
                type: array
              max_tls_version:
                enum:
                - v1.0
                - v1.1
                - v1.2
                - v1.3
                type: string
              min_tls_version:
                enum:
                - v1.0
                - v1.1
                - v1.2
                - v1.3
                type: string
              private_key_file:
                type: string
              redirect_cleartext_from:
                type: integer
              secret:
                type: string
              secret_namespacing:
                type: boolean
              sni:
                type: string
            type: object
        type: object
    served: true
    storage: false
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.12.0
  labels:
    app.kubernetes.io/instance: emissary-apiext
    app.kubernetes.io/managed-by: kubectl_apply_-f_emissary-apiext.yaml
    app.kubernetes.io/name: emissary-apiext
    app.kubernetes.io/part-of: emissary-apiext
  name: hosts.getambassador.io
spec:
  conversion:
    strategy: Webhook
    webhook:
      clientConfig:
        service:
          name: emissary-apiext
          namespace: emissary-system
      conversionReviewVersions:
      - v1
  group: getambassador.io
  names:
    categories:
    - ambassador-crds
    kind: Host
    listKind: HostList
    plural: hosts
    singular: host
  preserveUnknownFields: false
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .spec.hostname
      name: Hostname
      type: string
    - jsonPath: .status.state
      name: State
      type: string
    - jsonPath: .status.phaseCompleted
      name: Phase Completed
      type: string
    - jsonPath: .status.phasePending
      name: Phase Pending
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v2
    schema:
      openAPIV3Schema:
        description: Host is the Schema for the hosts API
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: HostSpec defines the desired state of Host
            properties:
              acmeProvider:
                description: Specifies whether/who to talk ACME with to automatically
                  manage the $tlsSecret.
                properties:
                  authority:
                    description: Specifies who to talk ACME with to get certs. Defaults
                      to Let's Encrypt; if "none" (case-insensitive), do not try to
                      do ACME for this Host.
                    type: string
                  email:
                    type: string
                  privateKeySecret:
                    description: "Specifies the Kubernetes Secret to use to store
                      the private key of the ACME account (essentially, where to store
                      the auto-generated password for the auto-created ACME account).
                      \ You should not normally need to set this--the default value
                      is based on a combination of the ACME authority being registered
                      wit and the email address associated with the account. \n Note
                      that this is a native-Kubernetes-style core.v1.LocalObjectReference,
                      not an Ambassador-style `{name}.{namespace}` string.  Because
                      we're opinionated, it does not support referencing a Secret
                      in another namespace (because most native Kubernetes resources
                      don't support that), but if we ever abandon that opinion and
                      decide to support non-local references it, it would be by adding
                      a `namespace:` field by changing it from a core.v1.LocalObjectReference
                      to a core.v1.SecretReference, not by adopting the `{name}.{namespace}`
                      notation."
                    properties:
                      name:
                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                          TODO: Add other useful fields. apiVersion, kind, uid?'
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                  registration:
                    description: This is normally set automatically
                    type: string
                type: object
              ambassador_id:
                description: Common to all Ambassador objects (and optional).
                items:
                  type: string
                type: array
              hostname:
                description: Hostname by which the Ambassador can be reached.
                type: string
              previewUrl:
                description: Configuration for the Preview URL feature of Service
                  Preview. Defaults to preview URLs not enabled.
                properties:
                  enabled:
                    description: Is the Preview URL feature enabled?
                    type: boolean
                  type:
                    description: What type of Preview URL is allowed?
                    enum:
                    - Path
                    type: string
                type: object
              requestPolicy:
                description: Request policy definition.
                properties:
                  insecure:
                    properties:
                      action:
                        enum:
                        - Redirect
                        - Reject
                        - Route
                        type: string
                      additionalPort:
                        type: integer
                    type: object
                type: object
              selector:
                description: Selector by which we can find further configuration.
                  Defaults to hostname=$hostname
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: A label selector requirement is a selector that
                        contains values, a key, and an operator that relates the key
                        and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: operator represents a key's relationship to
                            a set of values. Valid operators are In, NotIn, Exists
                            and DoesNotExist.
                          type: string
                        values:
                          description: values is an array of string values. If the
                            operator is In or NotIn, the values array must be non-empty.
                            If the operator is Exists or DoesNotExist, the values
                            array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: matchLabels is a map of {key,value} pairs. A single
                      {key,value} in the matchLabels map is equivalent to an element
                      of matchExpressions, whose key field is "key", the operator
                      is "In", and the values array contains only "value". The requirements
                      are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              tls:
                description: TLS configuration.  It is not valid to specify both `tlsContext`
                  and `tls`.
                properties:
                  alpn_protocols:
                    type: string
                  ca_secret:
                    type: string
                  cacert_chain_file:
                    type: string
                  cert_chain_file:
                    type: string
                  cert_required:
                    type: boolean
                  cipher_suites:
                    items:
                      type: string
                    type: array
                  ecdh_curves:
                    items:
                      type: string
                    type: array
                  max_tls_version:
                    type: string
                  min_tls_version:
                    type: string
                  private_key_file:
                    type: string
                  redirect_cleartext_from:
                    type: integer
                  sni:
                    type: string
                  v3CRLSecret:
                    type: string
                type: object
              tlsContext:
                description: "Name of the TLSContext the Host resource is linked with.
                  It is not valid to specify both `tlsContext` and `tls`. \n Note
                  that this is a native-Kubernetes-style core.v1.LocalObjectReference,
                  not an Ambassador-style `{name}.{namespace}` string.  Because we're
                  opinionated, it does not support referencing a Secret in another
                  namespace (because most native Kubernetes resources don't support
                  that), but if we ever abandon that opinion and decide to support
                  non-local references it, it would be by adding a `namespace:` field
                  by changing it from a core.v1.LocalObjectReference to a core.v1.SecretReference,
                  not by adopting the `{name}.{namespace}` notation."
                properties:
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      TODO: Add other useful fields. apiVersion, kind, uid?'
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              tlsSecret:
                description: Name of the Kubernetes secret into which to save generated
                  certificates.  If ACME is enabled (see $acmeProvider), then the
                  default is $hostname; otherwise the default is "".  If the value
                  is "", then we do not do TLS for this Host.
                properties:
                  name:
                    description: name is unique within a namespace to reference a
                      secret resource.
                    type: string
                  namespace:
                    description: namespace defines the space within which the secret
                      name must be unique.
                    type: string
                type: object
                x-kubernetes-map-type: atomic
            type: object
            x-kubernetes-preserve-unknown-fields: true
          status:
            description: HostStatus defines the observed state of Host
            properties:
              errorBackoff:
                type: string
              errorReason:
                description: errorReason, errorTimestamp, and errorBackoff are valid
                  when state==Error.
                type: string
              errorTimestamp:
                format: date-time
                type: string
              phaseCompleted:
                description: phaseCompleted and phasePending are valid when state==Pending
                  or state==Error.
                enum:
                - NA
                - DefaultsFilled
                - ACMEUserPrivateKeyCreated
                - ACMEUserRegistered
                - ACMECertificateChallenge
                type: string
              phasePending:
                description: phaseCompleted and phasePending are valid when state==Pending
                  or state==Error.
                enum:
                - NA
                - DefaultsFilled
                - ACMEUserPrivateKeyCreated
                - ACMEUserRegistered
                - ACMECertificateChallenge
                type: string
              state:
                enum:
                - Initial
                - Pending
                - Ready
                - Error
                type: string
              tlsCertificateSource:
                enum:
                - Unknown
                - None
                - Other
                - ACME
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
  - additionalPrinterColumns:
    - jsonPath: .spec.hostname
      name: Hostname
      type: string
    - jsonPath: .status.state
      name: State
      type: string
    - jsonPath: .status.phaseCompleted
      name: Phase Completed
      type: string
    - jsonPath: .status.phasePending
      name: Phase Pending
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v3alpha1
    schema:
      openAPIV3Schema:
        description: Host is the Schema for the hosts API
        properties:
          apiVersion:
            description: 'APIVersion defines the versioned schema of this representation
              of an object. Servers should convert recognized schemas to the latest
              internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
            type: string
          kind:
            description: 'Kind is a string value representing the REST resource this
              object represents. Servers may infer this from the endpoint the client
              submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            description: HostSpec defines the desired state of Host
            properties:
              acmeProvider:
                description: Specifies whether/who to talk ACME with to automatically
                  manage the $tlsSecret.
                properties:
                  authority:
                    description: Specifies who to talk ACME with to get certs. Defaults
                      to Let's Encrypt; if "none" (case-insensitive), do not try to
                      do ACME for this Host.
                    type: string
                  email:
                    type: string
                  privateKeySecret:
                    description: "Specifies the Kubernetes Secret to use to store
                      the private key of the ACME account (essentially, where to store
                      the auto-generated password for the auto-created ACME account).
                      \ You should not normally need to set this--the default value
                      is based on a combination of the ACME authority being registered
                      wit and the email address associated with the account. \n Note
                      that this is a native-Kubernetes-style core.v1.LocalObjectReference,
                      not an Ambassador-style `{name}.{namespace}` string.  Because
                      we're opinionated, it does not support referencing a Secret
                      in another namespace (because most native Kubernetes resources
                      don't support that), but if we ever abandon that opinion and
                      decide to support non-local references it, it would be by adding
                      a `namespace:` field by changing it from a core.v1.LocalObjectReference
                      to a core.v1.SecretReference, not by adopting the `{name}.{namespace}`
                      notation."
                    properties:
                      name:
                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                          TODO: Add other useful fields. apiVersion, kind, uid?'
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                  registration:
                    description: This is normally set automatically
                    type: string
                type: object
              ambassador_id:
                description: Common to all Ambassador objects (and optional).
                items:
                  type: string
                type: array
              hostname:
                description: Hostname by which the Ambassador can be reached.
                type: string
              mappingSelector:
                description: Selector for Mappings we'll associate with this Host.
                  At the moment, Selector and MappingSelector are synonyms, but that
                  will change soon.
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: A label selector requirement is a selector that
                        contains values, a key, and an operator that relates the key
                        and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: operator represents a key's relationship to
                            a set of values. Valid operators are In, NotIn, Exists
                            and DoesNotExist.
                          type: string
                        values:
                          description: values is an array of string values. If the
                            operator is In or NotIn, the values array must be non-empty.
                            If the operator is Exists or DoesNotExist, the values
                            array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: matchLabels is a map of {key,value} pairs. A single
                      {key,value} in the matchLabels map is equivalent to an element
                      of matchExpressions, whose key field is "key", the operator
                      is "In", and the values array contains only "value". The requirements
                      are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              previewUrl:
                description: Configuration for the Preview URL feature of Service
                  Preview. Defaults to preview URLs not enabled.
                properties:
                  enabled:
                    description: Is the Preview URL feature enabled?
                    type: boolean
                  type:
                    description: What type of Preview URL is allowed?
                    enum:
                    - Path
                    type: string
                type: object
              requestPolicy:
                description: Request policy definition.
                properties:
                  insecure:
                    properties:
                      action:
                        enum:
                        - Redirect
                        - Reject
                        - Route
                        type: string
                      additionalPort:
                        type: integer
                    type: object
                type: object
              selector:
                description: 'DEPRECATED: Selector by which we can find further configuration.
                  Use MappingSelector instead.'
                properties:
                  matchExpressions:
                    description: matchExpressions is a list of label selector requirements.
                      The requirements are ANDed.
                    items:
                      description: A label selector requirement is a selector that
                        contains values, a key, and an operator that relates the key
                        and values.
                      properties:
                        key:
                          description: key is the label key that the selector applies
                            to.
                          type: string
                        operator:
                          description: operator represents a key's relationship to
                            a set of values. Valid operators are In, NotIn, Exists
                            and DoesNotExist.
                          type: string
                        values:
                          description: values is an array of string values. If the
                            operator is In or NotIn, the values array must be non-empty.
                            If the operator is Exists or DoesNotExist, the values
                            array must be empty. This array is replaced during a strategic
                            merge patch.
                          items:
                            type: string
                          type: array
                      required:
                      - key
                      - operator
                      type: object
                    type: array
                  matchLabels:
                    additionalProperties:
                      type: string
                    description: matchLabels is a map of {key,value} pairs. A single
                      {key,value} in the matchLabels map is equivalent to an element
                      of matchExpressions, whose key field is "key", the operator
                      is "In", and the values array contains only "value". The requirements
                      are ANDed.
                    type: object
                type: object
                x-kubernetes-map-type: atomic
              tls:
                description: TLS configuration.  It is not valid to specify both `tlsContext`
                  and `tls`.
                properties:
                  alpn_protocols:
                    type: string
                  ca_secret:
                    type: string
                  cacert_chain_file:
                    type: string
                  cert_chain_file:
                    type: string
                  cert_required:
                    type: boolean
                  cipher_suites:
                    items:
                      type: string
                    type: array
                  crl_secret:
                    type: string
                  ecdh_curves:
                    items:
                      type: string
                    type: array
                  max_tls_version:
                    type: string
                  min_tls_version:
                    type: string
                  private_key_file:
                    type: string
                  redirect_cleartext_from:
                    type: integer
                  sni:
                    type: string
                type: object
              tlsContext:
                description: "Name of the TLSContext the Host resource is linked with.
                  It is not valid to specify both `tlsContext` and `tls`. \n Note
                  that this is a native-Kubernetes-style core.v1.LocalObjectReference,
                  not an Ambassador-style `{name}.{namespace}` string.  Because we're
                  opinionated, it does not support referencing a Secret in another
                  namespace (because most native Kubernetes resources don't support
                  that), but if we ever abandon that opinion and decide to support
                  non-local references it, it would be by adding a `namespace:` field
                  by changing it from a core.v1.LocalObjectReference to a core.v1.SecretReference,
                  not by adopting the `{name}.{namespace}` notation."
                properties:
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      TODO: Add other useful fields. apiVersion, kind, uid?'
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              tlsSecret:
                description: Name of the Kubernetes secret into which to save generated
                  certificates.  If ACME is enabled (see $acmeProvider), then the
                  default is $hostname; otherwise the default is "".  If the value
                  is "", then we do not do TLS for this Host.
                properties:
                  name:
                    description: name is unique within a namespace to reference a
                      secret resource.
                    type: string
                  namespace:
                    description: namespace defines the space within which the secret
                      name must be unique.
                    type: string
                type: object
                x-kubernetes-map-type: atomic
            type: object
          status:
            description: HostStatus defines the observed state of Host
            properties:
              errorBackoff:
                type: string
              errorReason:
                description: errorReason, errorTimestamp, and errorBackoff are valid
                  when state==Error.
                type: string
              errorTimestamp:
                format: date-time
                type: string
              phaseCompleted:
                description: phaseCompleted and phasePending are valid when state==Pending
                  or state==Error.
                enum:
                - NA
                - DefaultsFilled
                - ACMEUserPrivateKeyCreated
                - ACMEUserRegistered
                - ACMECertificateChallenge
                type: string
              phasePending:
                description: phaseCompleted and phasePending are valid when state==Pending
                  or state==Error.
                enum:
                - NA
                - DefaultsFilled
                - ACMEUserPrivateKeyCreated
                - ACMEUserRegistered
                - ACMECertificateChallenge
                type: string
              state:
                enum:
                - Initial
                - Pending
                - Ready
                - Error
                type: string
              tlsCertificateSource:
                enum:
                - Unknown
                - None
                - Other
                - ACME
                type: string
            type: object
        type: object
    served: true
    storage: false
    subresources:
      status: {}
