---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: meshexternalservices.kuma.io
spec:
  group: kuma.io
  names:
    categories:
    - kuma
    kind: MeshExternalService
    listKind: MeshExternalServiceList
    plural: meshexternalservices
    shortNames:
    - extsvc
    singular: meshexternalservice
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .status.addresses[0].hostname
      name: Hostname
      type: string
    name: v1alpha1
    schema:
      openAPIV3Schema:
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: Spec is the specification of the Kuma MeshExternalService
              resource.
            properties:
              endpoints:
                description: Endpoints defines a list of destinations to send traffic
                  to.
                items:
                  properties:
                    address:
                      description: Address defines an address to which a user want
                        to send a request. Is possible to provide `domain`, `ip`.
                      example: example.com
                      minLength: 1
                      type: string
                    port:
                      description: Port of the endpoint
                      maximum: 65535
                      minimum: 1
                      type: integer
                  required:
                  - address
                  - port
                  type: object
                type: array
              extension:
                description: Extension struct for a plugin configuration, in the presence
                  of an extension `endpoints` and `tls` are not required anymore -
                  it's up to the extension to validate them independently.
                properties:
                  config:
                    description: Config freeform configuration for the extension.
                    x-kubernetes-preserve-unknown-fields: true
                  type:
                    description: Type of the extension.
                    type: string
                required:
                - type
                type: object
              match:
                description: Match defines traffic that should be routed through the
                  sidecar.
                properties:
                  port:
                    description: Port defines a port to which a user does request.
                    maximum: 65535
                    minimum: 1
                    type: integer
                  protocol:
                    default: tcp
                    description: 'Protocol defines a protocol of the communication.
                      Possible values: `tcp`, `grpc`, `http`, `http2`.'
                    enum:
                    - tcp
                    - grpc
                    - http
                    - http2
                    type: string
                  type:
                    default: HostnameGenerator
                    description: Type of the match, only `HostnameGenerator` is available
                      at the moment.
                    enum:
                    - HostnameGenerator
                    type: string
                required:
                - port
                type: object
              tls:
                description: Tls provides a TLS configuration when proxy is resposible
                  for a TLS origination
                properties:
                  allowRenegotiation:
                    default: false
                    description: |-
                      AllowRenegotiation defines if TLS sessions will allow renegotiation.
                      Setting this to true is not recommended for security reasons.
                    type: boolean
                  enabled:
                    default: false
                    description: Enabled defines if proxy should originate TLS.
                    type: boolean
                  verification:
                    description: Verification section for providing TLS verification
                      details.
                    properties:
                      caCert:
                        description: CaCert defines a certificate of CA.
                        properties:
                          inline:
                            description: Data source is inline bytes.
                            format: byte
                            type: string
                          inlineString:
                            description: Data source is inline string`
                            type: string
                          secret:
                            description: Data source is a secret with given Secret
                              key.
                            type: string
                        type: object
                      clientCert:
                        description: ClientCert defines a certificate of a client.
                        properties:
                          inline:
                            description: Data source is inline bytes.
                            format: byte
                            type: string
                          inlineString:
                            description: Data source is inline string`
                            type: string
                          secret:
                            description: Data source is a secret with given Secret
                              key.
                            type: string
                        type: object
                      clientKey:
                        description: ClientKey defines a client private key.
                        properties:
                          inline:
                            description: Data source is inline bytes.
                            format: byte
                            type: string
                          inlineString:
                            description: Data source is inline string`
                            type: string
                          secret:
                            description: Data source is a secret with given Secret
                              key.
                            type: string
                        type: object
                      mode:
                        default: Secured
                        description: Mode defines if proxy should skip verification,
                          one of `SkipSAN`, `SkipCA`, `Secured`, `SkipAll`. Default
                          `Secured`.
                        enum:
                        - SkipSAN
                        - SkipCA
                        - Secured
                        - SkipAll
                        type: string
                      serverName:
                        description: ServerName overrides the default Server Name
                          Indicator set by Kuma.
                        type: string
                      subjectAltNames:
                        description: SubjectAltNames list of names to verify in the
                          certificate.
                        items:
                          properties:
                            type:
                              default: Exact
                              description: 'Type specifies matching type, one of `Exact`,
                                `Prefix`. Default: `Exact`'
                              enum:
                              - Exact
                              - Prefix
                              type: string
                            value:
                              description: Value to match.
                              type: string
                          required:
                          - value
                          type: object
                        type: array
                    type: object
                  version:
                    description: Version section for providing version specification.
                    properties:
                      max:
                        default: TLSAuto
                        description: Max defines maximum supported version. One of
                          `TLSAuto`, `TLS10`, `TLS11`, `TLS12`, `TLS13`.
                        enum:
                        - TLSAuto
                        - TLS10
                        - TLS11
                        - TLS12
                        - TLS13
                        type: string
                      min:
                        default: TLSAuto
                        description: Min defines minimum supported version. One of
                          `TLSAuto`, `TLS10`, `TLS11`, `TLS12`, `TLS13`.
                        enum:
                        - TLSAuto
                        - TLS10
                        - TLS11
                        - TLS12
                        - TLS13
                        type: string
                    type: object
                type: object
            required:
            - match
            type: object
          status:
            description: Status is the current status of the Kuma MeshExternalService
              resource.
            properties:
              addresses:
                description: Addresses section for generated domains
                items:
                  properties:
                    hostname:
                      type: string
                    hostnameGeneratorRef:
                      properties:
                        coreName:
                          type: string
                      required:
                      - coreName
                      type: object
                    origin:
                      type: string
                  type: object
                type: array
              hostnameGenerators:
                items:
                  properties:
                    conditions:
                      description: Conditions is an array of hostname generator conditions.
                      items:
                        properties:
                          message:
                            description: |-
                              message is a human readable message indicating details about the transition.
                              This may be an empty string.
                            maxLength: 32768
                            type: string
                          reason:
                            description: |-
                              reason contains a programmatic identifier indicating the reason for the condition's last transition.
                              Producers of specific condition types may define expected values and meanings for this field,
                              and whether the values are considered a guaranteed API.
                              The value should be a CamelCase string.
                              This field may not be empty.
                            maxLength: 1024
                            minLength: 1
                            pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
                            type: string
                          status:
                            description: status of the condition, one of True, False,
                              Unknown.
                            enum:
                            - "True"
                            - "False"
                            - Unknown
                            type: string
                          type:
                            description: type of condition in CamelCase or in foo.example.com/CamelCase.
                            maxLength: 316
                            pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
                            type: string
                        required:
                        - message
                        - reason
                        - status
                        - type
                        type: object
                      type: array
                      x-kubernetes-list-map-keys:
                      - type
                      x-kubernetes-list-type: map
                    hostnameGeneratorRef:
                      properties:
                        coreName:
                          type: string
                      required:
                      - coreName
                      type: object
                  required:
                  - hostnameGeneratorRef
                  type: object
                type: array
              vip:
                description: Vip section for allocated IP
                properties:
                  ip:
                    description: Value allocated IP for a provided domain with `HostnameGenerator`
                      type in a match section.
                    type: string
                type: object
            type: object
        type: object
    served: true
    storage: true
    subresources: {}
