---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.10.0
  creationTimestamp: null
  name: meshtraces.kuma.io
spec:
  group: kuma.io
  names:
    categories:
    - kuma
    kind: MeshTrace
    listKind: MeshTraceList
    plural: meshtraces
    singular: meshtrace
  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 MeshTrace resource.
            properties:
              default:
                description: MeshTrace configuration.
                properties:
                  backends:
                    description: A one element array of backend definition. Envoy
                      allows configuring only 1 backend, so the natural way of representing
                      that would be just one object. Unfortunately due to the reasons
                      explained in MADR 009-tracing-policy this has to be a one element
                      array for now.
                    items:
                      description: Only one of zipkin or datadog can be used.
                      properties:
                        datadog:
                          description: Datadog backend configuration.
                          properties:
                            splitService:
                              description: 'Determines if datadog service name should
                                be split based on traffic direction and destination.
                                For example, with `splitService: true` and a `backend`
                                service that communicates with a couple of databases,
                                you would get service names like `backend_INBOUND`,
                                `backend_OUTBOUND_db1`, and `backend_OUTBOUND_db2`
                                in Datadog. Default: false'
                              type: boolean
                            url:
                              description: Address of Datadog collector, only host
                                and port are allowed (no paths, fragments etc.)
                              type: string
                          type: object
                        zipkin:
                          description: Zipkin backend configuration.
                          properties:
                            apiVersion:
                              description: 'Version of the API. values: httpJson,
                                httpProto. Default: httpJson see https://github.com/envoyproxy/envoy/blob/v1.22.0/api/envoy/config/trace/v3/zipkin.proto#L66'
                              type: string
                            sharedSpanContext:
                              description: 'Determines whether client and server spans
                                will share the same span context. Default: true. https://github.com/envoyproxy/envoy/blob/v1.22.0/api/envoy/config/trace/v3/zipkin.proto#L63'
                              type: boolean
                            traceId128bit:
                              description: 'Generate 128bit traces. Default: false'
                              type: boolean
                            url:
                              description: Address of Zipkin collector.
                              type: string
                          type: object
                      type: object
                    nullable: true
                    type: array
                  sampling:
                    description: Sampling configuration. Sampling is the process by
                      which a decision is made on whether to process/export a span
                      or not.
                    properties:
                      client:
                        description: 'Target percentage of requests that will be force
                          traced if the ''x-client-trace-id'' header is set. Default:
                          100% Mirror of client_sampling in Envoy https://github.com/envoyproxy/envoy/blob/v1.22.0/api/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.proto#L127-L133'
                        format: int32
                        type: integer
                      overall:
                        description: 'Target percentage of requests will be traced
                          after all other sampling checks have been applied (client,
                          force tracing, random sampling). This field functions as
                          an upper limit on the total configured sampling rate. For
                          instance, setting client_sampling to 100% but overall_sampling
                          to 1% will result in only 1% of client requests with the
                          appropriate headers to be force traced. Default: 100% Mirror
                          of overall_sampling in Envoy https://github.com/envoyproxy/envoy/blob/v1.22.0/api/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.proto#L142-L150'
                        format: int32
                        type: integer
                      random:
                        description: 'Target percentage of requests that will be randomly
                          selected for trace generation, if not requested by the client
                          or not forced. Default: 100% Mirror of random_sampling in
                          Envoy https://github.com/envoyproxy/envoy/blob/v1.22.0/api/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.proto#L135-L140'
                        format: int32
                        type: integer
                    type: object
                  tags:
                    description: Custom tags configuration. You can add custom tags
                      to traces based on headers or literal values.
                    items:
                      description: Custom tags configuration. Only one of literal
                        or header can be used.
                      properties:
                        header:
                          description: Tag taken from a header.
                          properties:
                            default:
                              description: Default value to use if header is missing.
                                If the default is missing and there is no value the
                                tag will not be included.
                              type: string
                            name:
                              description: Name of the header.
                              type: string
                          type: object
                        literal:
                          description: Tag taken from literal value.
                          type: string
                        name:
                          description: Name of the tag.
                          type: string
                      type: object
                    nullable: true
                    type: array
                type: object
              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
            type: object
        type: object
    served: true
    storage: true
