---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.19.0
  name: traefikservices.traefik.containo.us
spec:
  group: traefik.containo.us
  names:
    kind: TraefikService
    listKind: TraefikServiceList
    plural: traefikservices
    singular: traefikservice
  scope: Namespaced
  versions:
  - name: v1alpha1
    schema:
      openAPIV3Schema:
        description: |-
          TraefikService is the CRD implementation of a Traefik Service.
          TraefikService object allows to:
          - Apply weight to Services on load-balancing
          - Mirror traffic on services
          More info: https://doc.traefik.io/traefik/v2.11/routing/providers/kubernetes-crd/#kind-traefikservice
        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: TraefikServiceSpec defines the desired state of a TraefikService.
            properties:
              mirroring:
                description: Mirroring defines the Mirroring service configuration.
                properties:
                  kind:
                    description: Kind defines the kind of the Service.
                    enum:
                    - Service
                    - TraefikService
                    type: string
                  maxBodySize:
                    description: |-
                      MaxBodySize defines the maximum size allowed for the body of the request.
                      If the body is larger, the request is not mirrored.
                      Default value is -1, which means unlimited size.
                    format: int64
                    type: integer
                  mirrors:
                    description: Mirrors defines the list of mirrors where Traefik
                      will duplicate the traffic.
                    items:
                      description: MirrorService holds the mirror configuration.
                      properties:
                        kind:
                          description: Kind defines the kind of the Service.
                          enum:
                          - Service
                          - TraefikService
                          type: string
                        name:
                          description: |-
                            Name defines the name of the referenced Kubernetes Service or TraefikService.
                            The differentiation between the two is specified in the Kind field.
                          type: string
                        namespace:
                          description: Namespace defines the namespace of the referenced
                            Kubernetes Service or TraefikService.
                          type: string
                        nativeLB:
                          description: |-
                            NativeLB controls, when creating the load-balancer,
                            whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP.
                            The Kubernetes Service itself does load-balance to the pods.
                            By default, NativeLB is false.
                          type: boolean
                        passHostHeader:
                          description: |-
                            PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service.
                            By default, passHostHeader is true.
                          type: boolean
                        percent:
                          description: |-
                            Percent defines the part of the traffic to mirror.
                            Supported values: 0 to 100.
                          type: integer
                        port:
                          anyOf:
                          - type: integer
                          - type: string
                          description: |-
                            Port defines the port of a Kubernetes Service.
                            This can be a reference to a named port.
                          x-kubernetes-int-or-string: true
                        responseForwarding:
                          description: ResponseForwarding defines how Traefik forwards
                            the response from the upstream Kubernetes Service to the
                            client.
                          properties:
                            flushInterval:
                              description: |-
                                FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body.
                                A negative value means to flush immediately after each write to the client.
                                This configuration is ignored when ReverseProxy recognizes a response as a streaming response;
                                for such responses, writes are flushed to the client immediately.
                                Default: 100ms
                              type: string
                          type: object
                        scheme:
                          description: |-
                            Scheme defines the scheme to use for the request to the upstream Kubernetes Service.
                            It defaults to https when Kubernetes Service port is 443, http otherwise.
                          type: string
                        serversTransport:
                          description: |-
                            ServersTransport defines the name of ServersTransport resource to use.
                            It allows to configure the transport between Traefik and your servers.
                            Can only be used on a Kubernetes Service.
                          type: string
                        sticky:
                          description: |-
                            Sticky defines the sticky sessions configuration.
                            More info: https://doc.traefik.io/traefik/v2.11/routing/services/#sticky-sessions
                          properties:
                            cookie:
                              description: Cookie defines the sticky cookie configuration.
                              properties:
                                httpOnly:
                                  description: HTTPOnly defines whether the cookie
                                    can be accessed by client-side APIs, such as JavaScript.
                                  type: boolean
                                name:
                                  description: Name defines the Cookie name.
                                  type: string
                                sameSite:
                                  description: |-
                                    SameSite defines the same site policy.
                                    More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
                                  type: string
                                secure:
                                  description: Secure defines whether the cookie can
                                    only be transmitted over an encrypted connection
                                    (i.e. HTTPS).
                                  type: boolean
                              type: object
                          type: object
                        strategy:
                          description: |-
                            Strategy defines the load balancing strategy between the servers.
                            RoundRobin is the only supported value at the moment.
                          type: string
                        weight:
                          description: |-
                            Weight defines the weight and should only be specified when Name references a TraefikService object
                            (and to be precise, one that embeds a Weighted Round Robin).
                          type: integer
                      required:
                      - name
                      type: object
                    type: array
                  name:
                    description: |-
                      Name defines the name of the referenced Kubernetes Service or TraefikService.
                      The differentiation between the two is specified in the Kind field.
                    type: string
                  namespace:
                    description: Namespace defines the namespace of the referenced
                      Kubernetes Service or TraefikService.
                    type: string
                  nativeLB:
                    description: |-
                      NativeLB controls, when creating the load-balancer,
                      whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP.
                      The Kubernetes Service itself does load-balance to the pods.
                      By default, NativeLB is false.
                    type: boolean
                  passHostHeader:
                    description: |-
                      PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service.
                      By default, passHostHeader is true.
                    type: boolean
                  port:
                    anyOf:
                    - type: integer
                    - type: string
                    description: |-
                      Port defines the port of a Kubernetes Service.
                      This can be a reference to a named port.
                    x-kubernetes-int-or-string: true
                  responseForwarding:
                    description: ResponseForwarding defines how Traefik forwards the
                      response from the upstream Kubernetes Service to the client.
                    properties:
                      flushInterval:
                        description: |-
                          FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body.
                          A negative value means to flush immediately after each write to the client.
                          This configuration is ignored when ReverseProxy recognizes a response as a streaming response;
                          for such responses, writes are flushed to the client immediately.
                          Default: 100ms
                        type: string
                    type: object
                  scheme:
                    description: |-
                      Scheme defines the scheme to use for the request to the upstream Kubernetes Service.
                      It defaults to https when Kubernetes Service port is 443, http otherwise.
                    type: string
                  serversTransport:
                    description: |-
                      ServersTransport defines the name of ServersTransport resource to use.
                      It allows to configure the transport between Traefik and your servers.
                      Can only be used on a Kubernetes Service.
                    type: string
                  sticky:
                    description: |-
                      Sticky defines the sticky sessions configuration.
                      More info: https://doc.traefik.io/traefik/v2.11/routing/services/#sticky-sessions
                    properties:
                      cookie:
                        description: Cookie defines the sticky cookie configuration.
                        properties:
                          httpOnly:
                            description: HTTPOnly defines whether the cookie can be
                              accessed by client-side APIs, such as JavaScript.
                            type: boolean
                          name:
                            description: Name defines the Cookie name.
                            type: string
                          sameSite:
                            description: |-
                              SameSite defines the same site policy.
                              More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
                            type: string
                          secure:
                            description: Secure defines whether the cookie can only
                              be transmitted over an encrypted connection (i.e. HTTPS).
                            type: boolean
                        type: object
                    type: object
                  strategy:
                    description: |-
                      Strategy defines the load balancing strategy between the servers.
                      RoundRobin is the only supported value at the moment.
                    type: string
                  weight:
                    description: |-
                      Weight defines the weight and should only be specified when Name references a TraefikService object
                      (and to be precise, one that embeds a Weighted Round Robin).
                    type: integer
                required:
                - name
                type: object
              weighted:
                description: Weighted defines the Weighted Round Robin configuration.
                properties:
                  services:
                    description: Services defines the list of Kubernetes Service and/or
                      TraefikService to load-balance, with weight.
                    items:
                      description: Service defines an upstream HTTP service to proxy
                        traffic to.
                      properties:
                        kind:
                          description: Kind defines the kind of the Service.
                          enum:
                          - Service
                          - TraefikService
                          type: string
                        name:
                          description: |-
                            Name defines the name of the referenced Kubernetes Service or TraefikService.
                            The differentiation between the two is specified in the Kind field.
                          type: string
                        namespace:
                          description: Namespace defines the namespace of the referenced
                            Kubernetes Service or TraefikService.
                          type: string
                        nativeLB:
                          description: |-
                            NativeLB controls, when creating the load-balancer,
                            whether the LB's children are directly the pods IPs or if the only child is the Kubernetes Service clusterIP.
                            The Kubernetes Service itself does load-balance to the pods.
                            By default, NativeLB is false.
                          type: boolean
                        passHostHeader:
                          description: |-
                            PassHostHeader defines whether the client Host header is forwarded to the upstream Kubernetes Service.
                            By default, passHostHeader is true.
                          type: boolean
                        port:
                          anyOf:
                          - type: integer
                          - type: string
                          description: |-
                            Port defines the port of a Kubernetes Service.
                            This can be a reference to a named port.
                          x-kubernetes-int-or-string: true
                        responseForwarding:
                          description: ResponseForwarding defines how Traefik forwards
                            the response from the upstream Kubernetes Service to the
                            client.
                          properties:
                            flushInterval:
                              description: |-
                                FlushInterval defines the interval, in milliseconds, in between flushes to the client while copying the response body.
                                A negative value means to flush immediately after each write to the client.
                                This configuration is ignored when ReverseProxy recognizes a response as a streaming response;
                                for such responses, writes are flushed to the client immediately.
                                Default: 100ms
                              type: string
                          type: object
                        scheme:
                          description: |-
                            Scheme defines the scheme to use for the request to the upstream Kubernetes Service.
                            It defaults to https when Kubernetes Service port is 443, http otherwise.
                          type: string
                        serversTransport:
                          description: |-
                            ServersTransport defines the name of ServersTransport resource to use.
                            It allows to configure the transport between Traefik and your servers.
                            Can only be used on a Kubernetes Service.
                          type: string
                        sticky:
                          description: |-
                            Sticky defines the sticky sessions configuration.
                            More info: https://doc.traefik.io/traefik/v2.11/routing/services/#sticky-sessions
                          properties:
                            cookie:
                              description: Cookie defines the sticky cookie configuration.
                              properties:
                                httpOnly:
                                  description: HTTPOnly defines whether the cookie
                                    can be accessed by client-side APIs, such as JavaScript.
                                  type: boolean
                                name:
                                  description: Name defines the Cookie name.
                                  type: string
                                sameSite:
                                  description: |-
                                    SameSite defines the same site policy.
                                    More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
                                  type: string
                                secure:
                                  description: Secure defines whether the cookie can
                                    only be transmitted over an encrypted connection
                                    (i.e. HTTPS).
                                  type: boolean
                              type: object
                          type: object
                        strategy:
                          description: |-
                            Strategy defines the load balancing strategy between the servers.
                            RoundRobin is the only supported value at the moment.
                          type: string
                        weight:
                          description: |-
                            Weight defines the weight and should only be specified when Name references a TraefikService object
                            (and to be precise, one that embeds a Weighted Round Robin).
                          type: integer
                      required:
                      - name
                      type: object
                    type: array
                  sticky:
                    description: |-
                      Sticky defines whether sticky sessions are enabled.
                      More info: https://doc.traefik.io/traefik/v2.11/routing/providers/kubernetes-crd/#stickiness-and-load-balancing
                    properties:
                      cookie:
                        description: Cookie defines the sticky cookie configuration.
                        properties:
                          httpOnly:
                            description: HTTPOnly defines whether the cookie can be
                              accessed by client-side APIs, such as JavaScript.
                            type: boolean
                          name:
                            description: Name defines the Cookie name.
                            type: string
                          sameSite:
                            description: |-
                              SameSite defines the same site policy.
                              More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite
                            type: string
                          secure:
                            description: Secure defines whether the cookie can only
                              be transmitted over an encrypted connection (i.e. HTTPS).
                            type: boolean
                        type: object
                    type: object
                type: object
            type: object
        required:
        - metadata
        - spec
        type: object
    served: true
    storage: true
