---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.11.3
  creationTimestamp: null
  name: meshhealthchecks.kuma.io
spec:
  group: kuma.io
  names:
    categories:
    - kuma
    kind: MeshHealthCheck
    listKind: MeshHealthCheckList
    plural: meshhealthchecks
    singular: meshhealthcheck
  scope: Namespaced
  versions:
  - 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 MeshHealthCheck resource.
            properties:
              targetRef:
                description: TargetRef is a reference to the resource the policy takes
                  an effect on. The resource could be either a real store object or
                  virtual resource defined inplace.
                properties:
                  kind:
                    description: Kind of the referenced resource
                    enum:
                    - Mesh
                    - MeshSubset
                    - MeshService
                    - MeshServiceSubset
                    - MeshGatewayRoute
                    type: string
                  mesh:
                    description: Mesh is reserved for future use to identify cross
                      mesh resources.
                    type: string
                  name:
                    description: 'Name of the referenced resource. Can only be used
                      with kinds: `MeshService`, `MeshServiceSubset` and `MeshGatewayRoute`'
                    type: string
                  tags:
                    additionalProperties:
                      type: string
                    description: Tags used to select a subset of proxies by tags.
                      Can only be used with kinds `MeshSubset` and `MeshServiceSubset`
                    type: object
                type: object
              to:
                description: To list makes a match between the consumed services and
                  corresponding configurations
                items:
                  properties:
                    default:
                      description: Default is a configuration specific to the group
                        of destinations referenced in 'targetRef'
                      properties:
                        alwaysLogHealthCheckFailures:
                          description: If set to true, health check failure events
                            will always be logged. If set to false, only the initial
                            health check failure event will be logged. The default
                            value is false.
                          type: boolean
                        eventLogPath:
                          description: Specifies the path to the file where Envoy
                            can log health check events. If empty, no event log will
                            be written.
                          type: string
                        failTrafficOnPanic:
                          description: If set to true, Envoy will not consider any
                            hosts when the cluster is in 'panic mode'. Instead, the
                            cluster will fail all requests as if all hosts are unhealthy.
                            This can help avoid potentially overwhelming a failing
                            service.
                          type: boolean
                        grpc:
                          description: GrpcHealthCheck defines gRPC configuration
                            which will instruct the service the health check will
                            be made for is a gRPC service.
                          properties:
                            authority:
                              description: The value of the :authority header in the
                                gRPC health check request, by default name of the
                                cluster this health check is associated with
                              type: string
                            disabled:
                              description: If true the GrpcHealthCheck is disabled
                              type: boolean
                            serviceName:
                              description: Service name parameter which will be sent
                                to gRPC service
                              type: string
                          type: object
                        healthyPanicThreshold:
                          anyOf:
                          - type: integer
                          - type: string
                          description: Allows to configure panic threshold for Envoy
                            cluster. If not specified, the default is 50%. To disable
                            panic mode, set to 0%. Either int or decimal represented
                            as string.
                          x-kubernetes-int-or-string: true
                        healthyThreshold:
                          default: 1
                          description: Number of consecutive healthy checks before
                            considering a host healthy.
                          format: int32
                          type: integer
                        http:
                          description: HttpHealthCheck defines HTTP configuration
                            which will instruct the service the health check will
                            be made for is an HTTP service.
                          properties:
                            disabled:
                              description: If true the HttpHealthCheck is disabled
                              type: boolean
                            expectedStatuses:
                              description: List of HTTP response statuses which are
                                considered healthy
                              items:
                                format: int32
                                type: integer
                              type: array
                            path:
                              default: /
                              description: The HTTP path which will be requested during
                                the health check (ie. /health)
                              type: string
                            requestHeadersToAdd:
                              description: The list of HTTP headers which should be
                                added to each health check request
                              properties:
                                add:
                                  items:
                                    properties:
                                      name:
                                        maxLength: 256
                                        minLength: 1
                                        pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                        type: string
                                      value:
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  maxItems: 16
                                  type: array
                                  x-kubernetes-list-map-keys:
                                  - name
                                  x-kubernetes-list-type: map
                                set:
                                  items:
                                    properties:
                                      name:
                                        maxLength: 256
                                        minLength: 1
                                        pattern: ^[a-z0-9!#$%&'*+\-.^_\x60|~]+$
                                        type: string
                                      value:
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  maxItems: 16
                                  type: array
                                  x-kubernetes-list-map-keys:
                                  - name
                                  x-kubernetes-list-type: map
                              type: object
                          type: object
                        initialJitter:
                          description: If specified, Envoy will start health checking
                            after a random time in ms between 0 and initialJitter.
                            This only applies to the first health check.
                          type: string
                        interval:
                          default: 1m
                          description: Interval between consecutive health checks.
                          type: string
                        intervalJitter:
                          description: If specified, during every interval Envoy will
                            add IntervalJitter to the wait time.
                          type: string
                        intervalJitterPercent:
                          description: If specified, during every interval Envoy will
                            add IntervalJitter * IntervalJitterPercent / 100 to the
                            wait time. If IntervalJitter and IntervalJitterPercent
                            are both set, both of them will be used to increase the
                            wait time.
                          format: int32
                          type: integer
                        noTrafficInterval:
                          description: The "no traffic interval" is a special health
                            check interval that is used when a cluster has never had
                            traffic routed to it. This lower interval allows cluster
                            information to be kept up to date, without sending a potentially
                            large amount of active health checking traffic for no
                            reason. Once a cluster has been used for traffic routing,
                            Envoy will shift back to using the standard health check
                            interval that is defined. Note that this interval takes
                            precedence over any other. The default value for "no traffic
                            interval" is 60 seconds.
                          type: string
                        reuseConnection:
                          description: Reuse health check connection between health
                            checks. Default is true.
                          type: boolean
                        tcp:
                          description: TcpHealthCheck defines configuration for specifying
                            bytes to send and expected response during the health
                            check
                          properties:
                            disabled:
                              description: If true the TcpHealthCheck is disabled
                              type: boolean
                            receive:
                              description: List of Base64 encoded blocks of strings
                                expected as a response. When checking the response,
                                "fuzzy" matching is performed such that each block
                                must be found, and in the order specified, but not
                                necessarily contiguous. If not provided or empty,
                                checks will be performed as "connect only" and be
                                marked as successful when TCP connection is successfully
                                established.
                              items:
                                type: string
                              type: array
                            send:
                              description: Base64 encoded content of the message which
                                will be sent during the health check to the target
                              type: string
                          type: object
                        timeout:
                          default: 15s
                          description: Maximum time to wait for a health check response.
                          type: string
                        unhealthyThreshold:
                          default: 5
                          description: Number of consecutive unhealthy checks before
                            considering a host unhealthy.
                          format: int32
                          type: integer
                      type: object
                    targetRef:
                      description: TargetRef is a reference to the resource that represents
                        a group of destinations.
                      properties:
                        kind:
                          description: Kind of the referenced resource
                          enum:
                          - Mesh
                          - MeshSubset
                          - MeshService
                          - MeshServiceSubset
                          - MeshGatewayRoute
                          type: string
                        mesh:
                          description: Mesh is reserved for future use to identify
                            cross mesh resources.
                          type: string
                        name:
                          description: 'Name of the referenced resource. Can only
                            be used with kinds: `MeshService`, `MeshServiceSubset`
                            and `MeshGatewayRoute`'
                          type: string
                        tags:
                          additionalProperties:
                            type: string
                          description: Tags used to select a subset of proxies by
                            tags. Can only be used with kinds `MeshSubset` and `MeshServiceSubset`
                          type: object
                      type: object
                  required:
                  - targetRef
                  type: object
                type: array
            required:
            - targetRef
            type: object
        type: object
    served: true
    storage: true
